pyspark groupby操作不会为大型数据集生成唯一的组密钥。
我在最终输出中看到重复的按键。
new_df = df.select('key','value') \
.where(...) \
.groupBy('key') \
.count()
例如上面的查询为groupBy列(键)返回多行。 groupby列(“键”)的数据类型为字符串。
我正在通过CSV存储输出
new_df.write.format("csv") \
.option("header", "true") \
.mode("Overwrite") \
.save(CSV_LOCAL_PATH)
例如CSV输出中有重复的行
key1, 10
key2, 20
key1, 05
在Spark 2.4.3和2.3中测试 有重复项。按键没有区别。多个KEY会发生这种情况。
当我计算特定键的行数时,它为1。
new_df.select('key','total')\
.where((col("key") == "key1"))\
.count()
我不确定pyarrow设置是否有所不同。我以前启用过。我尝试启用和禁用pyarrow,但结果相同。
spark.conf.set(“ spark.sql.execution.arrow.enabled”,“ true”)
答案 0 :(得分:0)
我发现问题出在保存到CSV时,而忽略了空格。 添加以下选项有助于解决该问题。
.option("ignoreLeadingWhiteSpace", "false")\
.option("ignoreTrailingWhiteSpace", "false")