hadoop - 动态模式的解决方案 - HIVE/AVRO

标签 hadoop hive schema

要求跟上目标 ORC 表的架构演变。我从源接收 JSON 事件。我们计划将它们转换为 AVRO(因为它支持模式演化)。由于模式可以每天/每周更改,我们需要不断摄取新数据 JSON 文件,将它们转换为 AVRO 并将所有数据(旧/新)存储在 ORC 配置单元表中。我们如何解决这个问题?

最佳答案

您可以采用以下方法,这是解决此问题的众多不同方法之一。

<强>1。创建 HBASE 表

  • 首先读取 AVRO 数据并在 HBASE 中创建表。(您可以使用 spark 高效地完成此操作)
  • 即使在未来,HBASE 表也会负责模式的演变。

<强>2。创建 Hive 包装表

  • 创建指向 HBASE 表的配置单元包装表(存储处理程序)。 (您可以阅读更多相关信息 here

<强>3。创建 ORC 表

  • 现在从步骤 2 中创建的表创建 ORC 表

<强>4。您需要处理的事情

  • 由于 Hive 表与模式紧密耦合,您需要在步骤 2 中将数据写入 Hive 包装器表之前处理一个步骤。您需要在此处标识新列,然后将这些列适本地添加到现有包装器或兽人表。这也可以通过 NiFi 或 Spark 或像 shell 脚本一样简单的方式来实现。根据您的用例选择合适的工具。

关于hadoop - 动态模式的解决方案 - HIVE/AVRO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49517554/

相关文章:

hadoop - hadoop的classpath在哪里设置

hadoop - 从 hdfs 读取数据并将其存储到 hbase?

java - 在java客户端中更改derbyDB架构 'on the fly'

mysql - 将 XML 文件自动转换为 SQL 数据库的方法?

amazon-web-services - AWS Proton 参数 - 阐明如何在 CF 模板中使用 schema.yaml 参数

hadoop - 在 linux 上更改 hdfs 中现有用户的权限

hadoop - Mahout 运行分布式推荐给出空文件

hadoop - hive 外部表中的 RELY 约束是什么?

hadoop - 默认情况下,HIVE 元数据存储在哪里?

java - Hive ClassNotFoundException 即使所有 jar 都添加到 Maven 存储库中