Hive语法及其进阶(一)「建议收藏」

Hive语法及其进阶(一)「建议收藏」1、Hive完整建表 1 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name( 2 [(col_name data_type [COMMENT col

Hive语法及其进阶(一)

1、Hive完整建表

 1 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name(  2       [(col_name data_type [COMMENT col_comment], ...)]  3  )  4       [COMMENT table_comment]
 5       [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]  6       [CLUSTERED BY (col_name, col_name, ...)  7  [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]  8       [
 9  [ROW FORMAT row_format] 
10        [STORED AS file_format]
11        | STORED BY "storage.handler.class.name" [ WITH SERDEPROPERTIES (...) ]  (Note:  only available starting with 0.6.0) 12  ] 13       [LOCATION hdfs_path]
14       [TBLPROPERTIES (property_name=property_value, ...)]  (Note:  only available starting with 0.6.0) 15       [AS select_statement]  (Note: this feature is only available starting with 0.5.0.)

 

注意:
    []:表示可选
    EXTERNAL:外部表
    (col_name data_type [COMMENT col_comment],…:定义字段名,字段类型
    COMMENT col_comment:给字段加上注释
    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:设置排序字段 升序、降序
    ROW FORMAT row_format:指定设置行、列分隔符(默认行分隔符为 )
    STORED AS file_format:指定Hive储存格式:textFile、rcFile、SequenceFile 默认为:textFile
    LOCATION hdfs_path:指定储存位置(默认位置在hive.warehouse目录下)
    TBLPROPERTIES (property_name=property_value, …):跟外部表配合使用,比如:映射HBase表,然后可以使用HQL对hbase数据进行查询,当然速度比较慢
    AS select_statement:从别的表中加载数据 select_statement=sql语句

2、使用默认方式建表

1 create table students01 2  ( 3             id bigint, 4  name string, 5             age int, 6  gender string, 7  clazz string 8  ) 9         ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

注意:
分割符不指定,默认不分割
通常指定列分隔符,如果字段只有一列可以不指定分割符:

ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
Hive语法及其进阶(一)「建议收藏」

 

3、建表2:指定location

 1 create table students02  2  (  3             id bigint,  4  name string,  5             age int,  6  gender string,  7  clazz string  8  )  9         ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
10         LOCATION "data"; 

Hive语法及其进阶(一)「建议收藏」

 

 

 

4、建表3:指定存储格式

 1  create table student_rc  2  (  3             id bigint,  4  name string,  5             age int,  6  gender string,  7  clazz string  8  )  9         ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
10         STORED AS rcfile; 

Hive语法及其进阶(一)「建议收藏」

注意:

    指定储存格式为rcfile,inputFormat:RCFileInputFormat,outputFormat:RCFileOutputFormat,如果不指定,默认为textfile

注意:

    除textfile以外,其他的存储格式的数据都不能直接加载,需要使用从表加载的方式。

Hive语法及其进阶(一)「建议收藏」

 

 

 Hive语法及其进阶(一)「建议收藏」

 

 

 Hive语法及其进阶(一)「建议收藏」

 

 

 

5、建表4:从其他表中加载数据
  格式:
    create table xxxx as select_statement(SQL语句) (这种方式比较常用)

  例子:
     create table students4 as select * from students2;

Hive语法及其进阶(一)「建议收藏」

 

 

 

 6、建表5:从其他表中获取表结构

  格式:
    create table xxxx like table_name 只想建表,不需要加载数据

  例子:

       create table student04 like students;

Hive语法及其进阶(一)「建议收藏」

 

7.Hive加载数据

    1、使用“`hadoop dfs -put “本地数据” “hive表对应的HDFS目录下

Hive语法及其进阶(一)「建议收藏」

 Hive语法及其进阶(一)「建议收藏」

    2、使用 load data inpath(是对hdfs的文件移动,移动,移动,不是复制)

         3、使用load data local inpath(经常使用,从本地文件中上传)

Hive语法及其进阶(一)「建议收藏」   

    // overwrite 覆盖加载
    // 实际上就是hadoop执行了rmr然后put操作
    例如:load data local inpath”/usr/local/data/students.txt” overwrite into table student01;

Hive语法及其进阶(一)「建议收藏」

 

 

 

方式1和方式2的区别:

          1.上传数据到hdfs目录和hive表没有任何关系(不需要数据格式进行匹配,hive读取数据还是需要数据格式的匹配)

          2.上传数据到hive表和hive表有关系(需要数据格式进行匹配)

8. 清空表
    truncate table student01;

注意: 清空代表清空数据,不是删除表

 

 

 

 Hive语法及其进阶(一)「建议收藏」

 

 

11. insert into table xxxx SQL语句 (没有as) 传输给别的格式的hive table

  例如:

    insert into table student04 select * from student01;

Hive语法及其进阶(一)「建议收藏」

  覆盖插入 把into 换成 overwrite

    例如:

      insert overwrite table student04 select * from student01;

Hive语法及其进阶(一)「建议收藏」

 

 

 

9、Hive 内部表(Managed tables)vs 外部表(External tables)

 

区别:

    内部表删除数据跟着删除
    外部表只会删除表结构,数据依然存在

 

注意:

    公司中实际应用场景为外部表,为了避免表意外删除数据也丢失
    不能通过路径来判断是目录还是hive表(是内部表还是外部表)

建表:

 1 内部表  2 create table students_managed01  3 (  4     id bigint,  5  name string,  6     age int,  7  gender string,  8  clazz string  9 ) 10 ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

 

Hive语法及其进阶(一)「建议收藏」

 1 //内部表指定location  2 create table students_managed02  3 (  4     id bigint,  5  name string,  6     age int,  7  gender string,  8  clazz string  9 ) 10 ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
11 LOCATION "/managed";

Hive语法及其进阶(一)「建议收藏」

 

 

 1 // 外部表  2 create external table students_external01  3 (  4     id bigint,  5  name string,  6     age int,  7  gender string,  8  clazz string  9 ) 10 ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

Hive语法及其进阶(一)「建议收藏」

 

 

 1 // 外部表指定location  2 create external table students_external02  3 (  4     id bigint,  5  name string,  6     age int,  7  gender string,  8  clazz string  9 ) 10 ROW FORMAT DELIMITED FIELDS TERMINATED BY ","; 11 LOCATION "/external";

Hive语法及其进阶(一)「建议收藏」

 

 上传数据:

hive> load data local inpath "/usr/local/data/students.txt"into table students_managed01;hive> load data local inpath "/usr/local/data/students.txt"into table students_managed02;
hive> load data local inpath "/usr/local/data/students.txt"into table students_external01;hive> load data local inpath "/usr/local/data/students.txt"into table students_external02;

Hive语法及其进阶(一)「建议收藏」

 

 

 删除数据:

hive> drop table students_managed01; hive> drop table students_managed02; hive> drop table students_external01; hive> drop table students_external02;

Hive语法及其进阶(一)「建议收藏」

Hive语法及其进阶(一)「建议收藏」

 

 Hive语法及其进阶(一)「建议收藏」

 

 外部表与内部表总结:

    可以看出,删除内部表的时候,表中的数据(HDFS上的文件)会被同表的元数据一起删除

    删除外部表的时候,只会删除表的元数据,不会删除表中的数据(HDFS上的文件)

    一般在公司中,使用外部表多一点,因为数据可以需要被多个程序使用,避免误删,通常外部表会结合location一起使用

    外部表还可以将其他数据源中的数据 映射到 hive中,比如说:hbase,ElasticSearch……

    设计外部表的初衷就是 让 表的元数据 与 数据 解耦

 

 

 10、Hive建立分区表

1.创建单级分区

 1 create table students_pt  2 (  3     id bigint,  4  name string,  5     age int,  6  gender string,  7  clazz string  8 )  9 PARTITIONED BY(month string) 10 ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";

Hive语法及其进阶(一)「建议收藏」

 

 2.加载数据

load data local inpath “/usr/local/data/students.txt” into table students_pt partition(month=”2021-09-26″);

Hive语法及其进阶(一)「建议收藏」

 

 

3.分区查询

单分区查询

    select * from students_pt where month=”2021-09-26″;

多分区查询

    select * from students_pt where month=”2021-09-26″or month=”2021-09-24″;

 

4.增加分区

创建单个分区

    alter table students_pt add partition(month=”2021-09-25″);

 

Hive语法及其进阶(一)「建议收藏」

 

创建多个分区

    alter table students_pt add partition(month=”2021-09-23″) partition(month=”2021-09-24″);(注意中间没有逗号分割)

Hive语法及其进阶(一)「建议收藏」

 

 

 

5.删除分区

删除单个分区

    alter table students_pt drop partition(month=”2021-09-23″);

Hive语法及其进阶(一)「建议收藏」

 

 

删除多个分区

    alter table students_pt drop partition(month=”2021-09-24″),partition(month=”2021-09-25″); (注意中间有逗号分割)

Hive语法及其进阶(一)「建议收藏」

 

 

6.查看分区表分区

    show partitions students_pt;

Hive语法及其进阶(一)「建议收藏」

 

 

7.查看分区表结构

    desc formatted students_pt;

Hive语法及其进阶(一)「建议收藏」

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5821.html

(0)
上一篇 2023-04-23
下一篇 2023-04-23

相关推荐

  • [Elasticsearch] ES更新问题踩坑记录「终于解决」

    [Elasticsearch] ES更新问题踩坑记录「终于解决」问题描述 我们有个系统设计的时候针对Hive创建表、删除表, 需要更新ES中的一个状态,标记是否删除,在几乎同时执行两条下面的语句的时候,发现在ES 中出现表即使被创建了还是无法被查询到的情况,针对该

    2023-04-22
    151
  • Python绘图:线的绘制方法

    Python绘图:线的绘制方法绘图作为数据可视化中一个重要的方面,不仅能够让数据更加直观清晰地呈现出来,还能够帮助人们更好地理解数据背后的含义。而在绘图中,线的绘制方法是其中一个重要的方面。Python作为一种广泛使用的编程语言,在数据可视化方面有着越来越多的应用。Python提供了丰富的绘图模块,使得我们能够方便地使用Python进行线形图、折线图、箱线图等各种类型的图形绘制。本文将重点介绍Python中绘制线形图的相关方法,以及针对不同的数据类型,如何使用Python绘制出不同类型的线形图。

    2024-08-14
    35
  • 用Python绘制函数图像

    用Python绘制函数图像Python是一种流行的编程语言,具有广泛的应用领域。其中之一就是绘制函数图像。Python提供了丰富的绘图工具包,使得绘制函数图像变得异常简单。

    2024-07-29
    32
  • 使用TextVariable来改变Tkinter小部件的值

    使用TextVariable来改变Tkinter小部件的值Tkinter是使用Python编写的标准GUI库,具有易学、易用、丰富多彩的特点。TextVariable是Tkinter的一个很有用的变量类型,可以用来动态改变Tkinter小部件的值,例如Label、Button等。该变量类型使得GUI应用程序可以非常灵活地响应用户的交互事件,从而实现更加智能、高效的功能。

    2023-12-09
    114
  • DBA入职指南学习笔记2

    DBA入职指南学习笔记21、创建用户 create user ecology identified by nskfoa; 2、用户授权 grant connect to ecology; 连接权限 3、授权表权限 gran…

    2023-03-26
    149
  • 如何安装numpy

    如何安装numpybNumpy/b是Python中一个重要的科学计算库,它提供了许多高效的数学函数和数组类型,用于处理大型、复杂的数据集。为了能够使用Numpy,我们需要先将它安装到我们的计算机上。接下来,我们将探讨如何安装Numpy。

    2024-09-01
    23
  • Python中elif的使用方法

    Python中elif的使用方法在Python中,codeelif/code语句用于多条件结构的判断,常与codeif/code语句搭配使用。

    2024-05-07
    64
  • 用途广泛的Python CGI编程详解

    用途广泛的Python CGI编程详解Python作为一种面向对象的解释型编程语言,具有简洁明了、易读易写、开发效率高等优点,在Web开发、人工智能、自动化测试等众多领域被广泛应用。在Web开发领域,Python的CGI编程是一种常用的技术,可以处理从Web服务器接收的信息并产生Web页面。在本文中,我们将从多个方面详细阐述Python CGI编程的使用方法和技巧。

    2024-01-09
    111

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注