【发布时间】:2017-03-01 11:24:34
【问题描述】:
我有以下两个 JSON 文件:
{
"name" : "Agent1",
"age" : "32",
"details" : [{
"d1" : 1,
"d2" : 2
}
]
}
{
"name" : "Agent2",
"age" : "42",
"details" : []
}
我用火花读过它们:
val jsonDf1 = spark.read.json(pathToJson1)
val jsonDf2 = spark.read.json(pathToJson2)
使用以下架构创建两个数据框:
root
|-- age: string (nullable = true)
|-- details: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- d1: long (nullable = true)
| | |-- d2: long (nullable = true)
|-- name: string (nullable = true)
root
|-- age: string (nullable = true)
|-- details: array (nullable = true)
| |-- element: string (containsNull = true)
|-- name: string (nullable = true)
当我尝试对这两个数据框执行联合时,我收到此错误:
jsonDf1.union(jsonDf2)
org.apache.spark.sql.AnalysisException: unresolved operator 'Union;;
'Union
:- LogicalRDD [age#0, details#1, name#2]
+- LogicalRDD [age#7, details#8, name#9]
我该如何解决这个问题?我有时会在 Spark 作业将加载的 JSON 文件中得到空数组,但它仍然必须统一它们,这应该不是问题,因为 Json 文件的架构是相同的。
【问题讨论】:
标签: scala apache-spark union spark-dataframe