【问题标题】:Impact of Repeatedly Creating and Deleting Hive Table重复创建和删除 Hive 表的影响
【发布时间】:2016-11-10 06:46:45
【问题描述】:

我有一个用例,需要大约 200 个蜂巢拼花桌。 我需要从平面文本文件中加载这些镶木地板表。但是我们不能直接从平面文本文件中加载拼花表。 所以我使用以下方法

  1. 创建了一个临时托管文本表。
  2. 已加载带有文本数据的临时表。
  3. 已创建外部镶木地板。
  4. 使用选择查询加载带有文本表的镶木地板表。
  5. 已删除临时文本表的文本文件(但将表保留在 Metastore 中)。

由于这种方法将临时元数据(用于 200 个表)保存在元存储中。所以我有第二种方法是我也会删除临时文本表以及来自 hdfs 的文本文件。下次重新创建临时表并在创建镶木地板后删除。

现在,由于我需要每 2 小时对所有 200 个表执行上述步骤,所以从 Metastore 创建和删除表会影响生产期间集群中的任何内容吗?

哪种方法会影响生产、将临时元数据保存在 Metastore 中、从 Hive Metastore 创建和删除表(元数据)?

【问题讨论】:

  • “我们不能直接从纯文本文件加载镶木地板”——真的吗?是什么让你相信?你不能只创建一个EXTERNAL表来映射你的输入文本和INSERT INTO Parquet SELECT FROM ExtText吗?
  • 旁注:我现在完全相信实现笨拙的 LOAD 指令是 FB 的一个糟糕的设计选择。它只是让业余爱好者相信您必须将数据从 HDFS 中“加载”到 Hive——尽管实际上,Hive 无论如何都将其所有数据存储在 HDFS 上。
  • 感谢 Samson 的回复。 “你不能只创建一个 EXTERNAL 表来映射你的输入文本和 INSERT INTO Parquet SELECT FROM ExtText 吗?” -- 这与我在第 1 点到第 5 点中提到的相同。我是什么试图说要从文本文件加载镶木地板表,您首先需要创建一个文本表,然后只有您可以加载镶木地板表。因此,每次创建临时文本表都是一个好主意。因为到目前为止,我没有看到任何替代方案。如果可以分享任何其他想法将不胜感激。
  • 呃 - 您在第 1 点到第 5 点中提到的是一个 托管 TEXT 表和一个 external Parquet 表。但是现在您声称您的意思是一个 external TEXT 表(并且可能是一个 managed Parquet 表),这更有意义。
  • 对不起,让我换个方式试试。如果我创建一个 parquet 表(EXT 或 MANAGED),现在要加载它,我需要在 parquet 文件或某个现有表中包含数据(我可以执行 SELECT 查询)。但是我在文本文件中有数据,所以我正在创建一个 TEXT 表(EXT 或 MANG)然后运行 ​​"INSERT INTO TABLE AS SELECT" 查询。我只是想知道由于每 2 小时再次创建 TEXT 表 200 次而对 Hive 元存储有任何影响。

标签: hadoop hive metastore


【解决方案1】:

哪种方法会影响生产,将临时元数据保存在 Metastore,从 hive 创建和删除表(元数据) 元存储?

不,没有影响,HiveMetastore 的后端应该能够轻松处理每小时 200 * n 次更改。如果您不确定从 50 个表开始并监控后端数据库性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2017-01-29
    • 1970-01-01
    相关资源
    最近更新 更多