在Spark Scala中拆分字符串并转换为JSON数组

时间:2019-12-26 03:01:58

标签: regex scala apache-spark

我有一个字符串

shirt|~*~|trouser|~*~|t-Shirt|~*~|towels|~*~|

我正在尝试将其用'|〜*〜|'分割并以JSON String形式获取结果,这是Dataframe中的一列

有人可以帮助我吗?

~~更新~~

不确定为什么我的问题被关闭,但这是解决方案

import org.apache.spark.sql.functions.udf
import org.json4s.DefaultFormats
import org.json4s.jackson.Serialization.write

  implicit val formats = DefaultFormats

  def removeLastItem = udf((xs: Seq[String]) => xs.dropRight(1))

  def convert2JSON = udf((ls: Seq[String]) => write(Map("list" -> ls)))

df = df.withColumn(
    "str1",
        convert2JSON(removeLastItem(split(col("str"), "(\\b\\|~\\*~\\|)")))

)

最终输出

{"list":["shirt","trouser","t-Shirt","towels"]}

0 个答案:

没有答案