我在hadoop中有一个csv文件,我有一个配置单元表,现在我想把这个csv文件放入这个配置单元表中
我使用了加载load DATA local"path/to/csv/file"覆盖INTO TABLE表名;
最终出现以下错误:
Error in .verify.JDBC.result(r, "Unable to retrieve JDBC result set for ", :
Unable to retrieve JDBC result set for LOAD DATA local
'path/to/csv/file' overwrite INTO TABLE tablename
(Error while processing statement: FAILED:
ParseException line 1:16 missing INPATH at ''path/tp csv/file'' near '<EOF>'
)
注意:我正在r 中使用RJDBC连接进行尝试
我认为将CSV加载到配置单元表的命令是(当CSV在HDFS中时)。
LOAD DATA INPATH '/user/test/my.csv' INTO TABLE my_test;
由于您的文件已经存在于HDFS中,请删除关键字Local
LOAD DATA inpath"path/to/csv/file"覆盖INTO TABLE表名;
我开发了一个从csv文件生成配置单元脚本的工具。以下是一些关于如何生成文件的示例。工具--https://sourceforge.net/projects/csvtohive/?source=directory
-
使用Browse选择CSV文件,并设置hadoop根目录ex:/user/bigdataproject/
-
工具生成包含所有csv文件的Hadoop脚本,以下是生成Hadoop脚本,将csv插入Hadoop
#!/bin/bash -v
hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv hive -f ./AllstarFull.hive
hadoop fs -put ./Appearances.csv /user/bigdataproject/Appearances.csv hive -f ./Appearances.hive
hadoop fs -put ./AwardsManagers.csv /user/bigdataproject/AwardsManagers.csv hive -f ./AwardsManagers.hive
-
生成的配置单元脚本示例
CREATE DATABASE IF NOT EXISTS lahman;
USE lahman;
CREATE TABLE AllstarFull (playerID string,yearID string,gameNum string,gameID string,teamID string,lgID string,GP string,startingPos string) row format delimited fields terminated by ',' stored as textfile;
LOAD DATA INPATH '/user/bigdataproject/AllstarFull.csv' OVERWRITE INTO TABLE AllstarFull;
SELECT * FROM AllstarFull;
谢谢Vijay