我正在编写一个 JavaRDD
代码,我必须将 csv 上传到名为 RestaurantDetailRDD
的 JavaRDD
中。 RestaurantDetailRDD
有一个地址列,必须将其过滤到另一个名为 addressRDD
的 RDD
中。我只需要过滤条件,可以通过 csv 中提供的标题拆分地址列。
// provide path to input text file
String path = "/home/lingesh/Downloads/newitems.csv";
// read text file to RDD
JavaRDD<String> restaurantDetailRDD = sc.textFile(path);
// collect RDD for printing
for(String line:restaurantDetailRDD.collect()){
System.out.println(line);
}
如您所见,我刚刚创建了 RestaurantDetailRDD
我希望地址列放置在不同的RDD
最佳答案
如果您知道address
列的位置,则只需执行map
函数即可将RDD转换为另一个RDD。
JavaRDD<String> columnRdd = rdd.map(f -> {
String[] arr = f.split(",");
return arr[position];
});
System.out.println("new count " + columnRdd.count());
这种方式更好,因为您使用的是 Spark 函数,这意味着您可以处理 Spark 分区并使计算速度更快。在您确实需要打印结果进行测试之前,不要尝试使用基本的 java 函数。
关于java - javardd中如何通过header进行过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125232/