gpt4 book ai didi

Java Spark : Stack Overflow Error on GroupBy

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:46:58 36 4
gpt4 key购买 nike

我在 Java 中使用 Spark 2.3.1。

我有一个数据集,我想对其进行分组以进行一些聚合(例如,我们说一个 count() )。必须根据给定的列列表进行分组。

我的功能如下:

public Dataset<Row> compute(Dataset<Row> data, List<String> columns){

final List<Column> columns_col = new ArrayList<Column>();

for (final String tag : columns) {
columns_col.add(new Column(tag));
}

Seq<Column> columns_seq = JavaConverters.asScalaIteratorConverter(columns_col.iterator()).asScala().toSeq();

System.out.println("My columns : "+columns_seq.mkString(", "));
System.out.println("Data count : "+data.count());

final Dataset<Row> dataset_count = data.groupBy(columns_seq).agg(count(col("value")));

System.out.println("Result count : "+dataset_count.count());

return dataset_count;
}

当我这样调用它时:

Dataset<Row> df = compute(MyDataset, Arrays.asList("field1","field2","field3","field4"));

我在 dataset_count.count() 上有一个 StackOverflowError:

My columns : field1, field2, field3, field4
Data count : 136821
Exception in thread "main" java.lang.StackOverflowError
at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:418)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1233)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:1223)
at scala.collection.immutable.Stream.drop(Stream.scala:858)
at scala.collection.immutable.Stream.drop(Stream.scala:202)
at scala.collection.LinearSeqOptimized$class.apply(LinearSeqOptimized.scala:64)
at scala.collection.immutable.Stream.apply(Stream.scala:202)
...

但是如果我在我的函数中替换行

final Dataset<Row> dataset_count = data.groupBy(columns_seq).agg(count(col("value")));

final Dataset<Row> dataset_count = data.groupBy("field1","field2","field3","field4").agg(count(col("value")));

我没有错误,我的程序计算得很好:

My columns : field1, field2, field3, field4
Data count : 136821
Result count : 74698

这个问题可能来自哪里,是否有根据未知列列表对数据集进行分组的解决方案?

最佳答案

尝试改用它:

Seq<Column> columns_seq = JavaConversions.asScalaBuffer(columns_col).seq();

关于Java Spark : Stack Overflow Error on GroupBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51667368/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com