gpt4 book ai didi

java - 使用Spark-Java读取存储在HDFS中的Avro表和架构

转载 作者:行者123 更新时间:2023-12-02 21:08:52 25 4
gpt4 key购买 nike

我正在尝试读取还指定架构的HDFS中存储的Avro表
它也存储在HDFS中。
目前,我有这个解决方案似乎有效:

    RDD<String> stringRDD = sparkContext.textFile(schemaPath, 1);
String [] collect = (String []) stringRDD.collect();
String schema = collect[0];
Dataset<Row> df =sqlContext.read().format("com.databricks.spark.avro").option("avroSchema", schema)
.load(tablePath);

这是最好的方法吗?
如果架构足够大,例如可以有2个分区怎么办?我应该使用reduce()合并它们吗?

干杯

最佳答案

我知道自提出此问题已经一年了,但是最近我想做同样的事情,这个问题在google中名列前茅。

因此,我能够使用Hadoop的FileSystem类来做到这一点:

import org.apache.avro.Schema;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.Path;

String schemaPath = "/path/to/schema/in/hdfs.avsc";
FSDataInputStream schemaFile = FileSystem.get(sparkContext.hadoopConfiguration).open(new Path(schemaPath));
Schema schema = new Schema.Parser().parse(schemaFile);
String schemaString = schema.toString();

希望这可以帮助!

关于java - 使用Spark-Java读取存储在HDFS中的Avro表和架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40948786/

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