简体   繁体   English

Spark-将Scala转换为Java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM