sql - pyspark groupby 使用 String groupby 键在输出中生成多行
问题描述
pyspark groupby 操作不会为大型数据集生成唯一的组键
我在最终输出中看到重复的键。
new_df = df.select('key','value') \
.where(...) \
.groupBy('key') \
.count()
例如,上面的查询为 groupBy 列(键)返回多行。groupby column('key') 的数据类型是字符串。
我通过做将输出存储在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 中测试有重复。键没有区别。这发生在多个 KEYS 上。
当我计算特定键的行数时,它给出 1。
new_df.select('key','total')\
.where((col("key") == "key1"))\
.count()
我不确定 pyarrow 设置是否有任何区别。我之前启用过。我尝试启用和禁用 pyarrow 但结果相同。
spark.conf.set("spark.sql.execution.arrow.enabled", "true")
解决方案
我发现问题出在保存到忽略空格的 CSV 时。添加以下选项有助于解决它。
.option("ignoreLeadingWhiteSpace", "false")\
.option("ignoreTrailingWhiteSpace", "false")
推荐阅读
- python - Python,从具有相应值的许多 csv 文件中计算平均值/平均值
- javascript - 为什么 html5 视频与 CORS 政策没有问题?
- python - 使用写时复制(COW)在 Python 中复制文件
- sql - 使用 SQLite 触发器增加值的问题
- html - 仅使用两个单词时,CSS连字符在 chrome 中无法正常工作
- vue.js - Vuejs 隐藏/显示元素在路由更改时刷新
- autodesk-forge - 在 Forge Web 应用程序中,尝试从新的 Revit 2021 单元中获取单元的旧简称
- javascript - 从 js 中删除 css 模块对象
- python - 使用 Matplotlib 在顶部较浅的 cmap 颜色上绘制较暗的 cmap 颜色
- zerobrane - ZeroBrane:更改自动完成菜单的颜色...?