我已经尝试过该查询以从linkedin数据中获得所需的经验。



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


但是我得到了这个错误:



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

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)


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

07-24 18:57