Impala 表的 LOAD DATA LOCAL INPATH 问题
Posted
技术标签:
【中文标题】Impala 表的 LOAD DATA LOCAL INPATH 问题【英文标题】:LOAD DATA LOCAL INPATH issue with Impala table 【发布时间】:2017-07-18 07:43:27 【问题描述】:我有一个具有以下结构的 Impala 表“ca1”
[abcd.us.localhost.com:21000] > desc ca1;
Query: describe ca1
+-------+--------+---------+
| name | type | comment |
+-------+--------+---------+
| speed | double | |
| dist | double | |
+-------+--------+---------+
Fetched 2 row(s) in 0.01s
我想使用 LOAD DATA LOCAL INPATH 加载该表中的数据,因为我的文件“file30a147fdbcea.txt”存在于本地文件系统中,但我遇到以下错误,而在 Hive 中也有同样的问题. 查询:
[abcd.us.localhost.com:21000] > load data local inpath
'/tmp/RtmpWPwtl0/file30a147fdbcea.txt' into table ca1;
错误:AnalysisException:第 1 行中的语法错误: 加载数据本地路径'/tmp/RtmpWPwtl... ^ 遇到:标识符 预期:INPATH
原因:异常:语法错误
谁能帮我解决我在这里缺少的东西。
【问题讨论】:
【参考方案1】:Impala 是 Cloudera 产品,它的 LOAD DATA 语句仅从 HDFS 导入文件,而不是从本地文件系统导入文件。
完整语法:
LOAD DATA INPATH 'hdfs_file_or_directory_path' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
LOAD DATA LOCAL INPATH 适用于 Hive 命令行/直线,但不适用于 Impala,尽管 Impala 写入 Hive db。
【讨论】:
【参考方案2】:我认为下面的代码会起作用。根据您的文本文件更改分隔符('|')。
LOAD DATA LOCAL INFILE '/tmp/RtmpWPwtl0/file30a147fdbcea.txt' INTO TABLE ca1 fields terminated by '|' lines terminated by '\n';
【讨论】:
sasi: 非常感谢您的回答,但我仍然注意到错误 > LOAD DATA LOCAL INFILE '/tmp/RtmpWPwtl0/file30a153ae2e38.txt' into table c90;查询:将 DATA LOCAL INFILE '/tmp/RtmpWPwtl0/file30a153ae2e38.txt' 加载到表 c90 错误:AnalysisException:第 1 行中的语法错误:加载 DATA LOCAL INFILE '/tmp/RtmpWPwtl ... ^ 遇到:IDENTIFIER 预期:INPATH CAUSED BY : 例外:语法错误以上是关于Impala 表的 LOAD DATA LOCAL INPATH 问题的主要内容,如果未能解决你的问题,请参考以下文章
mysql 语句LOAD DATA INFILE高效导入数据
Mybatis拦截器 mysql load data local 内存流处理
MySQL:启用 LOAD DATA LOCAL INFILE