我目前正在使用avro格式的Sqoop从Mysql导入HDFS,这很好用。但是,将这些文件加载到HIVE的最佳方法是什么?
由于avro文件包含架构,因此我可以将文件下拉至本地文件系统,使用avro工具并使用提取的架构创建表,但这似乎过多吗?
另外,如果从mysql中的表中删除了列,我是否仍可以将旧文件加载到使用新avro模式创建的新HIVE表中(丢失的列丢失)?
最佳答案
9.1版之后,Hive随附了Avro Hive SerDe。这使Hive可以直接从Avro文件中读取,而Avro仍“拥有”该架构。
对于第二个问题,您可以使用列默认值定义Avro模式。添加新列时,请确保指定默认值,并且所有旧的Avro文件都可以使用,只需在新的Hive表中找到即可。
首先,您可以找到文档here,而《 Programming Hive》一书(在Safari联机丛书上提供)具有section on the Avro HiveSerde,您可能会觉得它更具可读性。
关于hive - Sqoop,Avro和Hive,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16109585/