MAPREDUCE服务 MRS-导入导出Hive表/分区数据:操作步骤

时间:2024-10-16 17:58:34

操作步骤

  1. 以Hive客户端安装用户登录源端集群安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录,例如安装目录为“/opt/client”,请用户根据实际情况修改。

    cd /opt/client

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 如果集群开启了Kerberos认证,执行以下命令认证用户,否则跳过此步骤。

    kinit Hive业务用户

  5. 执行以下命令登录源端集群的Hive客户端。

    beeline

  6. 执行以下命令创建表“export_test”。

    create table export_test(id int) ;

  7. 执行以下命令向表“export_test”中插入数据。

    insert into export_test values(123);

  8. 在目标集群重复执行1-4,并执行以下命令创建存放表“export_test”导出后的HDFS路径。

    dfs -mkdir /tmp/export

  9. 执行以下命令登录目标集群的Hive客户端。

    beeline

  10. 导入导出表“export_test”。

    使用Hive Import/Export对表数据迁移时,支持以下几种场景,可以根据实际情况选择合适的导入导出方式。

    • 场景一:简单导出导入
      1. 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。

        export table export_test to 'hdfs://haclusterX/tmp/export';

      2. 在目标集群执行以下命令将10.a导出的表数据导入到表“export_test”中。

        import from '/tmp/export';

    • 场景二 :在导入时重命名表
      1. 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。

        export table export_test to 'hdfs://haclusterX/tmp/export';

      2. 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”中。

        import table import_test from '/tmp/export';

    • 场景三:导出分区数据并导入
      1. 在源端集群执行以下命令将表“export_test”的pt1和pt2分区导出到8创建的目录下。

        export table export_test partition (pt1="in", pt2="ka") to 'hdfs://haclusterX/tmp/export';

      2. 在目标集群执行以下命令将10.a导出的表数据导入到表“export_test”中。

        import from '/tmp/export';

    • 场景四:导出表数据并且将该数据导入到分区中
      1. 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。

        export table export_test to 'hdfs://haclusterX/tmp/export';

      2. 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”的pt1和pt2分区中。

        import table import_test partition (pt1="us", pt2="tn") from '/tmp/export';

    • 场景五:导入表数据时指定表的Location
      1. 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。

        export table export_test to 'hdfs://haclusterX/tmp/export';

      2. 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”中,且该表的Location为“/tmp/export”。

        import table import_test from '/tmp' location '/tmp/export';

    • 场景六:导入表数据为外部表
      1. 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。

        export table export_test to 'hdfs://haclusterX/tmp/export';

      2. 在目标集群执行以下命令将10.a导出的表数据导入到外部表“import_test”中。

        import external table import_test from '/tmp/export';

    导出表/分区数据时,存放表/分区数据的HDFS路径需提前创建,且该目录为空,否则导出失败。

    导出分区时,导出的表必须为分区表,且不支持导出同一个分区字段的多个分区值的数据;导入到表中分区时导入的表必须是分区表。

    导入数据时需注意:
    • 使用import from '/tmp/export';命令导入表是没有指定表名的场景,该场景导入的数据会保存到与源表名相同的表路径下,需注意以下两点:
      • 如果目标集群上不存在与源集群上同名的表,在导入表的过程中会创建该表。
      • 如果目标集群上已存在与源集群上同名的表,该表对应的HDFS目录下必须为空,否则导入失败。
    • 使用import external table import_test from '/tmp/export';命令导入表会将导出的表导入到指定的表中,需注意以下两点:
      • 如果目标集群上不存在与指定的表名相同的表,在导入表的过程中会创建该表。
      • 如果目标集群上已存在与指定的表名相同的表,该表对应的HDFS目录下必须为空,否则导入失败。

    haclusterX”为新增的自定义参数“dfs.namenode.rpc-address.haclusterX”中的“haclusterX”

support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24741.html