我是火花的新手。我正在尝试读取文本文件,并总结第三列的总数。我对如何使用RDD感到困惑。
public class test2 {
public static void main(String[] args) {
String logFile = "textfile.txt"; // Should be some file on your system
JavaSparkContext sc = new JavaSparkContext("local", "Simple App",
"spark-0.9.1-bin-hadoop2/", new String[]{"test2_jar/test2.jar"});
JavaRDD<String> logData = sc.textFile(logFile).cache();
JavaRDD<String> tabbed = logData.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterable<String> call(String s) throws Exception {
return Arrays.asList(s.split(","));
}
});
}
}
据我所知。拆分后,如何使RDD访问第二列?我知道可以使用折叠来完成求和。但我不太确定该怎么做。
最佳答案
使用spark-shell和scala可以更轻松地了解发生了什么,因为语法不太冗长。然后,一旦您了解了流程,就可以轻松编写Java。
首先:flatMap将获取您的日志条目列表并将其附加到RDD,因此不必像这样有两行
A, B
C, D
您将最终得到四行,例如
A
B
C
D
要获得所需的行为,您需要使用“地图”功能
在spark-shell中,代码如下所示:
val logData = sc.textFile("textfile.txt")
val tabbed = logData.map(x => x.split(","))
val secondColumn = tabbed.map(x => x(1).toDouble)
val sum = secondColumn.sum
关于java - 在Spark中使用JAVA RDD添加文本文件的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24335348/