【发布时间】:2019-01-15 03:02:12
【问题描述】:
Spark 2.1 版
我正在将文件读入 Spark dataframe,格式如下:
{
"field1": "value1",
"field2": "value2",
"elements": [{
"id": "1",
"name": "a"
},
{
"id": "2",
"name": "b"
},
{
"id": "3",
"name": "c"
}]
}
它包含一个array的嵌套元素,现在我想explodeelements数组来获得扁平的json结构。我正在使用以下代码:
var dfExploded = df
.withColumn("id",
explode(df.col("elements.id")))
.withColumn("name",
explode(df.col("elements.name")));
它似乎正在返回笛卡尔积(例如,我在结果中得到 9 个元素,而我只想要 3 个)。有什么方法可以为explode 函数指定一对嵌套列?
【问题讨论】:
-
也许把 Id + name 变成元组?
标签: scala apache-spark apache-spark-sql