Spark RDD在CSV文件上运行

时间:2016-12-15 07:23:49

标签: csv apache-spark apache-spark-sql spark-dataframe rdd

我正在尝试通过 SparkContext 加载 csv 文件,加载后我需要在 RDD操作 > CSV文件。 我能够读取csv文件并从JavaRDD中获取所需的列。现在我需要对这些列执行任何RDD操作。

这是我到目前为止所尝试过的......

JavaRDD<String> diskfile = sc.textFile("/Users/hadoop/Downloads/Data_1.csv");

  JavaRDD<Object> newRDD = diskfile.cache().map(lines -> Arrays.asList(new String[]{
          lines.split(",")[0], 
          lines.split(",")[1]
        }

          ));
 System.out.println(newRDD.collect());

newRDD.collect()打印第0列和第1列csv数据。现在我需要在newRDD上执行任何RDD操作。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您想开始使用Spark RDD转换,那么您可以转到以下链接:

RDD-Basic-Examples

RDD API Examples

使用flatMap, mapToPair, reduceByKey转换的java中的字数统计示例:

JavaRDD<String> textFile = sc.textFile("hdfs://...");
JavaRDD<String> words = textFile.flatMap(new FlatMapFunction<String, String>() {
  public Iterable<String> call(String s) { return Arrays.asList(s.split(" ")); }
});
JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {
  public Tuple2<String, Integer> call(String s) { return new Tuple2<String, Integer>(s, 1); }
});
JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {
  public Integer call(Integer a, Integer b) { return a + b; }
});
counts.saveAsTextFile("hdfs://...");
相关问题