国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

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

发布时间:2019/08/06标签:   数据    点击量:

原标题:Hive SQL常用命令总结,大数据开发人员按需收藏
Hive是基于Hadoop生态的一个主要组件,是对数据堆栈停止治理和剖析数据的东西。她供给了SQL查问方法来剖析存储在HDFS散布式文件体系中的数据,能够将构造化的数据文件映照为一张数据库表,并供给完全的SQL查问功效。这类SQL就是Hive SQL,她能够将SQL语句转换为Map Reduce义务运转,经过特别的SQL去查问剖析须要的内容,使不熟习map reduce的用户很便利的应用SQL 言语查问,汇总,剖析数据。Hive SQL常用命令总结,大数据开发人员按需收藏1、基本下令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, map2、罕用函数 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构造拆分红多行3、相干观点1、hivehive是基于hadoop的一个数据堆栈东西,能够将构造化的数据文件映照为一张数据库库表,并供给类SQL查问功效。2、基础构成用户接口:CLI,shell下令行;JDBC/ODBC是hive的java完成;webGUI是经过扫瞄器拜访hive;元数据存储:平日是存储在关联数据库如mysql, derby中;hive的元数据包含表的名字,表的列和分区及其属性,表的属性(能否为内部表),表的数据地点名目等。说明器,编译器,优化器实现HQL查问语句从词法剖析,语法剖析,编译,优化以及查问打算的天生。天生的查问存储在HDFS中,并随后有mapreduce挪用履行。因而,hive与Hadoop的关联能够懂得为用户收回SQL查问语句,hive将查问存储在HDFS中,而后由mapreduce挪用履行。3、tableHive 中的 Table 和数据库中的 Table 在观点上是相似的,每一个 Table 在 Hive 中都有一个响应的名目存储数据。比方,一个表 pvs,它在 HDFS 中的门路为:/wh/pvs,此中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的数据堆栈的名目,全部的 Table 数据(不包含 External Table)都保留在这个名目中。4、partitionPartition 对应于数据库中的 Partition 列的麋集索引,然而 Hive 中 Partition 的构造方法和数据库中的很不雷同。在 Hive 中,表中的一个 Partition 对应于表下的一个名目,全部的 Partition 的数据都存储在对应的名目中。5、bucketsBuckets 对指定列盘算 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-000206、external tableExternal Table 指向曾经在 HDFS 中存在的数据,能够创立 Partition。它和 Table 在元数据的构造上是雷同的,而现实数据的存储则有较大的差别。Table 的创立进程和数据加载进程(这两个进程能够在统一个语句中实现),在加载数据的进程中,现实数据会被挪动到数据堆栈名目中;以后对数据对拜访将会间接在数据堆栈名目中实现。删除表时,表中的数据和元数据将会被同时删除。External Table 只要一个进程,加载数据和创立表同时实现(CREATE EXTERNAL TABLE ……LOCATION),现实数据是存储在 LOCATION 前面指定的 HDFS 门路中,并不会挪动到数据堆栈名目中。当删除一个 External Table 时,仅删除元数据,表中的数据不会真正被删除。7、全量数据和增量数据检查分区信息:假如分区的巨细随时光增添而增添,则最新的分区为全量数据。假如分区的巨细随时光增添而巨细高低变更,则每个分区都是增量数据。4、HQL和SQL的异同1、HQL和SQL罕见差别, select distinct 后必需指定字段名 join 前提仅支撑等值关系且不支撑or前提 子查问不能在select中应用; HQL中没有UNION,可应用distinct+ union all 完成 UNION; HQL以分号分开,必需在每个语句开头写上分号; HQL中字符串的比拟比拟严厉,辨别巨细写及空格,因而在比拟时倡议upper(trim(a))=upper(trim(b)) 日期推断,倡议应用to_date(),如:to_date(orderdate)=‘2016-07-18’ 要害字必需在字段名上加``标记,如select `exchange` from xxdb.xxtb; 数据库和表/视图之间唯一1个点,如xx_db.xx_tb。2、HQL不支撑update,采纳union all + left join (is null)变相完成update。 掏出增量数据; 应用昨日分区的全量数据经过主键左衔接增量数据,而且只取增量表中主键为空的数据(即,取未产生变更的全量数据); 兼并1、2的数据笼罩至最新的分区,即完成了update。3、HQL不支撑delete,采纳not exists/left join(is null)的方式变相完成。 掏出已删除的主键数据(表B); 应用上一个分区的全量数据(表A)经过主键左衔接A,而且只取A中主键为空的数据,而后间接insert overwrite至新的分区。关于会SQL的职员,转入Hive SQL仍是比拟轻易的,语法大局部是想通的,少局部函数不太分歧。【编纂推举】 怎样从MongoDB迁徙到MySQL?这有现成教训! PostgreSQL之时光戳主动更新 Adaptive Execution 让 Spark SQL 更智能更高效【义务编纂:未丽燕 TEL:(010)68476606】 点赞 0

版权信息Copyright ? IT技术教程 版权所有??? ICP备案编号:鲁ICP备09013610号