8

我在 hadoop 中有一个 csv 文件,我有一个 Hive 表,现在我想将该 csv 文件加载到这个 Hive 表中

我已经使用 load 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 连接

4

3 回答 3

6

我认为将 CSV 加载到 Hive 表的命令是(当 CSV 在 HDFS 中时)。

LOAD DATA INPATH '/user/test/my.csv' INTO TABLE my_test;
于 2014-10-24T10:44:17.007 回答
6

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

LOAD DATA inpath 'path/to/csv/file' 覆盖 INTO TABLE 表名;

于 2014-10-26T20:49:20.063 回答
0

我开发了一个从 csv 文件生成配置单元脚本的工具。以下是有关如何生成文件的几个示例。工具——https: //sourceforge.net/projects/csvtohive/?source=directory

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

  2. 工具使用所有 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

  3. 生成的 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;

谢谢维杰

于 2015-06-30T05:55:39.150 回答