【发布时间】:2017-04-18 08:13:36
【问题描述】:
我正在尝试读取存储在 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() 合并所有这些吗?
干杯
【问题讨论】:
-
为什么首先需要读取架构?可以在没有模式的情况下读取 avro(因为模式嵌入在 avro 中)。您是否尝试跳过架构选项?
-
Schema 也可以直接在类中描述(作为一个字段,手工创建),而不需要从外部文件中获取,是不是一种选择?
标签: java hadoop apache-spark hdfs avro