Spark 2.0:将 Spark 数据帧中的管道数据平展为单独的行



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

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

我需要将其存储在 RDMBS 中,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)

这可能吗?

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|
+---+---+---+

最新更新