优化Spark中的分区数据

时间:2018-04-26 14:50:44

标签: scala apache-spark

我正在阅读一堆看起来像这样的日志:

id type amt
 0    A 100
 1    B 200
 2    A 100
 3    A 300
 4    B 100
 5    A 100
 6    C 200
 7    C 100
 8    A 200

我想按类型对这些数据进行分区,因此A,B和C类型中的每一种都在自己的机器上。问题是分区步骤对于我的数据大小来说太慢了。数据以行格式呈现给我,所以我在每行读取,并解析它以获取类型等。有没有办法通过动态分区作为解析步骤的一部分来加速提取和分区?如果我想要做的就是提取数据,并将其写入磁盘分区,只是寻找有关如何加快速度的想法。我正在使用scala。

1 个答案:

答案 0 :(得分:0)

如果您分享代码以了解您是如何做的话可以提供帮助 编写由字段分区的文件的最简单方法是将输入更改为数据集,然后:

result.repartition($"type").write.save(/.../path)

如果要放入带有分区列的hive表,请尝试:

result.repartition($"type").partitionBy("type").write.save(/.../path_to_table)

它会给出一个像/ user / hive / warehouse / table_name / type = A / part - ***

这样的路径