【问题标题】:Reading files which are written using PartitionBy or BucketBy in Spark在 Spark 中读取使用 PartitionBy 或 BucketBy 写入的文件
【发布时间】:2020-01-04 16:43:25
【问题描述】:

在 Spark 中,当我们读取使用 partitionBy 或 bucketBy 写入的文件时,spark 如何识别它们属于这种类型(partitionBy/bucketBy),从而使读取操作变得高效? 有人可以解释一下。提前致谢!

【问题讨论】:

  • 分区仅由子目录/year=2020/month=01/ 标识,并在扫描文件夹结构时发现。桶是分区下的集群,请参阅pruning buckets 了解 Spark 如何发现分桶列。

标签: apache-spark partition-by


【解决方案1】:

两种不同的东西。这里https://mapr.com/blog/tips-and-best-practices-to-take-advantage-of-spark-2-x/ 是可怜的小mapR 的精彩摘录,让我们希望HP 有所作为。阅读本文将为您提供整个上下文。顺便说一句,读起来很棒。

现实中的两种不同的东西:

  • 当存在 partition 过滤器时,Catalyst 优化器下推来自给定查询的分区过滤器。扫描只读 匹配分区过滤器的目录,从而减少磁盘 输入/输出。与查询相关的性能改进,秒。

  • Bucketing 是另一种数据组织技术,它将具有相同存储桶值的数据分组到固定数量的“存储桶”中。这 可以通过以下方式提高范围的转换和连接的性能 避免“洗牌”。

【讨论】:

  • 从博客中了解也很有用,在 Bucketing Tips 下的 Parquet 文件部分:“分区只能用于具有有限数量值的列;当唯一值的数量很大。经常在查询中使用并提供高选择性的列是分桶的好选择。“虽然这在表面上似乎在写入而不是读取时值得关注,但如果发现读取需要很长时间,这些是值得关注的。
猜你喜欢
  • 2021-08-08
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 2020-05-02
  • 2023-04-09
  • 1970-01-01
  • 2018-09-03
  • 2018-02-07
相关资源
最近更新 更多