当前位置:   article > 正文

hive建外部表时location修改问题_hive修改location路径

hive修改location路径

 

一、有一次外部表的时候,忘记设置location

  1. create external table test.ads_education_course_feature_dm
  2. (
  3. course_id string comment '课程id',
  4. course_name string comment '课程name',
  5. detail_browser_times string comment '详情页浏览次数',
  6. exposure_convert_borwser_rate string comment '曝光转化率',
  7. pay_flow_7day string comment '七日流水',
  8. complete_course_rate string comment '完课率',
  9. learn_times string comment '学习次数',
  10. learn_users string comment '学习用户数'
  11. ) comment '课程特征表'
  12. partitioned by (pt_d string comment '天分区')
  13. row format delimited fields terminated by '\001'
  14. stored as orc --注意未设置location

外部表结构

  1. 有一个临时表 tmp_educenter_course_feature_dm(内部表,测试需要)
  2. create table test.tmp_educenter_course_feature_dm
  3. (
  4. course_id string comment '课程id',
  5. course_name string comment '课程name',
  6. detail_browser_times string comment '详情页浏览次数',
  7. exposure_convert_borwser_rate string comment '曝光转化率',
  8. pay_flow_7day string comment '七日流水',
  9. complete_course_rate string comment '完课率',
  10. learn_times string comment '学习次数',
  11. learn_users string comment '学习用户数'
  12. ) comment '课程特征表'
  13. partitioned by (pt_d string comment '天分区')
  14. row format delimited fields terminated by '\001'
  15. stored as orc

插入测试数据

load data local inpath '/root/test.txt' into table test.tmp_educenter_course_feature_dm partition (pt_d='20201031');

二、直接关联其他的数据再插入到ads_education_course_feature_dm中

  1. insert overwrite table test.ads_education_course_feature_dm partition(pt_d='20201031')
  2. select
  3. course_id, --course_id
  4. course_name, --'课程name',
  5. detail_browser_times, --'详情页浏览次数',
  6. exposure_convert_borwser_rate, --'曝光转化率',
  7. pay_flow_7day, --'七日流水',
  8. complete_course_rate, --'完课率',
  9. learn_times, --'学习次数',
  10. learn_users --'学习用户数'
  11. from test.tmp_educenter_course_feature_dm
  12. where pt_d='20201031'

查看外部表的分区

show partitions test.ads_education_course_feature_dm;

查看外部表路径下的分区文件

hdfs dfs -ls  hdfs://node01:8020/user/hive/warehouse/test.db/ads_education_course_feature_dm

三、直接修改外部表location

alter table test.ads_education_course_feature_dm set location '/myhive/ads/ads_education_course_feature_dm'

四、再次插入执行数据插入

  1. insert overwrite table test.ads_education_course_feature_dm partition(pt_d='20201031')
  2. select
  3. course_id, --course_id
  4. course_name, --'课程name',
  5. detail_browser_times, --'详情页浏览次数',
  6. exposure_convert_borwser_rate, --'曝光转化率',
  7. pay_flow_7day, --'七日流水',
  8. complete_course_rate, --'完课率',
  9. learn_times, --'学习次数',
  10. learn_users --'学习用户数'
  11. from test.tmp_educenter_course_feature_dm
  12. where pt_d='20201031'

五、查看修改后的location下的分区文件,发现并没有分区20201031的文件,覆盖的文件还是写到了原来的location地址

六、对于已经存在分区文件的外部表,如果要修改location,记得对已经存在的分区单独设置location,再进行数据的insert overwrite 的时候就会在新location路径下创文件

  1. alter table test.ads_education_course_feature_dm set location '/myhive/ads/ads_education_course_feature_dm';
  2. alter table test.ads_education_course_feature_dm partition(pt_d='20201031') set location '/myhive/ads/ads_education_course_feature_dm';
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/692464
推荐阅读
相关标签
  

闽ICP备14008679号