我在Cloudera上运行Hive和Hue。 我将以下文本文件上传到hdfs。我正在尝试在由id分区的hive中创建一个外部表。无论出于何种原因,它都无法正常工作。
/user/test2/test.csv
id,name,age
1,sam,10
2,john,5
1,rick,4
蜂巢:
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");
list index out of range
。不确定这是什么。如果我删除分区,外部表将正常工作。
答案 0 :(得分:0)
位于'/user/test2/test.csv'上的数据是由三列构成的,但是为'testDB'表定义的模式包含两列,这是正常的,你有这个错误。 您必须通过添加id列来更新脚本:
CREATE EXTERNAL TABLE IF NOT EXISTS testDB (
id INT,
name STRING,
age INT
)
...
答案 1 :(得分:0)
您没有对数据进行分区,因为您尚未创建数据。您应该遵循3个步骤:
1-挂载指向.csv文件的数据。
CREATE EXTERNAL TABLE TableName (id int, name string, age int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
STORED AS TEXTFILE LOCATION '/user/test2/';
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/other/location' TBLPROPERTIES ("skip.header.line.count" = "1");
将您上一张桌子的数据插入决赛桌。
插入表testDB 分区(存档)选择名称,年龄来自 表名;
希望这对你有所帮助。
答案 2 :(得分:0)
所以我终于解决了我的问题。以下是我的解决方案。
我正在使用Cloudera vm - 5.4.2,当我启动Hue时,Hue中的Hive设置指向HiveServer2;但我使用Hive CLI创建了表。所以基本上该表只存在于HiveServer1中。
解决方案: 而不是使用Hive CLI,直接创建表,那么Hue中的所有内容都可以正常工作。