簡體   English   中英

對一個配置單元表進行分區,並在另一個外部表的中間添加一列

[英]Partition a hive table with a column in middle from another external table

我創建了一個外部表,如下所示:

create external table if not exists complaints (date_received string, product string, sub_product string, issue string, sub_issue string, consumer_complaint_narrative string, state string, company_public_response string, company varchar(50), zipcode int, tags string, consumer_consent_provided string, submitted_via string, date_sent_company string, company_response string, timely_response string, consumer_disputed string, complaint_id int) row format delimited fields terminated by ',' stored as textfile location 'hdfs:hostname:8020/complaints/';

現在,我想創建另一個表,以狀態為partition的抱怨和新表,並從表中獲取所有數據。 如何做到這一點?

我嘗試了以下方法:

create external table if not exists complaints_new (date_received string, product string, sub_product string, issue string, sub_issue string, consumer_complaint_narrative string, company_public_response string, company varchar(50), zipcode int, tags string, consumer_consent_provided string, submitted_via string, date_sent_company string, company_response string, timely_response string, consumer_disputed string, complaint_id int) partitioned by (state varchar(20)) row format delimited fields terminated by ',' stored as textfile location 'hdfs://hostname:8020/complaints/';

SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.mapred.mode = nonstrict;

insert into table complaints_new partition(state) select * from complaints;

查詢失敗。

您在這里遇到了一些問題...您指向的位置相同,這意味着您將要讀取和覆蓋該位置...另一個問題是Hive希望分區列是列表中的最后一個元素,它意味着您不能選擇*,而是必須選擇一個字段到另一個字段,並放置狀態和select語句的結尾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM