【问题标题】:Insert partitioned data into partitioned hive table将分区数据插入分区 hive 表
【发布时间】:2015-10-29 11:20:44
【问题描述】:

我已经使用带有列 id 的 Pig Multistorage 将数据存储在 hdfs 中。

所以数据存储为

/output/1/part-0000
/output/2/
/output/3/

现在我在 hive 中创建了一个分区表,我想将 /output 文件夹中的数据加载到这个分区表中。有什么方法可以实现吗?

【问题讨论】:

    标签: hadoop hive apache-pig hadoop-partitioning


    【解决方案1】:

    首先,您创建一个临时配置单元表,您可以在其中加载来自 pig 输出的所有数据。
    然后,您从临时表加载到您的实际分区配置单元表。
    如下所示:

    FROM emp_external temp INSERT OVERWRITE TABLE emp_partition PARTITION(country) SELECT temp.id,temp.name,temp.dept,temp.sal,temp.country;   
    

    否则,您可以针对此案例探索 Hcatlog。

    【讨论】:

      【解决方案2】:

      不确定您是要将输出文件夹中的数据(由 pig 创建)插入到现有表中,还是将输出文件夹中的数据加载到新的 hive 分区表中。

      如果要将数据加载到新的配置单元表中,可以创建一个指向输出文件夹的新分区表

      如果您希望将数据加载到现有的 hive 表中,那么您可以像@Aman 提到的那样创建一个临时表并插入到目标表中

      您可以将 hdfs 中的文件从 output/ 移动/复制到 hive 表位置。

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        将 Hive 模式分配给以分区列(Alter table Add Partition)作为列 ID 的猪输出位置。现在两者都是 hive 表,您可以在分区列上使用 where 子句来移动数据。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-10
          • 1970-01-01
          • 2018-01-03
          • 2018-07-11
          • 2015-09-13
          • 2023-04-02
          • 1970-01-01
          • 2017-03-01
          相关资源
          最近更新 更多