【发布时间】:2020-07-21 04:26:19
【问题描述】:
Spark (2.4.x) 新手并使用 Java API(不是 Scala!!!)
我有一个Dataset,我已从 CSV 文件中读取它。它有一个架构(命名列),如下所示:
id (integer) | name (string) | color (string) | price (double) | enabled (boolean)
示例行:
23 | "hotmeatballsoup" | "blue" | 3.95 | true
数据集中有许多(数万)行。我想使用正确的 Java/Spark API 编写一个表达式,它会滚动每一行并对每一行应用以下两个操作:
- 如果价格为
null,则默认为0.00;然后 - 如果颜色列值为“红色”,则在价格中添加
2.55
由于我对 Spark 还很陌生,我什至不知道从哪里开始!到目前为止,我的最佳尝试肯定是错误的,但我猜这至少是一个起点:
Dataset csvData = sparkSession.read()
.format("csv")
.load(fileToLoad.getAbsolutePath());
// ??? get rows somehow
Seq<Seq<String>> csvRows = csvData.getRows(???, ???);
// now how to loop through rows???
for (Seq<String> row : csvRows) {
// how apply two operations specified above???
if (row["price"] == null) {
row["price"] = 0.00;
}
if (row["color"].equals("red")) {
row["price"] = row["price"] + 2.55;
}
}
有人可以在这里帮助我朝着正确的方向前进吗?
【问题讨论】:
标签: java apache-spark apache-spark-dataset