java - javardd中如何通过header进行过滤?
问题描述
我正在编写一个JavaRDD
代码,我必须将 csv 上传到JavaRDD
命名的RestaurantDetailRDD
. 有RestaurantDetailRDD
一个地址列,必须过滤到另一个RDD
名为addressRDD
. 我只需要过滤条件,我可以按 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 函数。
推荐阅读
- django - 是否可以像模型一样将视图注册到 django 管理控制台?
- javascript - 使用过渡动画从待办事项列表中添加/删除项目
- vb.net - 用户保存约会后的操作
- excel - 如何计算每头奶牛 7 天的移动平均产奶量,日期未排序。Excel
- python - 在导入前解析 django-import-export 中的字段
- java - 我的 for 循环在我的 while 循环完成后中断,它应该重申
- html - 一旦我添加了一些其他段落或标题,我的段落字体大小就会改变
- laravel - 路由存在时出现 404 not found 错误
- typescript - 与 --build 开关一起使用时,tsc typescript 3.5 中的未知构建选项“-p”
- android - 如何在带有 kotlin 的 android 应用程序中有效地使用 ParsePlatform?