【发布时间】:2020-06-12 23:21:55
【问题描述】:
我有一个包含几个整数值的 Java ArrayList。 我用 ArrayList 创建了一个 DataSet。 我使用 System.out.println(DF.javaRDD().getNumPartitions()); 并导致 1 个分区。 我想把数据分成3个分区。所以我使用了重新分区()。 我想在重新分区后找出每个分区中的项目数。
在 scala 中它是直截了当的。
DF.repartition(3).mapPartitions((it) => Iterator(it.length));
但相同的语法在 Java 中不起作用,因为长度函数在 Java 的迭代器接口中不可用。
我们应该如何解读mappartition函数?
mapPartitions(FlatMapFunction<java.util.Iterator<T>,U> f)
内部函数会接受哪些参数,返回类型是什么?
SparkSession sessn = SparkSession.builder().appName("RDD to DF").master("local").getOrCreate();
List<Integer> lst = Arrays.asList(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
Dataset<Integer> DF = sessn.createDataset(lst, Encoders.INT());
System.out.println(DF.javaRDD().getNumPartitions());
【问题讨论】:
标签: apache-spark