如何在spark scala中将(a1 | a2 | a3 b1 | b2 | b3)更改为((a1,a2,a3)、(b1,b2,b3))

2cmtqfgy  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(327)

在spark scala中将(a1 | a2 | a3 b1 | b2 | b3)转换为((a1,a2,a3),(b1,b2,b3))。

kyxcudwk

kyxcudwk1#

把你的线分开形成一个序列
将序列转换为Dataframe
用适当的前缀追加字符串 ( 和后缀 ) Map行=>字符串
将Dataframe收集为列表
将列表与 , 和前缀 ( 和后缀 ) ```
import org.apache.spark.sql.functions._

object ParseAString {

def main(args: Array[String]): Unit = {
val spark = Constant.getSparkSess
import spark.implicits._
val inputStr = "a1|a2|a3 b1|b2|b3".split(" ").toSeq.toDF

val result = inputStr
  .select( concat(lit("("),regexp_replace($"value","\\|",","),lit(")") ) )
  .map(row => {
    row.getString(0)
  })
  .collect().mkString(",")
println(s"(${result})")

}

}

相关问题