我有模式:
| |——costCentres:結構(可空= true) | | |——dimension1:結構(可空= true) | | | | -名稱:字符串(nullable = true) | | | |——價值:字符串(nullable = true) | | |——dimension10:結構(可空= true) | | | | -名稱:字符串(nullable = true) | | | |——價值:字符串(nullable = true)
當我使用dataframe選擇並保存:
df = df_positions。selectExpr (“positions.costCentres.dimension1。值作為u_kb01”、“positions.costCentres.dimension10。值作為u_kb10”、“positions.costCentres.dimension2。值作為u_kb02”、“positions.costCentres.dimension3。值作為u_kb03”、“positions.costCentres.dimension4。值作為u_kb04”、“positions.costCentres.dimension5。值作為u_kb05”、“positions.costCentres.dimension6。值作為u_kb06”、“positions.costCentres.dimension7。值作為u_kb07”、“positions.costCentres.dimension8。值作為u_kb08”、“positions.costCentres.dimension9。值作為u_kb09”) .distinct ()df.write.saveAsTable("test_costcenters") df.write.save("/temp/test_costcenters")
我得到所需結果,我很高興。
當我在三角洲做同樣的生活表:
def gold_costcenter():返回df_positions。selectExpr (“positions.costCentres.dimension1。值作為u_kb01”、“positions.costCentres.dimension10。值作為u_kb10”、“positions.costCentres.dimension2。值作為u_kb02”、“positions.costCentres.dimension3。值作為u_kb03”、“positions.costCentres.dimension4。值作為u_kb04”、“positions.costCentres.dimension5。值作為u_kb05”、“positions.costCentres.dimension6。值作為u_kb06”、“positions.costCentres.dimension7。值作為u_kb07”、“positions.costCentres.dimension8。值作為u_kb08”、“positions.costCentres.dimension9。值作為u_kb09”) .distinct ()
我得到一個錯誤:
org.apache.spark.sql。AnalysisException:模棱兩可的引用字段StructField(價值,StringType,真的),StructField(價值,StringType,真的),StructField(價值,StringType,真的),StructField(價值,StringType,真的),StructField(價值,StringType,真的),StructField(價值,StringType,真的),StructField(價值,StringType,真的),StructField(價值,StringType,真的),StructField(價值,StringType,真的),StructField(價值,StringType,真的)org.apache.spark.sql.errors.QueryCompilationErrors .ambiguousReferenceToFieldsError美元(QueryCompilationErrors.scala: 1587)
為什麼? ? ?以及如何解決這個問題?