Hive 如何在配置单元中手动创建/复制数据到分区

Hive 如何在配置单元中手动创建/复制数据到分区,hive,hdfs,hive-partitions,Hive,Hdfs,Hive Partitions,我正在开发一个配置单元解决方案,其中需要向大容量文件附加一些值。因此,我尝试使用MapReduce方法,而不是附加它们 方法如下 表格创建: create external table demo_project_data(data string) PARTITIONED BY (business_date string, src_sys_file_nm string, prd_typ_cd string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|

我正在开发一个配置单元解决方案,其中需要向大容量文件附加一些值。因此,我尝试使用MapReduce方法,而不是附加它们 方法如下

表格创建:

create external table demo_project_data(data string) PARTITIONED BY (business_date string, src_sys_file_nm string, prd_typ_cd string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n'
LOCATION '/user/hive/warehouse/demo/project/data';


hadoop fs -mkdir -p /user/hive/warehouse/demo/project/data/business_date='20180707'/src_sys_file_nm='a_b_c_20180707_1.dat.gz'/prd_typ_cd='abcd'


echo "ALTER TABLE demo_project_data ADD IF NOT EXISTS PARTITION(business_date='20180707',src_sys_file_nm='a ch_ach_fotp_20180707_1.dat.gz',prd_typ_cd='ach')
LOCATION '/user/hive/warehouse/demo/project/data/business_date='20180707'/src_sys_file_nm='a_b_c_20180707_1.dat.gz'/prd_typ_cd='abcd';"|hive

hadoop fs -cp /apps/tdi/data/a_b_c_20180707_1.dat.gz /user/hive/warehouse/demo/project/data/business_date='20180707'/src_sys_file_nm='a_b_c_20180707_1.dat.gz'/prd_typ_cd='abcd'

echo "INSERT OVERWRITE DIRECTORY '/user/20180707'  select *,'~karthick~kb~demo' from demo_project_data where src_sys_file_nm='a_b_c_20180707_1.dat.gz' and business_date='20180707' and prd_typ_cd='abcd';"|hive
我在文件中有一些数据,但在上面的查询中没有看到任何结果。将文件正确复制到正确的位置。 我做错了什么?查询没有问题


此外,我将在多个日期循环。我想知道这样做是否正确

您可以使用下面的命令从分区获取结果-

MSCK REPAIR TABLE <tablename>;
MSCK修复表;
参考

  • MSCK修复表