如何在不删除文件的情况下从HDFS加载数据到配置单元

时间:2016-06-30 20:00:47

标签: hive

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

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

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

任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分: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'
...

参考:

答案 1 :(得分:0)

外部表始终拥有自己的位置(文件夹)。使用hadoop distcp <srcurl> <desturl>命令或hdfs dfs -cp ...将文件复制到表位置。请参阅https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#cp以获取参考