[英]Spark - convert scala to java
Using apache-spark
to process data. 使用
apache-spark
处理数据。
Given such scala
codes: 给定这样的
scala
代码:
val rdd1 = sc.cassandraTable("player", "playerinfo").select("key1", "value")
val rdd2 = rdd1.map(row => (row.getString("key1"), row.getLong("value")))
Basically, it covert a RDD
'rdd1' to another RDD
'rdd2', but it stores 'rdd1' as key-value pair form. 基本上,它隐蔽一个
RDD
“RDD1集”到另一个RDD
“RDD2”,但其存储“RDD1集”作为键-值对的形式。
Pay attention that the source data is from cassandra
and keys1
is a part of composite key and value
is the value. 请注意,源数据来自
cassandra
并且keys1
是复合键的一部分,而value
是值。
Then how to convert this into Java
so that I will have a JavaPairRDD<String,Long>
using spark Java API? 然后如何将其转换为
Java
以便使用spark Java API获得JavaPairRDD<String,Long>
? I already have an cassandraRowsRDD
generated successfully from the Java codes below: 我已经有一个从下面的Java代码成功生成的
cassandraRowsRDD
:
JavaRDD<String> cassandraRowsRDD = javaFunctions(sc).cassandraTable("player", "playerinfo")
.map(new Function<CassandraRow, String>() {
@Override
public String call(CassandraRow cassandraRow) throws Exception {
return cassandraRow.toString();
}
});
CassandraJavaRDD
inherits mapToPair
methods. CassandraJavaRDD
继承了mapToPair
方法。 You can call it to get key-value pair RDD in Java. 您可以调用它来获取Java中的键值对RDD。
JavaPairRDD<String, String> cassandraKeyValuePairs = javaFunctions(sc).cassandraTable("player", "playerinfo").mapToPair(
new PairFunction<CassandraRow, String, String>() {
@Override
public Tuple2<String, String> call(CassandraRow row) throws Exception {
return new Tuple2(row.getString("key1"), row.getLong("value"));
}
}
);
You can also call the function on your cassandraRowsRDD
. 您也可以在
cassandraRowsRDD
上调用该函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.