我目前正在使用 avro 格式的 Sqoop 从 Mysql 导入 HDFS,这很好用。然而,将这些文件加载到 HIVE 中的最佳方法是什么?
由于 avro 文件包含架构,我可以将文件下拉到本地文件系统,使用 avro 工具并使用提取的架构创建表,但这似乎过度?
此外,如果从 mysql 中的表中删除列,我是否仍可以将旧文件加载到使用新 avro 架构创建的新 HIVE 表中(删除的列丢失)?
在 9.1 版之后,Hive 与 Avro Hive SerDe 一起打包。这允许 Hive 直接从 Avro 文件中读取,而 Avro 仍然“拥有”架构。
对于第二个问题,您可以使用列默认值定义 Avro 架构。添加新列时,只需确保指定默认值,所有旧的 Avro 文件都可以在新的 Hive 表中找到。
要开始使用,您可以在此处找到文档,而Programming Hive书(可在 Safari 在线图书中获得)有一个关于 Avro HiveSerde 的部分,您可能会发现它更具可读性。