我试图在嵌套字段上调用partitionBy,如下所示:
val rawJson = sqlContext.read.json(filename)
rawJson.write.partitionBy("data.dataDetails.name").parquet(filenameParquet)
我运行时遇到以下错误 . 我确实看到“名称”列为以下架构中的字段 . 是否有不同的格式来指定嵌套的列名?
java.lang.RuntimeException:在模式StructType中找不到分区列data.dataDetails.name(StructField(name,StringType,true),StructField(time,StringType,true),StructField(data,StructType(StructType)(dataDetails,StructType( StructField(name,StringType,true),StructField(id,StringType,true),true)),true))
这是我的json文件:
{
"name": "AssetName",
"time": "2016-06-20T11:57:19.4941368-04:00",
"data": {
"type": "EventData",
"dataDetails": {
"name": "EventName"
"id": "1234"
}
}
}
1 回答
这似乎是此处列出的已知问题:https://issues.apache.org/jira/browse/SPARK-18084
我也遇到了这个问题,为了解决这个问题,我能够在我的数据集中取消嵌套列 . 我的数据集与您的数据集略有不同,但这是策略......
原Json:
修改Json:
获取修改Json的代码: