配置单元加载数据inpath

zfciruhq  于 2021-05-27  发布在  Hadoop
关注(0)|答案(3)|浏览(407)

我尝试使用以下命令在配置单元中创建表:

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)
有人能帮忙解决这个问题吗?

xwmevbvl

xwmevbvl1#

您可以通过多种方式将数据加载到表中!!但要确保表格式是有效的。
首先将特定表放入表位置。
语法:hadoop fs-put source\u path destination\u hive\u table\u location
例如:hadoop fs-put appl.csv/user/test.db/apple/appl.csv
一旦文件进入hadoop文件系统,我们就可以通过hive控制台中的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'
tvz2xvvm

tvz2xvvm2#

也许这与创建表有关,我遇到了相同的错误,我通过在创建表的配置单元查询的末尾添加“存储为textfile”来解决它
早些时候我的table

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;

希望有帮助:)

yzuktlbb

yzuktlbb3#

将文件直接放入表位置。

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

用表位置替换目标位置。你可以使用 DESCRIBE FORMATTED tablename .

相关问题