apache-spark - 偏好、存储桶或重新分区是什么?

标签 apache-spark hive apache-spark-sql

我有 2 个 Spark 作业,一个是预处理,第二个是处理。 流程作业需要针对数据中的每个用户进行计算。 我想避免像groupBy这样的shuffle,所以我考虑将预处理的结果保存为Parquet中用户的bucket,或者由用户重新分区并保存结果。

更喜欢什么?以及为什么

最佳答案

可以减少在 partitionBybucketBy 之间的选择以确定数据基数:

  • 低基数 -> 分区
  • 高基数 -> 存储桶

但是两者都不用于聚合。用于谓词下推,仅此而已。因此,当您的目标是避免像 groupBy 这样的随机播放时,它们不会有太大用处,尽管将来可能会随着新 API 的变化而改变。

关于apache-spark - 偏好、存储桶或重新分区是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036486/

相关文章:

arrays - 从配置单元中的非嵌套数据创建嵌套数据

sql - 如何计算 hive 之间的月份?

apache-spark - 在 Spark 中执行 DataFrame 自连接的最简洁、最高效的语法

apache-spark - 通过PySpark在Elasticsearch中插入数组

.net - 如何在没有笔记本的情况下从Azure Databricks Spark集群查询数据?

scala - Spark 斯卡拉 GraphX : Creating a Weighted Directed Graph

apache-spark-sql - 如何在 EMR 上调整 Spark 作业以在 S3 上快速写入大量数据

python - 如何在纯Python中运行spark mllib决策树模型?

hadoop - 从本地存储文件导入数据后,HIVE查询返回空值

apache-spark - PySpark-列中的to_date格式