文件empdetails.log以下数据 -
100 AAA 12000 HYD
101 BBB 13000浦那
102 CCC 14000 HYD
103 DDD 10000 Blore
104 EEE 12000 Pune
我想将此数据加载到具有动态分区的" EMP"表中,以便从EMP中选择 *;给我以下输出(按位置分区)。
100 AAA 12000 HYD
102 CCC 14000 HYD
101 BBB 13000浦那
104 EEE 12000 Pune
103 DDD 10000 Blore
任何人都可以提供要在Hive中执行的加载命令。
表创建 - 创建表EMP(CID INT,CNAME String,CSAL INT)由(cloc string)划分行格式定界由" t"终止的字段存储为textfile;
用于动态分区,您必须使用插入...选择查询(Hive Insert)。
将数据插入具有DP的蜂巢表中,这是一个两个步骤过程。
- 在Hive中的分期数据库中创建分期表,然后将数据从该表中加载到该表中外部来源,例如RDBM,文档数据库或本地文件使用蜂巢负载。
- 使用Hive Insert。
另外,在Hive中设置以下属性。
- 设置hive.exec.dynamic.partition = true;
- 设置hive.exec.dynamic.partition.mode = nountrict;
以下示例在Cloudera VM上工作。
-- Extract orders data from mysql (Retail_DB.products)
select * from orders into outfile '/tmp/orders_data.psv' fieldsterminated by '|' lines terminated by 'n';
-- Create Hive table with DP - order_month is DP.
CREATE TABLE orders (order_id int, order_date string, order_customer_id int, order_status string ) PARTITIONED BY (order_month string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'STORED AS TEXTFILE;
--Create staging table in Hive.
CREATE TABLE orders_stage (order_id int,order_date string, order_customer_id int, order_status string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE;
--Load data into staging table (Hive)
Load data into staging table load data local inpath
/tmp/orders_data.psv' overwrite into table orders_stage;
--Insert into Orders, which is final table (Hive).
Insert overwrite table retail_ods.orders partition (order_month)
select order_id, order_date, order_customer_id,order_status,
substr(order_date, 1, 7) order_month from retail_stage.orders_stage;
您可以在https://cwiki.apache.org/confluence/display/hive/dynamicpartitions