Java 在Spark中使用几个逗号分隔的字段映射RDD
我是Spark的新手,我正在学习一个教程,其中使用Scala解析包含多个字段的行,使用Scala的代码如下所示:Java 在Spark中使用几个逗号分隔的字段映射RDD,java,apache-spark,spark-streaming,Java,Apache Spark,Spark Streaming,我是Spark的新手,我正在学习一个教程,其中使用Scala解析包含多个字段的行,使用Scala的代码如下所示: val pass = lines.map(_.split(",")). map(pass=>(pass(15),pass(7).toInt)). reduceByKey(_+_) 其中pass是从socketTextStream(其SparkStreams)接收的数据。我是Spark的新手,希望使用Java获得相同的结果。我已使用以下方法标记了JavaReceiverInpu
val pass = lines.map(_.split(",")).
map(pass=>(pass(15),pass(7).toInt)).
reduceByKey(_+_)
其中pass
是从socketTextStream(其SparkStreams)接收的数据。我是Spark的新手,希望使用Java获得相同的结果。我已使用以下方法标记了JavaReceiverInputDStream:
JavaReceiverInputDStream<String> lines = jssc.socketTextStream("localhost", 9999);
JavaReceiverInputdStreamLines=jssc.socketTextStream(“localhost”,9999);
我提出了两种可能的解决方案:
JavaDStream words=lines.flatMap(
新FlatMapFunction(){
@重写公共Iterable调用(字符串x){
返回array.asList(x.split(“,”);
}
});代码>
JavaDStream words=lines.map(
新函数(){
公共列表调用(字符串s){
返回数组.asList(s.split(“,”);
}
});代码>
JavaPairDStream<String, Integer> pairs = words.map(
new PairFunction<List<String>, String, Integer>() {
public Tuple2<String, Integer> call(List<String> s) throws Exception {
return new Tuple2(s.get(15), 6);
}
});
JavaPairDStream pairs=words.map(
新PairFunction(){
公共元组2调用(列表s)引发异常{
返回新的Tuple2(s.get(15),6);
}
});
错误:
类中的方法映射
org.apache.spark.streaming.api.java.AbstractJavaDStreamLike`<T,This,R>` cannot be applied to given types;
[ERROR] required: org.apache.spark.api.java.function.Function`<java.util.List`<java.lang.String>`,R>`
[ERROR] found: `<anonymous org.apache.spark.api.java.function.PairFunction`<java.util.List`<java.lang.String>`,java.lang.String,java.lang.Integer>`>`
[ERROR] reason: no instance(s) of type variable(s) R exist so that argument type `<anonymous org.apache.spark.api.java.function.PairFunction`<java.util.List`<java.lang.String>`,java.lang.String,java.lang.Integer>`>` conforms to formal parameter type org.apache.spark.api.java.
org.apache.spark.streaming.api.java.AbstractJavaDStreamLike``不能应用于给定类型;
[错误]必需:org.apache.spark.api.java.function.function``
找到[错误]:``
[错误]原因:不存在类型变量R的实例,因此参数类型``符合形式参数类型org.apache.spark.api.java。
对此有何建议?请使用此代码。它将从字符串中获取require字段
JavaDStream<String> lines = { ..... };
JavaPairDStream<String, Integer> pairs = lines.mapToPair(new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String t) throws Exception {
String[] words = t.split(",");
return new Tuple2<String, Integer>(words[15],Integer.parseInt(words[7]));
}
});
JavadStreamLines={….};
JavaPairDStream pairs=lines.mapToPair(新的PairFunction(){
@凌驾
公共元组2调用(字符串t)引发异常{
String[]words=t.split(“,”);
返回新的Tuple2(单词[15],Integer.parseInt(单词[7]);
}
});