【问题标题】:How to perform filter in javardd by header?javardd中如何通过header进行过滤?
【发布时间】:2019-11-29 04:51:31
【问题描述】:

我正在处理 JavaRDD 代码,我必须将 csv 上传到名为 RestaurantDetailRDDJavaRDD 中。 RestaurantDetailRDD 有一个地址列,必须过滤到另一个名为 addressRDDRDD。我只需要过滤条件,我可以按 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

【问题讨论】:

  • 你有没有尝试过?另外,你能解释一下“有一个必须过滤到另一个RDD的地址列”是什么意思吗?最后,您能否提供一些示例输入和预期输出?
  • 这个问题你解决了吗?
  • 另一种解决方案可以将 java rdd 转换为数据集,然后获取您要使用的列。
  • crawlingpage_address,crawlingpage_name,crawlingpage_ratings,crawlingpage_reviews "411 Main Street, Pleasanton, CA, United States",1. Frontier Spice Indian Restaurant And Catering,5/5,” (, - 7 条评论) " "6167 Jarvis Ave, Newark, CA, USA",2. Oasis Palace Restaurant,4/5,”(, - 1 条评论)““856 W El Camino Real, Mountain View, CA, United States”,3. Chennai Kings,5/5," (, - 6 个评论) " /* 这是我想将 crawling_page_address 放在单独的 RDD 中的数据集*/

标签: java apache-spark rdd filterfunction


【解决方案1】:

如果您知道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 函数。

【讨论】:

  • 将尝试让您知道结果。感谢您的宝贵建议(y)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 2019-05-21
  • 2018-09-25
相关资源
最近更新 更多