【问题标题】:best way to preprocess the data预处理数据的最佳方法
【发布时间】:2020-05-20 20:00:48
【问题描述】:

我有以下架构的数据

person_id | category_id | date | type

每天收集的数据量巨大,平均接近 95GB。 我的用例是在提供的日期范围内获取给定 category_id 的所有 person_ids。 这存在于 csv 文件中的 hdfs 上。 使用 spark 处理 3 周时,实际转储运行需要半小时。 如何对其进行预处理以提高火花作业的性能? 我尝试按日期分组,但没有太大帮助。

【问题讨论】:

  • 您可以更改输入文件格式吗?顺便说一句,您可以在按年/月/日/category_id/csvfilehere 分区的 hdfs 上写入 csv

标签: apache-spark apache-spark-sql apache-spark-dataset


【解决方案1】:

您可以先执行以下操作(因为我们没有关于您的数据或集群的详细信息。分享您的 Spark Web UI 屏幕截图)

  • 预处理数据并将其保存为高效的二进制格式,如 Parquet(或 Avro)
  • dateperson_id 分区
  • 查看是否有散乱的任务(数据倾斜)
  • 使用高效的序列化格式 (Kryo) 并压缩以减少 shuffle 大小(如果 shuffle 会消耗大量处理时间)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    相关资源
    最近更新 更多