Sqoop、Avro和Hive

Sqoop、Avro和Hive,hive,sqoop,avro,Hive,Sqoop,Avro,我目前正在使用avro格式的Sqoop从Mysql导入HDFS,效果非常好。但是,将这些文件加载到配置单元中的最佳方式是什么 由于avro文件包含模式,我可以将文件拉到本地文件系统,使用avro工具并使用提取的模式创建表,但这似乎太过分了 此外,如果在mysql中从表中删除了一列,我是否仍然可以将旧文件加载到使用新avro架构创建的新配置单元表中(删除的列丢失)?在9.1版之后,配置单元附带了avro配置单元SerDe。这允许配置单元在Avro仍然“拥有”模式的情况下直接从Avro文件读取 对于

我目前正在使用avro格式的Sqoop从Mysql导入HDFS,效果非常好。但是,将这些文件加载到配置单元中的最佳方式是什么

由于avro文件包含模式,我可以将文件拉到本地文件系统,使用avro工具并使用提取的模式创建表,但这似乎太过分了


此外,如果在mysql中从表中删除了一列,我是否仍然可以将旧文件加载到使用新avro架构创建的新配置单元表中(删除的列丢失)?

在9.1版之后,配置单元附带了avro配置单元SerDe。这允许配置单元在Avro仍然“拥有”模式的情况下直接从Avro文件读取

对于第二个问题,可以使用列默认值定义Avro模式。当您添加一个新列时,只需确保指定一个默认值,所有旧的Avro文件都将在一个新的配置单元表中工作


要开始,您可以找到文档,书籍编程配置单元(可在Safari Books Online上获得)有一个更具可读性的配置单元。

创建表时,我是否仍然需要在TBLProperty中提供架构?是的。配置单元必须提前知道模式。tableproperties中指定的架构必须与表将遇到的所有架构前向兼容。架构文件来自哪里?如果我使用Sqoop导入一些数据,我可以在数据文件的头部看到模式,但在数据目录中看不到任何外部模式文件。我应该为TBLProperty指定什么?我最终运行了一个空的sqoop,以确保我使用了相同的模式并使用了它。不太好,但是如果我使用avro工具,我必须将一个文件放到本地系统,然后使用java-jar avro-tools-1.7.4.jar getschema part-m-00000.avro提取模式