百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

大数据之-HIVE入门(七)(如何用hive来做大数据测试)

toyiye 2024-08-26 22:55 7 浏览 0 评论


创建数据表

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])]
  [COMMENT table_comment]
  [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
  [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
  [SKEWED BY (col_name, col_name, ...)                  -- (Note: Available in Hive 0.10.0 and later)]
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
  [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)
 
  • CREATE:创建。
  • [TEMPORARY]:临时表,当前session有效,session退出后,表自动删除。
  • [EXTERNAL]:外部表,同内部表(托管表)区别是外部表数据由hdfs管理,删除外部表仅仅会删除元数据,HDFS上的数据文件并不会被删除,而删除内部表会直接删除元数据(metadata)及存储的数据,修改外部表时需要用msck repair table 表名。外部表一般用在加载已存在hdfs上的文件。系统上默认是内部表,由hive来管理meta、file、statistics数据。
  • [IF NOT EXISTS]:判断表是否不存在,当表已存在时,不会继续操作。
  • TABLE:建表关键字。
  • [db_name.]table_name:数据库名.表名,如果不写数据库名为当前use的数据库。
  • [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])]:表字段名 字段类型 字段约束 字段描述 表约束等。
    dataType 详见hive支持的数据类型章节(大数据之-HIVE入门(五));
    约束和事务都是hive3.0以上版本新加的特性,有可能在你的hive上不工作,下面为列约束和表约束说明。

约束关键词列表如下:
CHECK 字段值范围约束
DEFAULT 缺省值[LITERAL|CURRENT_USER()|CURRENT_DATE()|CURRENT_TIMESTAMP()|NULL] 
PRIMARY KEY 表主键
FOREIGN KEY 表外键
UNIQUE KEY 字段值唯一
NOT NULL 不空

约束修饰词列表如下:
ENABLE 确保所有传入的数据符合约束。
DISABLE 不保证所有传入的数据符合约束。
VALIDATE 检查表中的全部已存在数据符合约束。
NOVALIDATE 不检查表中的全部已存在数据符合约束。
ENFORCED 同ENABLE NOVALIDATE 只检查传入数据,不校验已存在的数据 
NOT ENFORCED 同DISABLE NOVALIDATE 不检查传入数据,不校验已存在的数据 
RELY 遵守约束
NORELY 不遵守约束
注意:
1.ENABLE 是  NOVALIDATE RELY  
2.DISABLE 是 NOVALIDATE NORELY
3.如果没有指定修饰词那么缺省是ENABLE NOVALIDATE RELY
4.PRIMARY KEY FOREIGN KEY UNIQUE KEY 不支持ENABLE

举例:
1.创建表t指定b列不空。CREATE TABLE t(a TINYINT, b SMALLINT NOT NULL ENABLE, c INT);
2.创建表Persons和BusinessUnit指定某此字段有缺省值并且指定主键和外键。CREATE TABLE Persons (   
     ID INT NOT NULL,   
     Name STRING NOT NULL,   
     Age INT,
     Creator STRING DEFAULT CURRENT_USER(),    
     CreateDate DATE DEFAULT CURRENT_DATE(),
     PRIMARY KEY (ID) DISABLE NOVALIDATE);
     
     CREATE TABLE BusinessUnit (
     ID INT NOT NULL,    
     Head INT NOT NULL,
     Creator STRING DEFAULT CURRENT_USER(),    
     CreateDate DATE DEFAULT CURRENT_DATE(),
     PRIMARY KEY (ID) DISABLE NOVALIDATE,
     CONSTRAINT fk FOREIGN KEY (Head) REFERENCES Persons(ID) DISABLE NOVALIDATE
     );


  • [COMMENT table_comment] :表描述说明。
  • [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] :分区字段。
  • [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]:分桶
  • [SKEWED BY (col_name, col_name, ...)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [STORED AS DIRECTORIES]:数据倾斜列和值特征指定。
建立有两列倾斜值处理的表:
CREATE TABLE tbl_bucket_multiple_sample (col1 INT, col2 STRING, col3 STRING,col4 STRING)
 SKEWED BY (col1, col2) ON ((1,'string1'), (99,'string10'), (9999,'string100')) [STORED AS DIRECTORIES];

[ROW FORMAT row_format]:行格式设置,列间符号、逃逸符号、行结束符设置等。

DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
[NULL DEFINED AS char] -- (Note: Available in Hive 0.13 and later)
| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
  • [STORED AS file_format]:文件格式设置。
SEQUENCEFILE   --是Hadoop API提供的一种二进制文件支持,其具有使用方便、可分割、可压缩的特点。
| TEXTFILE -- (Default, depending on hive.default.fileformat configuration) --每一行都是一条记录,每行都以换行符(\ n)结尾。数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使用。
| RCFILE -- (Note: Available in Hive 0.6.0 and later)--是一种行列存储相结合的存储方式
| ORC -- (Note: Available in Hive 0.11.0 and later)--是一种优化的记录柱面格式,在处理大型表时效率较高。
| PARQUET -- (Note: Available in Hive 0.13.0 and later)--是一个面向列存储的二进制文件格式。Parquet对于大型查询非常高效,默认采用snappy压缩,也可以用gzip。
| AVRO -- (Note: Available in Hive 0.14.0 and later)--是开源项目支持的格式,为Hadoop提供数据序列化和数据交换服务。
| JSONFILE -- (Note: Available in Hive 4.0.0 and later)--是json格式文件,
| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname--自定义格式。
  • [LOCATION hdfs_path]:指定表的存储位置。
  • [TBLPROPERTIES (property_name=property_value, ...)] -- (Note: Available in Hive 0.6.0 and later):表属性
  • [AS select_statement]:从其它查询获取建表。

举例:

1.复制已存在的表或视图格式不复制数据

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
LIKE existing_table_or_view_name
[LOCATION hdfs_path];

2.创建一个文本格式的内部表

CREATE TABLE IF NOT EXISTS textfile_table(
id bigint,
pv bigint)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
stored as textfile;

3.创建一个带分区的表

create table table_name (
  id                int,
  name              string
) partitioned by (dt string);

4.创建一个parquet表,建立分区字段并指定压缩算法

CREATE TABLE parquet_compress_test(
  id bigint,
  name string) partitioned by (dt string)
STORED AS PARQUET TBLPROPERTIES('parquet.compression'='SNAPPY');

5.create table as 建表并从源表获取相关数据

CREATE TABLE tbl_as_test AS select id,name,dt from test where dt='2022-03-01';  

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码