【发布时间】:2015-07-29 05:21:39
【问题描述】:
我有数千个文件要处理,它们驻留在 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 个执行程序,我也看到它按顺序处理文件。
【问题讨论】:
-
HI user449355,只需要1个RDD。当RDD的大小增加时,rdd中的分区数也会增加。
标签: hadoop apache-spark hdfs