数据框中的每一行都包含一个csv格式的字符串line
加上另一个简单的字符串,所以我最后想要得到的是一个由{{1}提取的字段组成的数据框。 }字符串和line
。
所以我按照以下步骤来爆炸category
字符串
line
最后,我设法获得一个由行字段组成的新数据框,但我无法将val df = stream.toDF("line","category")
.map(x => x.getString(0))......
返回到新数据框
我无法使用初始数据框加入新数据框,因为公共字段category
最初不是单独的列。
输入样本:
id
输出样本:
line | category
"'1';'daniel';'dan@gmail.com'" | "premium"
任何建议,提前谢谢。
答案 0 :(得分:2)
如果问题中提到的nn.Maxpool2d
列中的字符串结构是固定的,那么在使用line
内置函数将字符串拆分为数组然后最终选择数组和别名中的元素以获取最终的数据帧
split
应该给你
import org.apache.spark.sql.functions._
df.withColumn("line", split(col("line"), ";"))
.select(col("line")(0).as("id"), col("line")(1).as("name"), col("line")(2).as("email"), col("category"))
.show(false)
我希望答案很有帮助