英文:
How to transpose a spark dataset in java?
问题
我是你的中文翻译,下面是你提供的内容的翻译:
我刚开始使用 Spark Java,想要转置数据集<row>。我已经查看了使用 pivot 函数来转置数据集的方法,但是表头对我来说是未知的,因此无法使用 pivot 函数来实现。在 Java 中是否有任何方法可以转置数据集。
英文:
I new to spark java i wanted to transpose dataset<row>. I have checked the pivot function to transpose the the dataset but the header are unknown to me so cannot use the pivot fuction to do so is there any way in java i can transpose the dataset .
答案1
得分: 0
问题在于SparkSQL没有转置函数。因此,您必须为数据集创建一个新的架构,并创建一个映射函数,以便将行的位置更改为列的位置。
英文:
The problem here is that SparkSQL doesn't have a transpose function. So you must create a new Schema for your dataset as well as create a mapper function in order to change the location of rows to columns.
答案2
得分: 0
这将使用一个枢轴列在 Spark 中对数据集进行转置。
private static Dataset<Row> transposeDF(Dataset<Row> df, String[] columns, String pivotCol) {
List<String> columnsValue =
Arrays.asList(columns).stream().map(x -> "'" + x + "', " + x).collect(Collectors.toList());
String stackCols = String.join(",", columnsValue);
Dataset<Row> df1 =
df.selectExpr(pivotCol, "stack(" + columns.length + "," + stackCols + ")")
.select(pivotCol, "col0", "col1");
Dataset<Row> finalDF =
df1.groupBy(functions.col("col0"))
.pivot(pivotCol)
.agg(functions.concat_ws("", functions.collect_list(functions.col("col1"))))
.withColumnRenamed("col0", pivotCol);
return finalDF;
}
注意:这是您提供的代码的翻译部分,没有其他附加内容。
英文:
this will transpose the dataset in spark using a pivot column.
private static Dataset<Row> transposeDF(Dataset<Row> df, String[] columns, String pivotCol) {
List<String> columnsValue =
Arrays.asList(columns).stream().map(x -> "'" + x + "', " + x).collect(Collectors.toList());
String stackCols = String.join(",", columnsValue);
Dataset<Row> df1 =
df.selectExpr(pivotCol, "stack(" + columns.length + "," + stackCols + ")")
.select(pivotCol, "col0", "col1");
Dataset<Row> finalDF =
df1.groupBy(functions.col("col0"))
.pivot(pivotCol)
.agg(functions.concat_ws("", functions.collect_list(functions.col("col1"))))
.withColumnRenamed("col0", pivotCol);
return finalDF;
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论