gpt4 book ai didi

java - Spark 将一个 Dataframe 映射到另一个 Dataframe

转载 作者:行者123 更新时间:2023-12-02 03:02:39 24 4
gpt4 key购买 nike

我试图将数据帧的一列解析为两个不同的列(目的是随后将这些列添加到数据帧中)。我尝试了两种方法。两者都会导致问题。谁能告诉我如何使用其中一种方法来实现这一目标,或者提示我采用不同的方法?

map Dataset<Row>Dataset<Tuple2<String, String>>

Dataset<Tuple2<String, String>> dfParsed =  df.map(new MapFunction<Row, Tuple2<String, String>>
() {

@Override
public Tuple2<String, String> call(Row value) throws Exception {
// Parse the column
String opsCode = value.getAs("OPSCODE");
String[] splitted = opsCode.split("[\\.|\\-]");

return new Tuple2<>(splitted[1], splitted[2]);

}
}, Encoders.tuple(Encoders.STRING(), Encoders.STRING()));

这有效。但在 dfParsed两列均命名为 value我无法选择它们将它们添加到原始数据框中。

map Dataset<Row>Dataset<Row>

Dataset<Row> dfParsed =  df.map(new MapFunction<Row, Row>() {

@Override
public Row> call(Row value) throws Exception {

// Parse the column
String opsCode = value.getAs("OPSCODE");
String[] splitted = opsCode.split("[\\.|\\-]");

//return RowFactory.create(splitted[1], splitted[2]);
}
}, ???);

这种方法不起作用,因为我不知道哪个Encoder来选择。

最佳答案

您只需在第一次尝试重命名列后调用 toDF(columnNames) 即可。

output.toDF("col1", "col2", ...)

关于java - Spark 将一个 Dataframe 映射到另一个 Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42231068/

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