gpt4 book ai didi

java - 如何在 Spark Java 中使用 StructType Schema 从 JavaRDD 读取 csv 格式数据

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:54 27 4
gpt4 key购买 nike

使用 Spark Java,我尝试使用 StructType 动态模式读取具有 JavaRDD 形式的逗号分隔值的数据。

我知道我可以使用下面传递模式的方法读取json(其中schemaStr->StructType和javaRDD->JavaRDD):

Dataset<Row> df = spark.read().schema(schemaStr).json(javaRDD);


javaRDD has value as: name1,address11,city111

请建议如何使用 StructType 模式读取 JavaRDD,因为我有逗号分隔的数据作为 JavaRDD。而且我需要使用 StructType 架构读取数据,以将其转换为数据帧,因为我有一个动态架构生成器实用程序。

最佳答案

所以如果我理解正确的话,你想转换 JavaRDDDataset<Row> ?如果是,您可以创建 JavaRDD<Row>通过拆分您的 JavaRDD<String>并将其传递给spark.createDataFrame与您的架构

StructType schema = new StructType(new StructField[]{
new StructField("_1", DataTypes.StringType, false, Metadata.empty()),
new StructField("_2", DataTypes.StringType, false, Metadata.empty()),
new StructField("_3", DataTypes.StringType, false, Metadata.empty())
});

JavaRDD<String> rdd1 = spark
.range(5)
.javaRDD()
.map(s -> s+",b,c");

JavaRDD<Row> rdd2 = rdd1.map(s -> s.split(","))
.map(s -> RowFactory.create((Object[]) s));

Dataset<Row> df = spark.createDataFrame(rdd2, schema);

df.show();

输出:

+---+---+---+
| _1| _2| _3|
+---+---+---+
| 0| b| c|
| 1| b| c|
| 2| b| c|
| 3| b| c|
| 4| b| c|
+---+---+---+

关于java - 如何在 Spark Java 中使用 StructType Schema 从 JavaRDD<String> 读取 csv 格式数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58333076/

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