Hadoop 如何将多个文件加载到配置单元中的表中?
有一个目录包含多个尚待分析的文件,例如,file1、file2、file3 我想Hadoop 如何将多个文件加载到配置单元中的表中?,hadoop,hive,Hadoop,Hive,有一个目录包含多个尚待分析的文件,例如,file1、file2、file3 我想 将路径/to/*”中的数据加载到表demo中 而不是 将路径'path/to/file1'中的数据加载到表demo中 将路径'path/to/file2'中的数据加载到表demo中 将路径'path/to/file3'中的数据加载到表demo中 然而,它就是不起作用。有没有更简单的方法来实现这一点?1。 在路径中加载数据是一种HDFS元数据操作 它唯一能做的就是将文件从当前位置移动到表位置。 同样,“移动”(与“复
将路径/to/*”中的数据加载到表demo中
而不是
将路径'path/to/file1'中的数据加载到表demo中
将路径'path/to/file2'中的数据加载到表demo中
将路径'path/to/file3'中的数据加载到表demo中
然而,它就是不起作用。有没有更简单的方法来实现这一点?1。
在路径中加载数据
是一种HDFS元数据操作
它唯一能做的就是将文件从当前位置移动到表位置。
同样,“移动”(与“复制”不同)是一种元数据操作,而不是数据操作
2.
如果使用OVERWRITE关键字,则目标表的内容
(或分区)将被删除并替换为引用的文件
按文件路径;否则,filepath引用的文件将添加到
桌子
3.
或
或
或者(来自bash)
1.
在路径中加载数据
是一种HDFS元数据操作
它唯一能做的就是将文件从当前位置移动到表位置。
同样,“移动”(与“复制”不同)是一种元数据操作,而不是数据操作
2.
如果使用OVERWRITE关键字,则目标表的内容
(或分区)将被删除并替换为引用的文件
按文件路径;否则,filepath引用的文件将添加到
桌子
3.
或
或
或者(来自bash)
以路径作为位置参数生成配置单元表将自动读取所述位置中的所有文件。
例如:
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
创建[外部]表db.tbl(
第1列字符串,
第2列(内部…)
行格式分隔
以(分隔符)结尾的字段
以“\n”结尾的行
位置“/path/to/”生成一个配置单元表,其中路径作为位置参数,将自动读取所述位置中的所有文件。
例如:
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
创建[外部]表db.tbl(
第1列字符串,
第2列(内部…)
行格式分隔
以(分隔符)结尾的字段
以“\n”结尾的行
位置“/path/to/”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) 蜂巢>
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) 蜂巢>
将路径“filepath”[OVERWRITE]中的数据[LOCAL]加载到表tablename[分区(partcol1=val1,partcol2=val2…)
文件路径可以是:
相对路径,如project/data1;绝对路径,如/user/hive/project/data1;带有scheme和(可选)权限的完整URI,如hdfs://namenode:9000/user/hive/project/data1
加载到的目标可以是表或分区。如果表已分区,则必须通过为所有分区列指定值来指定表的特定分区
filepath可以引用一个文件(在这种情况下,配置单元会将文件移动到表中),也可以是一个目录(在这种情况下,配置单元会将该目录中的所有文件移动到表中)。在任何一种情况下,filepath都会寻址一组文件。将路径“filepath”[OVERWRITE]中的数据[LOCAL]加载到表tablename[分区(partcol1=val1,partcol2=val2…)
文件路径可以是:
相对路径,如project/data1;绝对路径,如/user/hive/project/data1;带有scheme和(可选)权限的完整URI,如hdfs://namenode:9000/user/hive/project/data1
加载到的目标可以是表或分区。如果表已分区,则必须通过为所有分区列指定值来指定表的特定分区
filepath可以引用一个文件(在这种情况下,配置单元会将文件移动到表中),也可以是一个目录(在这种情况下,配置单元会将该目录中的所有文件移动到表中)。在任何一种情况下,filepath都会寻址一组文件。将数据加载到路径'path/to'覆盖到表demo中
会将目录中的所有文件移动到表中,但是,这也会将移动到
目录。加载数据inpath'path/to'overwrite into table demo
会将目录中的所有文件移动到表中。但是,这也会将移动到
目录。
SET mapred.input.dir.recursive=true;
load data inpath '/hallfolder/*' into table alltable;