【问题标题】:Local spark and parquet files本地火花和镶木地板文件
【发布时间】:2016-01-18 21:44:58
【问题描述】:

我有个别交易的交易信息(例如客户代码、产品、产品组、价格等)

我现在将这个分区在每个 year_month 的 parquet 文件中

这在报告产品组等的聚合等时非常有效。

但是,如果我想跨月检索特定客户的信息,这不是非常有效/快速。

我尝试按 year_month 和 customer_code 进行分区,但是由于每个分区现在都是一个客户代码,其中包含一行数据,所以磁盘 i/o 很多。

有没有办法提高性能,假设在一个分区中固定 10000 个客户?或者如果 parquet 文件大小为 64Mb 或类似的大小,则说分区到下一个组。

根据 Spark 中的逻辑,它在 parquet 文件中具有每个属性的最小最大值,我希望性能能够提高,但我对 spark/parquet 太陌生,无法真正理解这是否是一个正确的想法,以及它在技术上是否可行. (当然我可以自己创建客户代码组并在查询中使用它,但我希望更自动化的东西是可能的)。

谢谢,

G.

【问题讨论】:

  • 如何将您的数据放入 cassandra 并在其中进行分区但使用索引。它会让你随机搜索每个分区的客户更快吗?我知道这不是一个答案,但我之前基本上经历过类似的情况并使用过 cassandra 但我不确定如果我使用镶木地板会发生什么!

标签: apache-spark parquet


【解决方案1】:

如果您按客户代码对每个文件中的数据进行排序,并将 Spark 配置为使用 parquet 谓词下推(默认启用),那么按客户代码进行全面扫描会更快。

内部 parquet 文件存储每个页面和块的列最小值/最大值。按值过滤可以有效地跳过基于此统计信息的阅读页面和块。

【讨论】:

    猜你喜欢
    • 2020-01-10
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 2017-03-17
    • 2019-02-11
    • 2019-02-19
    相关资源
    最近更新 更多