我有一个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|
+---+---+---+