在下面的代码中 PairFunction
它将数组列表拆分为键和值。
private static PairFunction<String,String,Integer> getNameAndAgePair() {
return (PairFunction<String,String,Integer>) s ->
new Tuple2<>(
s.split(" ")[0],
Integer.valueOf(s.split(" ")[1]));
}
请有人解释一下这到底是怎么回事。我无法理解这里的拆分,我知道他们试图创建键和值,但为什么在这两个索引中都有按空间拆分。
Tuple2<>(s.split(" ")[0], Integer.valueOf(s.split(" ")[1]));}
此代码将javardd转换为javapairdd,此代码是用javasparkrdd编写的。基本上这段代码涵盖了如何从普通rdd创建pairrdd?
import java.util.Arrays;
import java.util.List;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
public class PairRDDFromRegularRDD {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("Pair Rdd From Regular
RDD").setMaster("local[*]");
JavaSparkContext sc = new JavaSparkContext(conf);
List<String> inputString = Arrays.asList("Lily 23", " jack 29", "mary 29",
"James 8");
JavaRDD<String> regularRDDs = sc.parallelize(inputString);
JavaPairRDD<String,Integer> pairRDD =
regularRDDs.mapToPair(getNameAndAgePair());
}
private static PairFunction<String,String,Integer> getNameAndAgePair() {
// TODO Auto-generated method stub
return (PairFunction<String,String,Integer>) s -> new Tuple2<>(s.split(" ")
[0],Integer.valueOf(s.split(" ")[1]));
}
}
1条答案
按热度按时间6tdlim6h1#
我无法理解这里的拆分,我知道他们试图创建键和值,但为什么在这两个索引中都有按空间拆分。
如果你不介意的话,我就用Spark壳来解释。
换句话说,
split
方法通过给定的分隔符(在您的例子中是一个空格)将字符串分割成块。访问第0块和第1块是分别访问键和值的值。实际上,它更像java/scala而不是spark。