【发布时间】:2018-01-29 07:42:52
【问题描述】:
我遇到了一个简单的 spark 任务问题,它读取 Avro 文件,然后将其保存为 Hive parquet 表。
我有 2 种类型的文件,通常它们是相同的,但关键结构有点不同 - 字段名称。
类型 1
root
|-- pk: strucnt (nullable = true)
|-- term_id: string (nullale = true)
类型 2
root
|-- pk: strucnt (nullable = true)
|-- id: string (nullale = true)
我正在使用 spark-avro 阅读 Avro。然后像这样将这个DF映射到bean
Dataset<SomeClass> df = avroDF.as(Encoders.bean(SomeClass.class));
SomeClass 是一个带有 getter 和 setter 的简单单字段类。
public class SomeClass{
private String term_id;
...
}
所以,如果我正在阅读 Avro 类型 1 - 没关系。但是,如果我正在阅读 Avro 类型 2 - 就会发生错误。反之亦然,如果我将字段名称更改为 private String id;
我的问题有什么通用的解决方案吗?我找到了@AvroName,但它不允许设置多个名称。 谢谢。
【问题讨论】:
标签: java apache-spark spark-dataframe spark-avro