gpt4 book ai didi

java - Spark、Java 中的 DataFrame 转换

转载 作者:行者123 更新时间:2023-11-30 08:40:33 25 4
gpt4 key购买 nike

在我加载一个 json 文件后:

df = sqlContext.read().json(path);

我将在 Java Spark 中获取我的 DataFrame。例如,我有下一个 DF:

id item1 item2 item3 ....
id1 0 3 4
id2 1 0 2
id3 3 3 0
...

我想以最简单的方式将其转换为(可能是 Rating 类的对象,id 和 item,然后通过 .hashCode() 转换为 Integer)

id   item   ranking
id1 item1 0
id1 item2 3
id1 item3 4
....
id2 item1 1
id2 item2 0
id1 item1 2
...

PS 第一次尝试创建 flatMap 函数:

void transformTracks() {
JavaRDD<Rating> = df.flatMap(new Function<Row, Rating>(){
public Rating call(Row r) {
for (String i : r) {
return Rating(1, 1, r.apply(Double.parseDouble(i)));
}
}
})
}

最佳答案

如果语法略有偏差,您必须原谅我 - 我现在用 Scala 编程,我已经有一段时间没有使用 Java - 但大致如下:

DataFrame df = sqlContext.read().json(path);
String[] columnNames = df.columns;

DataFrame newDF = df.flatMap(row -> {
ArrayList list = new ArrayList<>(columnNames.length);
String id = (String)row.get(0);

for (int i = 1; i < columnNames.length, i++) {
list.add(id, columnNames[i], (int)row.get(i));
}
return list;
}).toDF("id", "item", "ranking");

关于java - Spark、Java 中的 DataFrame 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35603689/

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