将CSV数据加载到Hive表时出错。

8

我有一个在Hadoop上的CSV文件和一个Hive表,现在我想将该CSV文件加载到这个Hive表中。

我使用了以下命令:LOAD DATA local 'path/to/csv/file' overwrite INTO TABLE tablename;

但是遇到了如下错误:

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>'
)

注意:我正在使用RJDBC连接在R中尝试此操作。
3个回答

6
我认为将CSV加载到Hive表的命令是(当CSV在HDFS中时)。
LOAD DATA INPATH '/user/test/my.csv' INTO TABLE my_test;

6

由于您的文件已经存在于HDFS中,因此请删除关键字“Local”

将数据加载到表格中:LOAD DATA inpath '路径/到/CSV/文件' overwrite INTO TABLE 表格名;


0

我开发了一个工具,可以从CSV文件生成Hive脚本。以下是一些文件生成的示例。 工具 -- https://sourceforge.net/projects/csvtohive/?source=directory

  1. 使用浏览器选择CSV文件,并设置Hadoop根目录,例如:/user/bigdataproject/

  2. 工具生成带有所有CSV文件的Hadoop脚本,以下是插入CSV到Hadoop的生成Hadoop脚本示例:

    #!/bin/bash -v<br>
    hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv
    hive -f ./AllstarFull.hive<br>

    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

  3. 生成的Hive脚本示例:

    CREATE DATABASE IF NOT EXISTS lahman;<br>
    USE lahman;<br>
    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;<br>
    LOAD DATA INPATH '/user/bigdataproject/AllstarFull.csv' OVERWRITE INTO TABLE AllstarFull;<br>
    SELECT * FROM AllstarFull;

谢谢
Vijay


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接