python - 当值相同但情况不同时,Spark 数据帧透视失败

标签 python apache-spark pyspark apache-spark-sql

我有一个想要旋转的 Spark 数据框,它有两个相同但情况不同的值 - 下面示例中的 testTest。考虑以下示例:

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')

然后能够从数据框中选择不明确列:

df.groupby('A').pivot('B').max('C').fillna(0).show()
#+---+----+----+
#|  A|Test|test|
#+---+----+----+
#|  R|   2|   1|
#+---+----+----+

关于python - 当值相同但情况不同时,Spark 数据帧透视失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60781966/

相关文章:

python - Pandas Google Datareader 仅返回 1 年的股票数据

python - 如何根据日期列表拆分 pandas 系列

apache-spark - 如何使用 apache Spark 访问从 impala 创建的 apache kudu 表

java - 文件名 openjdk-8-jdk-headless 有问题吗?

python-3.x - 迭代列 PySpark

apache-spark - 如何使用 virtualenv 发送和运行 spark-submit

python - 编码期间出现 UnicodeDecodeError?

python - 为什么 logging.setLevel() 在这里对 Python 没有影响?

hadoop - Apache Hadoop Yarn - 内核利用率不足

apache-spark - 将spark.sql数据帧结果写入parquet文件