java - 如何在spark sql中将json数组<String>转换为csv

标签 java apache-spark apache-spark-sql bigdata

我尝试过此查询以从 linkedin 数据中获取所需的经验。

click here for my data

 Dataset<Row> filteredData = spark
                    .sql("select full_name ,experience from (select *, explode(experience['title']) exp from tempTable )"
                            + "  a where lower(exp) like '%developer%'");

但是我收到了这个错误:

click here for error I got

最后我尝试了,但我得到了更多同名的行。

Dataset<Row> filteredData = spark
                    .sql("select full_name ,explode(experience) from (select *, explode(experience['title']) exp from tempTable )"
                            + "  a where lower(exp) like '%developer%'");

请给我提示,如何将同一列中的字符串数组转换为逗号分隔的字符串。

最佳答案

您可以应用UDF来制作逗号分隔的字符串

像这样创建UDF

def mkString(value: WrappedArray[String]): String = value.mkString(",")

在sparkSQL上下文中注册UDF

sqlContext.udf.register("mkstring", mkString _)

将其应用于SparkSQL查询

sqlContext.sql(select mkstring(columnName) from tableName)

它将返回数组的逗号分隔值

关于java - 如何在spark sql中将json数组<String>转换为csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39634284/

相关文章:

java - DecimalFormat 模式

amazon-web-services - AWS Glue 中 1 个 DPU 的最大并发任务数

scala - 使用 hadoop IncompatibleClassChangeError 在 EC2 上运行 spark 应用程序失败

dataframe - Pyspark - 在右侧数据集中加入空值

python - 如何在 Spark SQL 中压缩两个数组列

java - 二进制到浮点或 double 赋值错误

java - java数据库中静态方法和单例的替代解决方案

关于时钟的javascript和java

python - Spark SQL 性能 - 在最小值和最大值之间加入值

scala - 流静态加入 : How to refresh (unpersist/persist) static Dataframe periodically