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 内存流处理

load data local file实验报告

MySQL:启用 LOAD DATA LOCAL INFILE

mysql load data local infile问题

Load data local infile 实验报告