【发布时间】:2022-09-29 19:35:22
【问题描述】:
我无法在 Hive 中的分区表上导入数据。
这是我创建表格的方式
CREATE TABLE IF NOT EXISTS title_ratings
(
tconst STRING,
averageRating DOUBLE,
numVotes INT
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
TBLPROPERTIES("skip.header.line.count"="1");
然后我将数据加载到其中:LOAD DATA INPATH '/title.ratings.tsv.gz' INTO TABLE eval_hive_db.title_ratings;
到这里为止一切正常。现在我想创建一个动态分区表。首先,我设置了这些参数:
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
我现在创建我的分区表:
CREATE TABLE IF NOT EXISTS title_ratings_part
(
tconst STRING,
numVotes INT
)
PARTITIONED BY (averageRating DOUBLE)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\n'
STORED AS TEXTFILE;
insert into title_ratings_part partition(title_ratings) select tconst, averageRating, numVotes from title_ratings;
(顺便说一下,我也试过用 numVotes 代替)
我收到这个错误:FAILED: ValidationFailureSemanticException eval_hive_db.title_ratings_part: Partition spec {title_ratings=null} contains non-partition columns
有人可以帮助我吗? 理想情况下,我想通过 averageRating 对表进行分区(小于 2、介于 2 和 4 之间以及大于 4)
【问题讨论】: