【问题标题】:Solution for Dynamic Schemas - HIVE/AVRO动态模式解决方案 - HIVE/AVRO
【发布时间】:2018-09-06 03:18:53
【问题描述】:

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

【问题讨论】:

  • 源可以只发送 Avro 吗?如果没有,您能否将事件摄取到 NiFi 或 Kafka 中,例如,然后从中生成 Avro?
  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 Minimal, Complete, Verifiable Example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。

标签: hadoop hive schema


【解决方案1】:

您可以遵循以下方法,这是您可以实施的多种解决此问题的方法之一。

1.创建 HBASE 表

  • 最初读取 AVRO 数据并在 HBASE 中创建表。(您可以使用 spark 高效地执行此操作)
  • HBASE 表甚至会在未来负责架构演变。

2。创建 Hive Wrapper 表

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

3.创建 ORC 表

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

4.您需要处理的事情

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

【讨论】:

  • Hive 可以很好地处理进化...getindata.com/schema-evolution-with-avro-and-hive 包含 HBase 的额外工作的目的是什么?
  • 在理想情况下,您可能不需要 HBase,但如果您只是在 Hive 中维护数据,并且如果您的源正在更改数据类型或列名或任何此类更改,那么如果您的数据很容易处理在 HBase 中。出于更实际的目的,最好将数据放在 HBase 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
相关资源
最近更新 更多