【问题标题】:How to convert json array<String> to csv in spark sql如何在 spark sql 中将 json array<String> 转换为 csv
【发布时间】:2017-01-30 18:00:56
【问题描述】:

我已尝试使用此查询从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%'");

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

【问题讨论】:

  • 你能分享更多关于代码和示例数据的信息
  • 其实我是用 spark 写代码
  • 谢谢,但是你可以分享你的json格式的示例代码

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


【解决方案1】:

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

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

【讨论】:

  • 如果列有 的数组,则使用 concat_ws(string delimiter, array) else concat_ws(',',collect_set(cast(date as string)))
  • 谢谢你指导我。 :) 我按照你的建议做了.. :)
  • @AshisParajuli 如果对你有帮助,请接受答案
猜你喜欢
  • 2022-12-17
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 2019-07-03
相关资源
最近更新 更多