gpt4 book ai didi

hadoop - 有多少 Spark JavaRDD 最适合处理数千个文件?

转载 作者:可可西里 更新时间:2023-11-01 14:49:24 26 4
gpt4 key购买 nike

我有数千个文件要处理,它们驻留在 HDFS 中。我有如下所示的工作解决方案,但我想知道想法 RDD 计数的最佳实践。目前我只使用一个 RDD,它指向 HDFS 中的数千个文件。

    //the following line contains comma separated files to process
String fileToProcessList = "/user/server1/server.dat,/user/server2/server2.dat";
JavaRDD<Record> rdd_records = sc.textFile(filetoProcessList).map(
new Function<String, Record>() {
public Record call(String line) throws Exception {
String[] fields = line.split(",");
Record sd = new Record(fields[0], fields[1], fields[2].trim(), fields[3]);
return sd;
}
});

在上述情况下我需要使用更多的 JavaRDD 还是即使有数百万个文件也可以?我注意到的一件事是没有并行性:我看到它按顺序处理文件,即使我在 master yarn 上使用 12 个执行程序也是如此。

最佳答案

RDD 可以看作是指向数据的指针,它允许定义对该数据的操作。这些操作被安排在集群中的执行器上。

给定相同数量的资源(集群大小、内存 - CPU),无论您的 RDD 指向小数据集还是大数据集,只会影响处理数据所需的时间。如果您预见到数据大小会增加,您需要确定:

  • 等待更长的时间等待结果是可以接受的 => 然后什么都不做
  • 分配的时间是固定的 => 然后增加集群资源

简而言之,一个 RDD 定义就可以了。根据结果​​的数据集大小和业务要求调整您的集群资源。

关于hadoop - 有多少 Spark JavaRDD 最适合处理数千个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290763/

26 4 0