【问题标题】:Spark 2.0: Flatten Piped data in Spark Dataframe into individual rows [duplicate]Spark 2.0:将 Spark Dataframe 中的管道数据展平为单独的行 [重复]
【发布时间】:2018-05-25 15:43:52
【问题描述】:

我有一个 DF,比如说 10 列,其中一列有字符串数据,以 Pipe 作为分隔符。

+-------------+
|offer_ids    |
+-------------+
|9|10|11|12|  |
+-------------+

我需要将它存储在 RDMBS 中,它有一个 INT 列,并且上述每个值 (|9|10|11|12|) 将是一个单独的记录,DF 中的所有其他列保持不变.

例如。中的最后陈述,

 inputDF.write.mode(SaveMode.Append).jdbc

应该是,

insert into <table name> values (<values for other columns>, 9)
insert into <table name> values (<values for other columns>, 10)
insert into <table name> values (<values for other columns>, 11)
insert into <table name> values (<values for other columns>, 12)

这可能吗?

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    explode() 函数可用于:

    val df = spark.createDataFrame(List(("a", "b", 1, 2, 3) )).toDF("a", "b", "d1", "d2", "d3")
    df.selectExpr("a", "b", "explode(array(d1,d2,d3))").show
    
    +---+---+---+
    |  a|  b|col|
    +---+---+---+
    |  a|  b|  1|
    |  a|  b|  2|
    |  a|  b|  3|
    +---+---+---+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2017-07-28
      • 2018-09-29
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      相关资源
      最近更新 更多