在spark中使用JavaRDD添加文本文件的列
我是spark的新手。我试图读取一个文本文件,并总结第三列的总数。我有点困惑如何使用RDD在spark中使用JavaRDD添加文本文件的列,java,apache-spark,Java,Apache Spark,我是spark的新手。我试图读取一个文本文件,并总结第三列的总数。我有点困惑如何使用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", "Simpl
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(","));
}
});
}
}
公共类test2{
公共静态void main(字符串[]args){
字符串logFile=“textfile.txt”;//应该是系统上的某个文件
JavaSparkContext sc=新的JavaSparkContext(“本地”、“简单应用程序”,
“spark-0.9.1-bin-hadoop2/”,新字符串[]{“test2_-jar/test2.jar”});
JavaRDD logData=sc.textFile(logFile.cache();
JavaRDD tabbed=logData.flatMap(新的flatMap函数(){
@凌驾
公共Iterable调用(字符串s)引发异常{
返回数组.asList(s.split(“,”);
}
});
}
}
这就是我能做到的。如何让RDD在拆分第二列后访问它?我知道可以用fold求和。但我真的不知道怎么做 使用spark shell和scala更容易理解正在发生的事情,因为语法没有那么详细。然后,一旦您理解了流程,用Java编写它就容易多了 首先:flatMap将获取您的日志条目列表并将它们附加到RDD中,这样就不用像
A, B
C, D
您将以四行结束,如
A
B
C
D
要获得所需的行为,需要使用“map”函数
在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
非常感谢你,大卫!!如何将RDD的值打印出来以使其可视化?我一直使用take(m)或first()。这是正确的吗?