预处理数据的最佳方法

问题描述 投票:-1回答:1

我有具有以下架构的数据

person_id | category_id | date | type

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

apache-spark apache-spark-sql apache-spark-dataset
1个回答
-1
投票

您可以从以下步骤开始(因为我们没有关于您的数据或集群的详细信息。请共享您的Spark Web UI屏幕截图)

  • 预处理数据并将其保存为Parquet(或Avro)之类的有效二进制格式
  • dateperson_id分区
  • 查看是否有散乱的任务(数据偏斜)
  • 如果改组消耗大量处理时间,则使用有效的序列化格式(Kryo)并压缩以减小改组大小
© www.soinside.com 2019 - 2024. All rights reserved.