![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hive
文章平均质量分 90
张博208
知识搬运工
展开
-
[Hive进阶]- Hive with as 语法
https://blog.csdn.net/high2011/article/details/85335954转载 2020-07-16 10:32:55 · 706 阅读 · 0 评论 -
向Hive程序传递变量的三种方法
图 1 外部向Hive程序中传递变量的方法使用Hive编写程序最常用的方法是将Hive语句写到文件中,然后使用hive -f filename.hql来批量执行查询语句。经常需要将外部参数传入到hql语句中替换其中的变量来动态执行任务,比如动态设定数据库名、表名、时间值、字段序列等变量,以达到脚本泛化执行的目的。1) 方法1:字符串、正则、模板引擎等暴力方式替换最简单也最暴力的方式,是在hql文件...转载 2018-05-03 11:07:34 · 1743 阅读 · 0 评论 -
Hive 的collect_set使用详解
有这么一需求,在Hive中求出一个数据表中在某天内首次登陆的人;可以借助collect_set来处理sql:[html] view plain copy select count(a.id) from (select id,collect_set(time) as t from t_action_login where time<='20150906' group by id) as a...转载 2018-04-16 14:46:08 · 1540 阅读 · 0 评论 -
Hive的Collect函数
Hive的Collect函数有以下表idname1001A1001B1001C实现以下功能idname1001A,B,C即按照id 进行group by,将每个id的name组成一个list放到name字段中。select id,collect_list(name) from table group by id1若name中有重复的值,可以用collect_set函数进行去重collect_lis...转载 2018-04-16 14:45:32 · 1441 阅读 · 0 评论 -
hive lateral view 与 explode详解
1.explodehive wiki对于expolde的解释如下:explode() takes in an array (or a map) as an input and outputs the elements of the array (map) as separate rows. UDTFs can be used in the SELECT expression list and as...转载 2018-04-16 14:43:57 · 1554 阅读 · 0 评论 -
Lateral View用法 与 Hive UDTF explode
Lateral View是Hive中提供给UDTF的conjunction,它可以解决UDTF不能添加额外的select列的问题。1. Why we need Lateral View?当我们想对hive表中某一列进行split之后,想对其转换成1 to N的模式,即一行转多列。hive不允许我们在UDTF函数之外,再添加其它select语句。如下,我们想将登录某个游戏的用户id放转载 2017-06-30 13:43:19 · 1905 阅读 · 0 评论 -
HiveQL与SQL区别
1.hive内联支持什么格式?2.分号字符注意什么问题?3.hive中empty是否为null?4.hive是否支持插入现有表或则分区中?5.hive是否支持INSERT INTO 表 values()?1、Hive不支持等值连接 •SQL中对两表内联可以写成:•select * from dual a,dual b where a.key = b.key;转载 2017-03-16 22:27:24 · 1515 阅读 · 0 评论 -
Hive查询进阶
通过Hive提供的order by子句可以让最终的输出结果整体有序。但是因为Hive是基于Hadoop之上的,要生成这种整体有序的结果,就必须强迫Hadoop只利用一个Reduce来完成处理。这种方式的副作用就是回降低效率。如果你不需要最终结果整体有序,你就可以使用sort by子句来进行排序。这种排序操作只保证每个Reduce的输出是有序的。如果你希望某些特定行被同一个Reduce处理,转载 2017-03-16 21:09:10 · 234 阅读 · 0 评论 -
Hive中order by,sort by,distribute by,cluster by的区别
一:order byorder by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间。关于order by的详细介绍请参考这篇文章:Hive Order by操作。二:sort bysort by不是全局排序,其在数据进入reducer前完成排序,因此,如果用sort转载 2017-03-16 21:07:07 · 352 阅读 · 0 评论 -
Hive 删除行, 表 ,清空类容
delect:用于删除特定行条件,你可以从给定表中删除所有的行????TRUNCATE:truncate用于删除所有的行,这个行为在Hive元存储删除数据是不可逆的DROP:删除hive中的表truncate 不能删除外部表!因为外部表里的数据并不是存放在Hive Meta store中truncate:truncate table table_转载 2017-03-16 21:02:55 · 24603 阅读 · 1 评论 -
hive alter table (删除某一列, 增加列)语句
Hive alter table 语句结构:CREATE TABLE test (creatingTs BIGINT,a STRING,b BIGINT,c STRING,d STRING,e BIGINT,f BIGINT);如果需要删除 column f 列,可以使用以下语句:ALTER TABLE test转载 2017-03-16 20:51:12 · 48343 阅读 · 5 评论 -
Hive常用的SQL命令操作
创建表Hive> CREATE TABLE pokes (foo INT, bar STRING); 创建表并创建索引字段dshive> CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING); 显示所有表hive> SHOW TABLES;按正条件(正则表达式)显示转载 2017-03-16 20:09:18 · 391 阅读 · 0 评论 -
Hive SQL操作与函数自定义(二)
9 Operators and UDFs9.1 内置运算符9.1.1 关系运算符操作符运算对象的类型描述A <=> BALL都是NULL时,返回TRUE,有一为NULL时,返回FALSE,都不为NULL时,与‘=’运算符一样。A <> BALLA或B为NULL时,返回NULL,否则A不等于B是返回TRUE,反之FALSE。A RLIKE BstringsA或B为NULL时,...转载 2018-05-03 11:18:29 · 539 阅读 · 0 评论 -
Hive SQL操作与函数自定义(一)
与传统SQL一致,并且概念简单的,本文没有详细说明或完全没有说明。另外,本文也没有按照官文一字不漏地翻译,只是提炼本人认为需要的。 1 DDL1.1 Create/Drop/Alter/Use Database1.1.1 Create DatabaseCREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database...转载 2018-05-03 11:17:04 · 1988 阅读 · 0 评论 -
Hive优化
要点:优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜。理解hadoop的核心能力,是hive优化的根本。 长期观察hadoop处理数据的过程,有几个显著的特征:1.不怕数据多,就怕数据倾斜。2.对jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,没半小时是跑不完的。map reduce作业初始化的时间是比较长的...转载 2018-05-04 15:35:55 · 236 阅读 · 0 评论 -
Hive的Transform功能
Hive的TRANSFORM关键字提供了在SQL中调用自写脚本的功能,适合实现Hive中没有的功能又不想写UDF的情况。例如,按日期统计每天出现的uid数,通常用如下的SQLSELECT date, count(uid)FROM xxxGROUP BY date但是,如果我想在reduce阶段对每天的uid形成一个列表,进行排序并输出,这在Hive中没有现成的功能。那么,可以自写脚本...转载 2019-03-21 17:43:16 · 439 阅读 · 0 评论 -
hive array_contains
某个字段条件过多,查询条件失效select * from login where dt='20130101' and (ver !='3.1' or ver !='3.2' or ver != '4.0' or ver != '5.2'); select * from login where dt='20130101' and (ver !='3.1' and ver !='3.2...转载 2018-10-19 16:48:08 · 20579 阅读 · 1 评论 -
Hive 中的复合数据结构简介以及一些函数的用法说明
目录[-]一、map、struct、array 这3种的用法: 1、Array的使用 2、Map 的使用 3、Struct 的使用 4、数据组合 (不支持组合的复杂数据类型) 二、hive中的一些不常见函数的用法: 1、array_contains (Collection Functions) 2、get_json_object (Misc. Functions) 3、pars...转载 2018-10-19 16:47:14 · 299 阅读 · 0 评论 -
HIVE中select除了某些字段之外的剩余所有字段
HIVE中select除了某些字段之外的剩余所有字段这是HIVE中查询语句的一个小技巧,一个表字段太多,我们想要除个别字段外的剩余所有字段,全部列出来看起来难受,实际上hive语句可以解决这个问题。Hive 0.13.0之后,select列表支持正则表达式了insert overwrite table tb2 partition(dt=xx, hr=xx) select * from tb1 是不...转载 2018-07-05 20:23:30 · 5519 阅读 · 0 评论 -
Hive分析 函数 GROUPING SETS,CUBE,ROLLUP
GROUPING SETS,GROUPING__ID,CUBE,ROLLUP这几个分析函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计,比如,分小时、天、月的UV数。Hive版本为 apache-hive-0.13.1数据准备:2015-03,2015-03-10,cookie12015-03,2015-03-10,cookie52015-03,2015-03-12,co...转载 2018-06-19 09:25:52 · 242 阅读 · 0 评论 -
Hive中的TRANSFORM:使用脚本完成Map/Reduce
首先来看一下数据:12345hive> select * from test;OK1 32 23 1假设,我们要输出每一列的md5值。在目前的hive中是没有这个udf的。我们看一下Python的代码:123456789101112#!/home/tops/bin/python import sysimport hashlib for line in sy...转载 2018-06-22 12:15:52 · 643 阅读 · 0 评论 -
Hive调用python脚本实现数据清洗、统计过程
本实例通过python脚本对电影数据进行清洗,帮助读者了解hive调用python脚本的整个流程。操作步骤:1、创建基表CREATE TABLE u_data ( userid INT, //用户ID movieid INT, //电影ID rating INT, //电影评分 unixtime STRING)。 //时间戳ROW FORMAT DELIMITEDF...转载 2018-06-22 12:15:01 · 2874 阅读 · 0 评论 -
HIVE External&TBLPROPERTIES(二)
HIVE External&TBLPROPERTIES(二)1.Externalhive中有两种表:外部表和内部表(managed and external)。可以通过desc formatted table_name 命令来查看表的信息,来辨别表是外部表还是内部表。 内部表的文件,元数据和统计信息等由hive进行管理,被存储在hive.metastore.warehouse.dir 目录...转载 2018-05-16 13:37:46 · 1849 阅读 · 0 评论 -
Hive 脚本执行
hive执行脚本hive -e “sql语句” 会将查询的结果打印在控制台上。 hive -e “sql语句” >> xxx 会将查询的结果重定向到xxx文件中,会显示OK和抓取的数据条数 hive -S -e “sql语句” >> xxx 会将查询的结果重定向到xxx文件中,不会显示OK和抓取的数据条数 hive -f sqlfile 执行文件中的sql(用于sql比较长...转载 2018-05-14 13:51:15 · 2678 阅读 · 0 评论 -
Hive UDTF 多粒度计算优化
原创 2018-05-04 15:38:23 · 272 阅读 · 0 评论 -
Hive修改表语句
本章将介绍如何修改表的属性,如,修改表名,修改列名,添加列,并删除或替换列。Alter Table 语句它是在Hive中用来修改的表。语法声明接受任意属性,我们希望在一个表中修改以下语法。ALTER TABLE name RENAME TO new_nameALTER TABLE name ADD COLUMNS (col_spec[, col_spec ..转载 2017-03-16 19:45:25 · 305 阅读 · 0 评论 -
Hive四种数据导入方式
Hive的几种常见的数据导入方式这里介绍四种:(1)、从本地文件系统中导入数据到Hive表;(2)、从HDFS上导入数据到Hive表;(3)、从别的表中查询出相应的数据并导入到Hive表中;(4)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。一、从本地文件系统中导入数据到Hive表先在Hive里面创建好表,如下:转载 2017-03-16 19:40:42 · 668 阅读 · 0 评论 -
如何解决hive同时计算多个分位数的问题
http://blog.csdn.net/sinat_27339001/article/details/52189843众所周知,原生Hive没有计算中位数的函数(有的平台会有),只有计算分位数的函数percentile在数据量不大的时候,速度尚可。但是数据量一上来之后,完全计算不出来。那么如何解决这个问题呢,我们可以使用 row_number() over转载 2017-04-07 22:01:12 · 2078 阅读 · 1 评论 -
Hive – Distinct 的实现
准备数据语句SELECT COUNT, COUNT(DISTINCT uid) FROM logs GROUP BY COUNT;hive> SELECT * FROM logs;OKa 苹果 3a 橙子 3a 烧鸡 1b 烧鸡 3 hive> SELECT COUNT, COUNT(DISTINCT uid) FROM logs GROUP BY COUNT;转载 2017-03-21 14:03:16 · 689 阅读 · 0 评论 -
Hive SQL优化之 Count Distinct
Hive SQL优化之 Count DistinctHive是Hadoop的子项目,它提供了对数据的结构化管理和类SQL语言的查询功能。SQL的交互方式极大程度地降低了Hadoop生态环境中数据处理的门槛,用户不需要编写程序,通过SQL语句就可以对数据进行分析和处理。目前很多计算需求都可以由Hive来完成,极大程度地降低了开发成本。目前,Hive底层使用MapRed转载 2017-03-21 12:24:42 · 1383 阅读 · 0 评论 -
Hive SQL的编译过程
来源: http://tech.meituan.com/hive-sql-to-mapreduce.htmlHive是基于Hadoop的一个数据仓库系统,在各大公司都有广泛的应用。美团数据仓库也是基于Hive搭建,每天执行近万次的Hive ETL计算流程,负责每天数百GB的数据存储和分析。Hive的稳定性和性能对我们的数据分析非常关键。在几次升级Hive的过程中转载 2017-03-21 11:35:01 · 535 阅读 · 0 评论 -
Hive中的排序语法
目录(?)[-]Hive中的排序语法 ORDER BYSORT BYDISTRIBUTE BY with SORT BYCLUSTER BY来代替总结Hive配置中有个参数hive.mapred.mode,分为nonstrict,strict,默认是nonstrict如果设置为strict,会对三种情况的语句在compile环节做过滤:1. 笛卡尔积Jo转载 2017-03-20 18:13:33 · 1114 阅读 · 0 评论 -
HIVE 数据倾斜调优总结
在做Shuffle阶段的优化过程中,遇 到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些 Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段 的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据转载 2017-03-20 17:32:57 · 382 阅读 · 0 评论 -
hive sql 优化
优化时,把Hive sql当做map reduce程序来读,会有意想不到的惊喜。理解Hadoop的核心能力,是hive优化的根本。这是这一年来,项目组所有成员宝贵的经验总结。 对分区插入数据(每次都会覆盖掉原来的数据):hive.map.aggr=trueMap 端部分聚合,相当于Combinerhive.groupby.skewindata=true有数据倾斜转载 2017-03-20 17:31:14 · 346 阅读 · 0 评论 -
Hive中Order by和Sort by的区别是什么?
使用order by会引发全局排序select * from baidu_click order by click desc;使用distribute和sort进行分组排序select * from baidu_click distribute by product_line sort by click desc;转载 2017-03-20 16:58:15 · 346 阅读 · 0 评论 -
深入浅出数据仓库中SQL性能优化之Hive篇
摘要:Hive查询生成多个map reduce job,一个map reduce job又有map,reduce,spill,shuffle,sort等多个阶段,所以针对hive查询的优化可以大致分为针对MR中单个步骤的优化,针对MR全局的优化以及针对整个查询的优化。一个Hive查询生成多个Map Reduce Job,一个Map Reduce Job又有Map,Reduce,Spil转载 2017-03-20 16:09:01 · 192 阅读 · 0 评论 -
Hive高级查询(group by、 order by、 join等)
查询操作group by、 order by、 join 、 distribute by、sort by、 clusrer by、 union all1212底层的实现 mapreduce常见的聚合操作count计数count(*) 所有值不全为NULL时,加1操作count(1) 不管有没有值,只要有这条记录,值就加1count(col)转载 2017-03-20 15:12:28 · 306 阅读 · 0 评论 -
Hive 内建操作符与函数开发——深入浅出学Hive
目录:初始HiveHive安装与配置Hive 内建操作符与函数开发Hive JDBChive参数Hive 高级编程Hive QLHive Shell 基本操作hive 优化Hive体系结构Hive的原理 配套视频课程 第一部分:关系运算Hive支持的关系运算符转载 2017-03-23 11:44:53 · 657 阅读 · 0 评论 -
Hive – Group By 的实现 explain分析
目录(?)[-]准备数据计算过程OperatorExplain准备数据[java] view plain copySELECT uid, SUM(COUNT) FROM logs GROUP BY uid; [java] view plain copyh转载 2017-03-23 18:35:34 · 1591 阅读 · 0 评论 -
Hive的窗口函数
如果在一条Hive SQL涉及到多个窗口函数的引用方法如下:select p_mfgr, p_name, p_size,sum(p_size) over w1 as s1,sum(p_size) over w2 as s2,sum(p_size) over w3 as s3from partwindow w1 as (distribute by p_mf转载 2017-03-16 19:35:00 · 361 阅读 · 0 评论