gpt4 book ai didi

hadoop - 无法加载 Hive 分区表中的数据

转载 作者:可可西里 更新时间:2023-11-01 14:22:49 33 4
gpt4 key购买 nike

我使用以下查询在 Hive 中创建了一个表:

create table if not exists employee(CASE_NUMBER String,
CASE_STATUS String,
CASE_RECEIVED_DATE DATE,
DECISION_DATE DATE,
EMPLOYER_NAME STRING,
PREVAILING_WAGE_PER_YEAR BIGINT,
PAID_WAGE_PER_YEAR BIGINT,
order_n int) partitioned by (JOB_TITLE_SUBGROUP STRING) row format delimited fields terminated by ',';

我尝试使用以下查询将数据加载到创建表中:

LOAD DATA INPATH '/salary_data.csv' overwrite into table employee  partition (JOB_TITLE_SUBGROUP);

对于分区表,我什至设置了以下配置:

set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partition=true;

但是我在执行加载查询时遇到以下错误:

Your query has the following error(s):

Error while compiling statement: FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Invalid partition key & values; keys [job_title_subgroup, ], values [])

请帮忙。

最佳答案

如果要将数据加载到 Hive 分区,则必须在 LOAD DATA 查询中提供分区本身的值。所以在这种情况下,您的查询将是这样的。

LOAD DATA INPATH '/salary_data.csv' overwrite into table employee partition (JOB_TITLE_SUBGROUP="Value");

其中“值”是您要加载数据的分区的名称。原因是因为 Hive 将使用“值”来创建将要存储您的 .csv 的目录,这将是这样的:.../employee/JOB_TITLE_SUBGROUP=Value。我希望这会有所帮助。

检查 the documentation有关 LOAD DATA 语法的详细信息。

已编辑

由于表具有动态分区,一种解决方案是将 .csv 加载到外部表(例如 employee_external),然后执行 INSERT 命令,如下所示:

INSERT OVERWRITE INTO TABLE employee PARTITION(JOB_TITLE_SUBGROUP)
SELECT CASE_NUMBER, CASE_STATUS, (...), JOB_TITLE_SUBGROUP
FROM employee_external

关于hadoop - 无法加载 Hive 分区表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38816288/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com