pyspark groupby使用String groupby键

时间:2019-11-11 22:27:22

标签: sql pyspark

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

1 个答案:

答案 0 :(得分:0)

我发现问题出在保存到CSV时,而忽略了空格。 添加以下选项有助于解决该问题。

 .option("ignoreLeadingWhiteSpace", "false")\
 .option("ignoreTrailingWhiteSpace", "false")