我在cloudera上运行hive和hue。我有以下文本文件上传到hdfs。我正试图在按id分区的配置单元中创建一个外部表。不管出于什么原因,它都不起作用。
/用户/test2/test.csv
id,name,age
1,sam,10
2,john,5
1,rick,4
Hive:
CREATE EXTERNAL TABLE IF NOT EXISTS testDB (
name STRING,
age INT
)
COMMENT 'This is the test database'
PARTITIONED BY (id INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/test2/'
TBLPROPERTIES ("skip.header.line.count" = "1");
在hue,hive编辑器上,当我试图查看示例数据时,它说 list index out of range
. 不知道这是什么。如果我删除partitioned by,外部表将正常工作。
3条答案
按热度按时间ia2d9nvy1#
所以我终于解决了我的问题。下面是我的解决方案。
我使用的是clouderavm-5.4.2,当我启动hue时,hue中的hive设置指向hiveserver2;但是我使用hivecli创建了表。因此,该表基本上只存在于hiveserver1中。
解决方案:不要使用hivecli,而是用beeline创建表,然后hue中的所有内容都可以工作。
pdkcd3nj2#
位于“/user/test2/test.csv”上的数据由三列构成,但为表“testdb”定义的架构包含两列,出现此错误是正常的。必须通过添加id列来更新脚本:
oknwwptz3#
您没有对数据进行分区,因为您尚未创建它。您应该遵循3个步骤:
1-装载指向.csv文件的数据。
创建分区数据
将上一个表中的数据插入到最后一个表中。
insert into table testdb partition(archive)从tablename中选择name、age;
希望这对你有帮助。