Hive PARTITIONED BY,列表索引超出范围错误?

时间:2015-08-20 16:00:23

标签: hadoop hive hue

我在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");
在Hue,hive编辑器上,当我试图查看示例数据时,它说list index out of range。不确定这是什么。如果我删除分区,外部表将正常工作。

3 个答案:

答案 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/';
  1. 创建分区数据
  2. 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");
    
    1. 将您上一张桌子的数据插入决赛桌。

        

      插入表testDB   分区(存档)选择名称,年龄来自   表名;

    2. 希望这对你有所帮助。

答案 2 :(得分:0)

所以我终于解决了我的问题。以下是我的解决方案。

我正在使用Cloudera vm - 5.4.2,当我启动Hue时,Hue中的Hive设置指向HiveServer2;但我使用Hive CLI创建了表。所以基本上该表只存在于HiveServer1中。

解决方案: 而不是使用Hive CLI,直接创建表,那么Hue中的所有内容都可以正常工作。