Spark中的进程文件

时间:2017-02-23 08:31:45

标签: apache-spark pyspark chunks

我想处理数据块(来自csv文件),然后在每个分区/块中进行一些分析。 我该如何做,然后以并行方式处理这些多个块?我想在每个块上运行map和reduce

1 个答案:

答案 0 :(得分:0)

我认为你不能只阅读文件的一部分。另外,我不太确定我是否理解你的意图,或者你是否理解了Spark的概念。

如果您阅读文件并在map / Dataset上应用RDD功能,Spark会自动并行处理您的数据功能。 也就是说,群集中的每个工作人员都将被分配到您的数据分区,即将处理" n%"的数据。分区器决定哪个数据项位于同一分区中。默认情况下,Spark使用哈希分区程序。

map的替代方案,您可以申请mapParititions

以下是我想到的一些想法:

  • 使用partitionBy方法对数据进行分区,并创建自己的分区程序。例如,此分区程序可以将第一个n行放入分区1,将下一个n行放入分区2,等等。

  • 如果您的数据足够小以适应驱动程序,您可以将整个文件collect读入数组,并跳过所需的行数(在第一次运行中,没有行) (已跳过),接下来的n行,然后再次创建这些行的RDD。

  • 您可以预处理数据,以某种方式创建分区,即包含n%,然后再次存储它。这将在您的磁盘/ HDFS上创建不同的文件:part-00000part-00001等。然后在您的实际程序中,您可以一个接一个地读取所需的零件文件......