gpt4 book ai didi

java - 在 Java 中写入 Parquet 之前如何为数据集列别名

转载 作者:行者123 更新时间:2023-12-02 09:38:20 26 4
gpt4 key购买 nike

我正在java中使用apache Spark,我想做的是过滤一些数据,按特定键对其进行分组,然后计算每个键的元素数量。目前我正在这样做:

Dataset<MyBean> rawEvents = readData(spark);
Dataset<MyBean> filtered = rawEvents.filter((FilterFunction<MyBean>) events ->
//filter function
));

KeyValueGroupedDataset<String, MyBean> grouped = filtered
.groupByKey((MapFunction<MyBean, String>) event -> {
return event.getKey();
}, Encoders.STRING());


grouped.count().write().parquet("output.parquet");

它无法写入,因为:org.apache.spark.sql.AnalysisException:属性名称“count(1)”包含“,;{}()\n\t=”中的无效字符。请使用别名来重命名。;

如何为计数列添加别名以避免这种情况发生?

最佳答案

grouped.count()返回 Dataset<Tuple2<String, Object>在你的情况下。

本质上,重命名数据集对象中的列将解决您的问题。

您可以使用withColumnRenamed Dataset API 的方法。

grouped.count().withColumnRenamed("count(1)", "counts").write().parquet("output.parquet")

关于java - 在 Java 中写入 Parquet 之前如何为数据集列别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324362/

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