【问题标题】:How to import data from parquet file to existing Hadoop table?如何将 parquet 文件中的数据导入现有的 Hadoop 表?
【发布时间】:2021-12-10 02:43:28
【问题描述】:

我在我的 Hadoop 集群中创建了一些表,并且我有一些 parquet 表,其中包含要放入的数据。如何执行此操作?我想强调一下,我已经有空表,是用一些 DDL 命令创建的,而且它们也存储为 parquet,所以我不必创建表,只需要导入数据。

【问题讨论】:

    标签: hadoop hive parquet


    【解决方案1】:

    您应该利用 hive 功能,使您能够使用 parquet 导入数据。即使您不想创建新表。我认为这意味着 parquet 表模式与现有的空表相同。如果不是这种情况,那么下面将无法正常工作。您必须选择所需的列。那里

    在这里,您已经拥有的空表称为emptyTable,位于myDatabase。您要添加的新数据位于/path/to/parquet/hdfs_path_of_parquet_file

    CREATE TABLE myDatabase.my_temp_table
      LIKE PARQUET '/path/to/parquet/hdfs_path_of_parquet_file'
      STORED AS PARQUET
      LOCATION '/path/to/parquet/';
    INSERT INTO myDatabase.emptyTable as 
      SELECT * from myDatabase.my_temp_table;
    DELETE TABLE myDatabase.my_temp_table;
    

    您说您不想创建表格,但我认为上面的内容有点欺骗您的问题。

    另一个选项再次假设 parquet 的架构已经与您已经拥有的空表定义相同:

    ALTER TABLE myDatabase.emptyTable SET LOCATION '/path/to/parquet/';
    

    这在技术上不是创建一个新表,但确实需要更改您已经创建的表,所以我不确定这是否可以接受。

    您说这是一个蜂巢的东西,所以我已经给了您蜂巢的答案,但如果emptyTable 表定义以您拥有/path/to/parquet/hdfs_path_of_parquet_file 的确切格式理解镶木地板,您可以将此文件放入定义的文件夹中通过表定义:

    show create table myDatabase.emptyTable;
    

    这会自动将数据添加到现有表中。提供匹配的表定义。 Hive 是读取模式,因此您实际上不需要“导入”,只需启用 Hive 即可“解释”。

    【讨论】:

    • 非常感谢,我明天上班测试一下。希望没有人完成这项任务:)
    猜你喜欢
    • 2012-12-13
    • 1970-01-01
    • 2018-11-21
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多