我有10MB的日志,我需要将其加载到HIVE中。稍后我需要在现有表中添加更多日志文件。有人可以帮我这个吗?
答案 0 :(得分:11)
只需使用标准的Hive语法:
LOAD DATA INPATH 'filepath' INTO TABLE tablename
这里的filepath可以参考:
project/data1
/user/hive/project/data1
hdfs://namenode:9000/user/hive/project/data1
filepath 可以是目录,该目录中的所有文件都将被移动到表中。
答案 1 :(得分:2)
为什么不通过指定某个位置并将文件转储到该特定位置来在Hive中创建外部表。您的外部表将自动获取该文件夹中转储的任何文件(如果架构相同)。
答案 2 :(得分:1)
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关键字将数据文件追加到文件之后。不要误用OVERWRITE。
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_data_dir的目录。在my_data_dir下有两个数据文件 / my_data_dir / part-m-00000 & / my_data_dir / part-m-00001 。还有一个名为 / my_data_dir / _logs
的日志文件在这种情况下,如果您运行上面的命令,则会提示错误提及日志文件。删除日志文件和上面的命令工作正常。