我正在尝试通过 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操作。
提前致谢。
答案 0 :(得分:0)
如果您想开始使用Spark RDD转换,那么您可以转到以下链接:
使用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://...");