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

时间:2016-09-22 08:45:49

标签: 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%'");

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

1 个答案:

答案 0 :(得分:2)

您可以应用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)

它将返回逗号单独的数组值