预处理数据的最佳方法

时间:2020-05-20 20:00:48

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

我有以下模式的数据

person_id | category_id | date | type

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

1 个答案:

答案 0 :(得分:0)

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

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