将csv数据加载到Hive表时出错

Tej*_*ury 8 hive r rjdbc

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

我用load LOAD DATA本地'path/to/csv/file'覆盖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>'
)
Run Code Online (Sandbox Code Playgroud)

注意:我正在尝试使用r中的RJDBC连接

sca*_*ser 6

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

LOAD DATA INPATH '/user/test/my.csv' INTO TABLE my_test;
Run Code Online (Sandbox Code Playgroud)


小智 6

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

路径'path/to/csv/file'中的LOAD DATA覆盖INTO TABLE tablename;


小智 0

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

  1. 使用浏览选择 CSV 文件并设置 hadoop 根目录 ex: /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

    Run Code Online (Sandbox Code Playgroud)

  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;
    Run Code Online (Sandbox Code Playgroud)

谢谢维杰