如何将多个文件加载到hive中的表中?

wfsdck30  于 2021-05-29  发布在  Hadoop
关注(0)|答案(4)|浏览(1287)

有一个目录包含多个有待分析的文件,例如file1、file2、file3。
我想 load data inpath 'path/to/*' overwrite into table demo 而不是 load data inpath 'path/to/file1' overwrite into table demo load data inpath 'path/to/file2' overwrite into table demo load data inpath 'path/to/file3' overwrite into table demo .
然而,它就是不起作用。有没有更简单的方法来实现这一点?

fslejnso

fslejnso1#

将数据[local]inpath'filepath'[overwrite]加载到表tablename[partition(partcol1=val1,partcol2=val2…)]
文件路径可以是:

相对路径,如project/data1绝对路径,如/user/hive/project/data1带有scheme和(可选)权限的完整uri,如hdfs://namenode:9000/用户/配置单元/项目/数据1

加载到的目标可以是表或分区。如果表已分区,则必须通过为所有分区列指定值来指定表的特定分区。
filepath可以引用一个文件(在这种情况下,hive会将文件移到表中),也可以是一个目录(在这种情况下,hive会将该目录中的所有文件移到表中)。无论哪种情况,filepath都会寻址一组文件。

xmjla07d

xmjla07d2#

1) 目录包含三个文件

-rw-r--r--   1 hadoop supergroup        125 2017-05-15 17:53 /hallfolder/hall.csv
-rw-r--r--   1 hadoop supergroup        125 2017-05-15 17:53 /hallfolder/hall1.csv
-rw-r--r--   1 hadoop supergroup        125 2017-05-15 17:54 /hallfolder/hall2.csv

2) 启用此命令

SET mapred.input.dir.recursive=true;

3) Hive>

load data  inpath '/hallfolder/*' into table alltable;
uplii1fm

uplii1fm3#

1. load data inpath 是hdfs元数据操作。

它所做的唯一事情就是将文件从当前位置移动到表位置。
同样,“移动”(不像“复制”)是一个元数据操作,而不是数据操作。

2.

如果使用overwrite关键字,则目标表(或分区)的内容将被删除并替换为filepath引用的文件;否则,filepath引用的文件将添加到表中。
语言手册dml加载文件到表中

3.

load data inpath 'path/to/file1' into table demo;
load data inpath 'path/to/file2' into table demo;
load data inpath 'path/to/file3' into table demo;

或者

load data inpath 'path/to/file?' into table demo;

dfs -mv path/to/file? ...{path to demo}.../demo

或(来自bash)

hdfs dfs -mv path/to/file? ...{path to demo}.../demo
aiqt4smr

aiqt4smr4#

生成一个以路径为位置参数的配置单元表将自动读取所述位置中的所有文件。例如:

CREATE [EXTERNAL] TABLE db.tbl(
column1 string,
column2 int ...)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY (delimiter)
LINES TERMINATED BY '\n'
LOCATION '/path/to/' <- DO NOT POINT TO A SPECIFIC FILE, POINT TO THE DIRECTORY

配置单元将自动解析文件夹中的所有数据,并将其“强制馈送”到您创建的表语句中。只要该路径中的所有文件的格式相同,就可以继续。

相关问题