如何将多个文件加载到配置单元表中?

ui7jx7zq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(338)

我有很多10mb的日志,我需要加载到Hive这个。稍后,我需要向现有表中再添加几个日志文件。有人能帮我吗?

dkqlctbz

dkqlctbz1#

a) 可以多次使用以下命令加载多个文件:

LOAD DATA INPATH 'file_1/path/hdfs' INTO TABLE tablename;
LOAD DATA INPATH 'file_2/path/hdfs' INTO TABLE tablename;
.......

or

LOAD DATA LOCAL INPATH 'file_1/path/local' INTO TABLE tablename;
LOAD DATA LOCAL INPATH 'file_2/path/local' INTO TABLE tablename;

....
into关键字在一个文件之后附加数据文件。不要误用覆盖。
b) 当文件位于一个目录中时:

LOAD DATA INPATH 'dir/path/hdfs' INTO TABLE tablename;
or,
LOAD DATA LOCAL INPATH 'dir/path/local' INTO TABLE tablename;

imp:当目录包含非数据文件(很可能在hdfs中)时,上面的命令抛出错误。例如,pig(或其他工具)生成了一个名为my\ u data\ u dir的dir。在myu data目录下有两个数据文件/myu data目录/part-m-00000和/myu data目录/part-m-00001。还有一个名为/my\u data\u dir/\u logs的日志文件
在这种情况下,如果您运行上面的命令,它会在提到日志文件时出错。删除日志文件和以上命令工作正常。

w8f9ii69

w8f9ii692#

为什么不通过指定某个位置在配置单元中创建一个外部表并将文件转储到该特定位置呢。您的外部表将自动拾取转储在该文件夹中的任何少数文件(如果架构相同)。

6l7fqoea

6l7fqoea3#

只需使用标准配置单元语法:

LOAD DATA INPATH 'filepath' INTO TABLE tablename

这里filepath可以指:
相对路径相对路径,如 project/data1 绝对路径,如 /user/hive/project/data1 具有scheme和(可选)权限的完整uri,例如 hdfs://namenode:9000/user/hive/project/data1 filepath可以是一个目录,并且该目录中的所有文件都将移动到表中。
来源:hive语言手册

相关问题