Hive - 复制带有分区的数据库模式并在另一个 Hive 实例中重新创建
Hive - Copy database schema with partitions and recreate in another hive instance
我已经将具有分区配置单元 table 的数据库的数据和文件夹结构从一个 HDFS 实例复制到另一个。
如何对配置单元元数据执行相同的操作?我需要新的 HDFS 实例的配置单元让这个数据库及其 tables 使用它们现有的分区定义,就像它在原始位置一样。而且,当然,他们通常需要通过更新 hdfs 外部 table 位置来维护其原始模式。
乐于使用直接的 hive 命令、spark 或任何开源且随时可用的通用 CLI 实用程序。我没有实际的 hadoop 集群(这是云存储),所以请避免依赖映射 reduce/etc(如 Sqoop)的答案。
使用 Hive 命令:
SHOW CREATE TABLE tablename;
这将打印 create table 句子。将 table 类型复制并更改为外部、位置、架构、列名(如有必要)等,然后执行。
创建 table 后,使用此命令创建分区元数据
MSCK [REPAIR] TABLE tablename;
Amazon Elastic MapReduce (EMR) 版本的 Hive 上的等效命令是:
ALTER TABLE tablename RECOVER PARTITIONS;
这将添加 Hive 分区元数据。请在此处查看手册:RECOVER PARTITIONS
我已经将具有分区配置单元 table 的数据库的数据和文件夹结构从一个 HDFS 实例复制到另一个。
如何对配置单元元数据执行相同的操作?我需要新的 HDFS 实例的配置单元让这个数据库及其 tables 使用它们现有的分区定义,就像它在原始位置一样。而且,当然,他们通常需要通过更新 hdfs 外部 table 位置来维护其原始模式。
乐于使用直接的 hive 命令、spark 或任何开源且随时可用的通用 CLI 实用程序。我没有实际的 hadoop 集群(这是云存储),所以请避免依赖映射 reduce/etc(如 Sqoop)的答案。
使用 Hive 命令:
SHOW CREATE TABLE tablename;
这将打印 create table 句子。将 table 类型复制并更改为外部、位置、架构、列名(如有必要)等,然后执行。
创建 table 后,使用此命令创建分区元数据
MSCK [REPAIR] TABLE tablename;
Amazon Elastic MapReduce (EMR) 版本的 Hive 上的等效命令是:
ALTER TABLE tablename RECOVER PARTITIONS;
这将添加 Hive 分区元数据。请在此处查看手册:RECOVER PARTITIONS