蜂巢分区表的分区操作方法

  介绍

本篇内容主要讲解“蜂巢分区表的分区操作方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“蜂巢分区表的分区操作方法”吧!

蜂巢没有行级别的数据的增删,改往表中装载数据唯一途径就是使用大量数据进行装载,可以通过负荷可以插入

动态分区,,动态静态

<强>所以蜂巢提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区

<强>注意:使用,插入……选择往表中导入数据时,查询的字段个数必须和目标的字段个数相同,不能多,也不能少,否则会报错。但是如果字段的类型不一致的话,则会使用null值填充,不会报错。而使用数据加载形式往蜂巢表中装载数据时,则不会检查。如果字段多了则会丢弃,少了则会零值填充。同样如果字段类型不一致,也是使用null值填充。
多个分区字段时,实现半自动分区(部分字段静态分区,注意静态分区字段要在动态前面)

为了对表进行合理的管理以及提高查询效率,蜂巢可以将表组织成“分区”。一个分区实际上就是表下的一个目录,一个表可以在多个维度上进行分区,分区之间的关系就是目录树的关系。

1,创建分区表
通过分割的子句指定,分区的顺序决定了谁是父目录,谁是子目录。
创建有一个分区的分区表:

 CREATE  TABLE  IF  NOT  EXISTS  part_test (,,,,,,,,
  c1 才能,,,,,,,的字符串
  c2 ,,,,,,,,的字符串
  c3 ,,,,,,,, string 
  c4 ,,,,,,,,的字符串
  )PARTITIONED  BY  (day_id 字符串)
  ROW  FORMAT  DELIMITED  FIELDS  TERMINATED  BY  & # 39; | & # 39;
  STORED  AS 文本文件;


创建有两个分区的分区表:

 CREATE  TABLE  IF  NOT  EXISTS  part_test_1 (,,,,,,,,,,,,,,,
  c1 才能,,,,,,,的字符串
  c2 ,,,,,,,, string ,,
  c3 ,,,,,,,, string 
  c4 ,,,,,,,, string ,,
  ),PARTITIONED  BY  (day_id  month_id 字符串,字符串)
  ROW  FORMAT  DELIMITED  FIELDS  TERMINATED  BY  & # 39; | & # 39;
  STORED  AS 文本文件;

2,,,,外部分区表
外部表也可以建成分区表,如hdfs目录/user/tuoming/下一部分有

201805年和201806年两个目录,201805下有一个20180509子目录,201806下有20180609和20180609两个子目录。

创建一个映射到/user/tuoming/部分目录的外部分区表:

 CREATE  EXTERNAL  TABLE  IF  NOT  EXISTS  part_test_2 (
  c1 才能,,,,,,,的字符串
  c2 ,,,,,,,,的字符串
  c3 ,,,,,,,,的字符串
  c4 ,,,,,,,,的字符串
  )PARTITIONED  BY  (day_id  month_id 字符串,字符串)
  ROW  FORMAT  DELIMITED  FIELDS  TERMINATED  BY  & # 39; & # 39;
  STORED  AS 文本文件

位置& # 39;/user/tuoming/部分# 39;;为part_test_2增加分区:

 alter  table  part_test_2  add 分区(month_id=& # 39; 201805 & # 39;, day_id=& # 39; 20180509 & # 39;),位置& # 39;/user/tuoming/部分/201805/20180509& # 39;;
  
  
  alter  table  part_test_2  add 分区(month_id=& # 39; 201806 & # 39;, day_id=& # 39; 20180609 & # 39;),位置& # 39;/user/tuoming/部分/201806/20180609& # 39;;
  
  
  alter  table  part_test_2  add 分区(month_id=& # 39; 201806 & # 39;, day_id=& # 39; 20180610 & # 39;),位置& # 39;/user/tuoming/部分/201806/20180610& # 39;;

使用显示分区语句查看part_test_2有哪些分区:
显示分区part_test_2; 3,,,,内部分区表
创建一个主分区为month_id,子分区为day_id的内部分区表:

 CREATE  TABLE  IF  NOT  EXISTS  part_test_3 (,,,,,,,,,,,,,,,
  c1 才能,,,,,,,的字符串
  c2 ,,,,,,,, string ,,
  c3 ,,,,,,,, string 
  c4 ,,,,,,,, string ,,
  )PARTITIONED  BY  (day_id  month_id 字符串,字符串)
  ROW  FORMAT  DELIMITED  FIELDS  TERMINATED  BY  & # 39; | & # 39;
  
  STORED  AS 文本文件;

为内部分区表加载数据
(1)使用数据加载inpath…覆盖到表分区语句从hdfs目录加载:

 load  data  inpath  & # 39;/user/tuoming/测试/测试# 39;,overwrite  into  table  part_test_3 分区(month_id=& # 39; 201805 & # 39;, day_id=& # 39; 20180509 & # 39;); 

蜂巢分区表的分区操作方法