[英]How to convert Row to Dataset<Row> in spark Java
我正在使用ForeachFunction
迭代Dataset<Row>
而在迭代中我不知道如何將一些自定義列附加到 Row 並將其附加到ForeachFunction
Java 中的另一個Dataset<Row>
代碼:
groupedDataset.foreach((ForeachFunction<Row>) row -> {
double average = //some value
// the Row has four columns
// All I want is to have a new Dataset<Row> with specific columns
// from the Row i.e row(0),row(1),row(3) and average value
Dataset<Row> newDs = row.getString("ID"),row.getString("time"),row.getInt("value"),average;
});
我已經嘗試了很多,但我無法解決它。
謝謝!
不應直接修改行(可以但不方便)。 在操作數據幀(行數據集)時,您應該使用 SparkSQL API 有兩個主要原因:1. 它易於使用 2. 它允許 Spark 對您的請求執行大量優化。
現在,這里有一個看起來像您要實現的目標的示例。 基本上,我創建了一個包含三列的數據集,並使用選擇來平均其中兩列的結果並丟棄最后一列。 如果您需要更多詳細信息,請告訴我。
SparkSession spark = SparkSession.builder().getOrCreate();
Dataset<Row> data = spark
.range(10)
.select(col("id").as("id"),
col("id").cast("string").as("str"),
col("id").plus(5).as("id5") );
data.show();
Dataset<Row> result = data
.select(col("id"), col("id5"),
col("id").plus(col("id5")).divide(2).as("avg"));
result.show();
產生:
+---+---+---+
| id|str|id5|
+---+---+---+
| 0| 0| 5|
| 1| 1| 6|
| 2| 2| 7|
+---+---+---+
+---+---+---+
| id|id5|avg|
+---+---+---+
| 0| 5|2.5|
| 1| 6|3.5|
| 2| 7|4.5|
+---+---+---+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.