我尝试使用以下命令在蜂巢中创建表:
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)
有人可以解决吗?
答案 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;
希望它会有所帮助:)