HIVE LOAD DATA INPATH

时间:2019-03-14 10:26:03

标签: hadoop hive

我尝试使用以下命令在蜂巢中创建表:

CREATE TABLE apple (dates STRING, open INT, high INT, low INT, close INT, adj_close DECIMAL, vol INT) row format delimited fields terminated by ',' lines terminated by '\n' tblproperties ("skip.header.line.count"="1");**

然后我尝试使用以下命令加载数据:

LOAD DATA INPATH '/user/root/stockdata/APPL.csv' OVERWRITE INTO TABLE apple;

文件 APPL.csv 存储在HDFS中

执行上述操作会导致以下错误:

  

错误:编译语句时出错:失败:SemanticException   无法将数据加载到目标表。错误:您所使用的文件   尝试加载与目标文件格式不匹配   表。 (状态= 42000,代码= 40000)

有人可以解决吗?

3 个答案:

答案 0 :(得分:1)

直接将文件放入表格位置。

hdfs dfs -copyFromLocal /user/root/stockdata/APPL.csv' /user/<username>/apple 

用表位置替换目标位置。您可以使用DESCRIBE FORMATTED tablename进行检查。

答案 1 :(得分:1)

您可以通过多种方式将数据加载到表中!!但是请确保表格格式有效。

  • 首先将特定表放入表位置。

      

    语法:hadoop fs -put source_path destination_hive_table_location

         

    例如:hadoop fs -put APPL.csv /user/test.db/apple/APPL.csv

  • 一旦Hadoop文件系统中有文件,我们就可以通过配置单元控制台中的load命令将文件加载到表中

  

将路径'/user/test.db/apple/APPL.csv'中的数据加载到表apple中;

PS:您正在加载CSV数据。因此,请确保该表具有正确的文本输入和输出文件格式。

STORED AS INPUTFORMAT
  'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

答案 2 :(得分:0)

也许这与创建表有关 在创建表格的配置单元查询末尾添加“ STORED AS TEXTFILE”时,我遇到了相同的错误

我桌前是

    CREATE TABLE %(output_db)s.%(selected_query_tbl)s
    (
       query                     VARCHAR(255)
      ,ATC_beyond_10_percentage  DECIMAL(25,25)
      ,ATC_rate                  DECIMAL(25,25)
      ,block_5_tau               DECIMAL(25,25)
      ,Kendall_tau               DECIMAL(25,25)
    );

现在是

     CREATE TABLE %(output_db)s.%(selected_query_tbl)s
    (
       query                     VARCHAR(255)
      ,ATC_beyond_10_percentage  DECIMAL(25,25)
      ,ATC_rate                  DECIMAL(25,25)
      ,block_5_tau               DECIMAL(25,25)
      ,Kendall_tau               DECIMAL(25,25)
    )STORED AS TEXTFILE;

希望它会有所帮助:)