加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Hive SQL常用命令总结,大数据开发人员按需收藏

发布时间:2019-08-07 13:18:19 所属栏目:编程 来源:技术大咖秀
导读:Hive是基于Hadoop生态的一个重要组件,是对数据客栈举办打点和说明数据的器材。她提供了SQL查询方法来说明存储在HDFS漫衍式文件体系中的数据,可以将布局化的数据文件映射为一张数据库表,并提供完备的SQL查询成果。 这种SQL就是Hive SQL,她可以将SQL语句
副问题[/!--empirenews.page--]

Hive是基于Hadoop生态的一个重要组件,是对数据客栈举办打点和说明数据的器材。她提供了SQL查询方法来说明存储在HDFS漫衍式文件体系中的数据,可以将布局化的数据文件映射为一张数据库表,并提供完备的SQL查询成果。

这种SQL就是Hive SQL,她可以将SQL语句转换为Map Reduce使命运行,通过非凡的SQL去查询说明必要的内容,使不认识map reduce的用户很利便的操作SQL 说话查询,汇总,说明数据。

Hive SQL常用呼吁总结,大数据开拓职员按需保藏

一、基本呼吁

1、数据库操纵

  • show databases; # 查察某个数据库
  • use 数据库; # 进入某个数据库
  • show tables; # 展示全部表
  • desc 表名; # 表现表布局
  • show partitions 表名; # 表现表名分区
  • show create table_name; # 表现建设表的布局

2、表布局修改

  • use xxdb; create table xxx; # 内部表
  • create table xxx like xxx; # 建设一个表,布局与其他一样
  • use xxdb; create external table xxx; # 外部表
  • use xxdb; create external table xxx (l int) partitoned by (d string); # 分区表
  • alter table table_name set TBLPROPROTIES ('EXTERNAL'='TRUE'); # 内部表转外部表
  • alter table table_name set TBLPROPROTIES ('EXTERNAL'='FALSE');# 外部表转内部表

3、字段范例

  • 根基范例: tinyint, smallint, int, bigint, float, decimal, boolean, string
  • 复合范例:struct, array, map

二、常用函数

  • length() # 返回字符串长度
  • trim() # 去除双方空格
  • lower(), upper() # 巨细写转换
  • reverse() # 反转字符串
  • cast(expr as type) # 范例转换
  • substring(string A, int start, int len) # 字符串截取
  • split(string str, string pat) # 凭证pat字符串支解str,返回支解后的字符串数组
  • coalesce(v1, v2, v3, ...) # 返回列表中第一个非空元素,假如全部值都为空,则返回null
  • from_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss') # 返回当前时刻
  • instr(string str, string search_str) # 返回第二个参数在待查找字符串中的位置(找不到返回0)
  • concat(string A, string B, string C, ...) # 字符串通接
  • concat_ws(string sep, string A, string B, string C, ...) # 自界说脱离符sep的字符串通接
  • str_to_map(string A, string item_pat, string dict_pat) # 将字符串转为map
  • map_keys(map m) # 提取出map的key, 返回key的array
  • datediff(date1, date2) # 日期较量函数,返回相差天数,datediff('${cur_date},d)
  • explode(colname) # explode就是将hive一行中伟大的array可能map布局拆分成多行

三、相干观念

1、hive

hive是基于hadoop的一个数据客栈器材,可以将布局化的数据文件映射为一张数据库库表,并提供类SQL查询成果。

2、根基构成

用户接口:CLI,shell呼吁行;JDBC/ODBC是hive的java实现;webGUI是通过赏识器会见hive;元数据存储:凡是是存储在相关数据库如mysql, derby中;hive的元数据包罗表的名字,表的列和分区及其属性,表的属性(是否为外部表),表的数据地址目次等。

表明器,编译器,优化器完成HQL查询语句从词法说明,语法说明,编译,优化以及查询打算的天生。天生的查询存储在HDFS中,并随后有mapreduce挪用执行。因此,hive与Hadoop的相关可以领略为用户发出SQL查询语句,hive将查询存储在HDFS中,然后由mapreduce挪用执行。

3、table

Hive 中的 Table 和数据库中的 Table 在观念上是相同的,每一个 Table 在 Hive 中都有一个响应的目次存储数据。譬喻,一个表 pvs,它在 HDFS 中的路径为:/wh/pvs,个中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的数据客栈的目次,全部的 Table 数据(不包罗 External Table)都生涯在这个目次中。

4、partition

Partition 对应于数据库中的 Partition 列的麋集索引,可是 Hive 中 Partition 的组织方法和数据库中的很不沟通。在 Hive 中,表中的一个 Partition 对应于表下的一个目次,全部的 Partition 的数据都存储在对应的目次中。

5、buckets

Buckets 对指定列计较 hash,按照 hash 值切分数据,目标是为了并行,每一个 Bucket 对应一个文件。将 user 列分手至 32 个 bucket,起首对 user 列的值计较 hash,对应 hash 值为 0 的 HDFS 目次为:/wh/pvs/ds=20090801/ctry=US/part-00000;hash 值为 20 的 HDFS 目次为:/wh/pvs/ds=20090801/ctry=US/part-00020

6、external table

External Table 指向已经在 HDFS 中存在的数据,可以建设 Partition。它和 Table 在元数据的组织上是沟通的,而现实数据的存储则有较大的差别。

Table 的建设进程和数据加载进程(这两个进程可以在统一个语句中完成),在加载数据的进程中,现实数据会被移动到数据客栈目次中;之后对数据对会见将会直接在数据客栈目次中完成。删除表时,表中的数据和元数据将会被同时删除。

External Table 只有一个进程,加载数据和建设表同时完成(CREATE EXTERNAL TABLE ……LOCATION),现实数据是存储在 LOCATION 后头指定的 HDFS 路径中,并不会移动到数据客栈目次中。当删除一个 External Table 时,仅删除元数据,表中的数据不会真正被删除。

7、全量数据和增量数据

查察分区信息:假如分区的巨细随时刻增进而增进,则最新的分区为全量数据。假如分区的巨细随时刻增进而巨细上下变革,则每个分区都是增量数据。

四、HQL和SQL的异同

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读