【问题标题】:How to convert List to JavaRDD如何将列表转换为 JavaRDD
【发布时间】:2017-10-18 01:34:37
【问题描述】:

我们知道在 spark 中有一个方法 rdd.collect 可以将 RDD 转换为一个列表。

List<String> f= rdd.collect();
String[] array = f.toArray(new String[f.size()]);

我试图在我的项目中做完全相反的事情。我有一个字符串的 ArrayList,我想将其转换为 JavaRDD。我正在寻找这个解决方案很长一段时间,但还没有找到答案。有人可以帮我吗?

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    您正在寻找JavaSparkContext.parallelize(List) 和类似的信息。这就像在 Scala API 中一样。

    【讨论】:

    • 感谢肖恩的帮助。将列表转换为 JavaRDD。
    • 你对 Spark 中的“JdbcRDD”有任何想法吗?我正在尝试用 Java 实现它,但没有任何关于它的帖子或示例。我有一个关于它的链接(github.com/apache/spark/blob/master/core/src/main/scala/org/…)。但我无法理解它的 scala 代码。
    • @AmitabhRanjan 需要一个单独的问题
    【解决方案2】:

    添加到 Sean Owen 和其他解决方案

    您可以将JavaSparkContext#parallelizePairs 用于List ofTuple

    List<Tuple2<Integer, Integer>> pairs = new ArrayList<>();
    pairs.add(new Tuple2<>(0, 5));
    pairs.add(new Tuple2<>(1, 3));
    
    JavaSparkContext sc = new JavaSparkContext();
    
    JavaPairRDD<Integer, Integer> rdd = sc.parallelizePairs(pairs);
    

    【讨论】:

      【解决方案3】:

      有两种方法可以将集合转换为 RDD。

      1) sc.Parallelize(collection)
      2) sc.makeRDD(collection)
      

      这两种方法是相同的,所以我们可以使用它们中的任何一种

      【讨论】:

      • +1 -- 这是数据块的完美解决方案。虽然我不认为 sc eyword 在这种情况下没有意义?
      • 我们得到一个在spark-shell中创建的sparkcontext对象(sc),否则我们必须创建一个sparkContext(每个程序只能有一个sparkContext)
      • 哦,好吧,它比我想象的更笼统。我戴着数据砖护目镜
      【解决方案4】:
      List<StructField> fields = new ArrayList<>();
      fields.add(DataTypes.createStructField("fieldx1", DataTypes.StringType, true));
      fields.add(DataTypes.createStructField("fieldx2", DataTypes.StringType, true));
      fields.add(DataTypes.createStructField("fieldx3", DataTypes.LongType, true));
      
      
      List<Row> data = new ArrayList<>();
      data.add(RowFactory.create("","",""));
      Dataset<Row> rawDataSet = spark.createDataFrame(data, schema).toDF();
      

      【讨论】:

        猜你喜欢
        • 2016-07-24
        • 2020-06-01
        • 2017-02-25
        • 2016-01-05
        • 2019-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-14
        相关资源
        最近更新 更多