【问题标题】:How to load data to hive from HDFS without removing the file如何在不删除文件的情况下从 HDFS 将数据加载到配置单元
【发布时间】:2016-07-01 19:15:10
【问题描述】:

我在单个 HDFS 文件夹中有多个文件。 我想将每个文件加载到不同的配置单元表中,并希望将源文件保存在同一位置。

我知道我们可以创建指向该目录的外部表。

是否可以创建指向特定文件的外部表?

谁能帮我解决这个问题。

【问题讨论】:

    标签: hive


    【解决方案1】:

    如果您有预定义数量的具有预定义名称的文件,您可以尝试使用基于 INPUT__FILE__NAME 虚拟列的 WHERE 子句的多表 INSERT。

    FROM some_db.some_external_table
    INSERT INTO table1
      SELECT a, b, c
      WHERE INPUT__FILE__NAME like '%/gabuzomeu.csv'
    INSERT INTO table2
      SELECT a, x, d, CAST(z AS FLOAT)
      WHERE INPUT__FILE__NAME like '%/wtf.csv'
    ...
    

    参考:

    【讨论】:

      【解决方案2】:

      外部表总是有它自己的位置(一个文件夹)。使用hadoop distcp <srcurl> <desturl> 命令或hdfs dfs -cp ... 将文件复制到表位置。参考https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#cp

      【讨论】:

        猜你喜欢
        • 2011-11-25
        • 2019-12-11
        • 2015-04-12
        • 2014-05-03
        • 1970-01-01
        • 2019-11-20
        • 1970-01-01
        • 1970-01-01
        • 2018-12-01
        相关资源
        最近更新 更多