我有一个要以其为中心的spark数据帧,它有两个相同但在不同情况下的值——下面示例中的test
和Test
。考虑以下示例:
df = spark.createDataFrame([["R","test",1],["R","Test",2]], ["A", "B", "C"])
df.show()
df2 = df.groupby('A').pivot('B').max('C').fillna(0).cache()
df2.show()
我期望以下输出
+---+----+---+
| A| B| C|
+---+----+---+
| R|test| 1|
| R|Test| 2|
+---+----+---+
+---+----+----+
| A|Test|test|
+---+----+----+
| R| 2| 1|
+---+----+----+
但是,却抛出了以下异常:
org.apache.spark.sql.AnalysisException: Reference 'Test' is ambiguous, could be: Test, Test.
在这种不同的情况下,如何在具有相同值的列上进行透视?
设置此属性:
spark.sql('set spark.sql.caseSensitive=true')
然后能够从数据帧中选择ambiguous
列:
df.groupby('A').pivot('B').max('C').fillna(0).show()
#+---+----+----+
#| A|Test|test|
#+---+----+----+
#| R| 2| 1|
#+---+----+----+