下载地址: http://www.gqylpy.com/di/10《Hive编程指南.pdf》PDF高清完整版-下载
复制这段内容后打开百度网盘手机App,操作更方便哦
内容简介《Hive编程指南》是一本ApacheHive的编程指南,旨在介绍如何使用Hive的SQL方法——HiveQL来汇总、查询和分析存储在Hadoop分布式文件系统上的大数据集合。《Hive编程指南》通过大量的实例,首先介绍如何在用户环境下安装和配置Hive,并对Hadoop和MapReduce进行详尽阐述,演示Hive如何在Hado...
1.insert
Insert时,from子句既可以放在select子句后,也可以放在insert子句前,下面两句是等价的
hive> FROM invites a INSERT OVERWRITE TABLE eventsSELECT a.bar, count(*) WHERE a.foo > 0 GROUP BY a.bar;
hive> INSERT OVERWRITE TABLE events SELECTa.bar, count(*) FROM invites a WHERE a.foo > 0 GROUP BY a.bar;
2.导出文件到本地
INSERTOVERWRITE LOCAL DIRECTORY ‘/tmp/local_out‘ SELECT a.* FROM pokes a;
一个源...
hive其实做的就是解析一条sql然后形成到mapreduce任务,就是一个代码解释器。hive源代码本身就可以分为ql/metasotre/service/serde
这几块;其中
对于Hive来说,ql是整个Hive最最核心的一个模块,Hive主要的功能都集中在这样一个模块中,即org.apache.hadoop.hive.ql.*,其中最重要的几个模块:parse:语法解析器和语义分析器,将SQL转化为执行计划。optimizer:优化器,包括执行计划Operator图的改写(逻辑优化)和Task图的改写...
优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜。
理解hadoop的核心能力,是hive优化的根本。这是这一年来,项目组所有成员宝贵的经验总结。
长期观察hadoop处理数据的过程,有几个显著的特征:
1.不怕数据多,就怕数据倾斜。
2.对jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,没半小时是跑不完的。map reduce作业初始化的时间是比较长的。
3.对sum,co...
set自定义变量今天踩了一个坑:在hive的命令行操作中,用set 命令可以自定义出一个变量,但是在函数中使用时确调不出来,如图 在查找原因时,这位大佬的博客https://www.cnblogs.com/superpang/p/4639145.html启发了我,会不会是命名空间的原因让函数调用时无法找到变量呢 这次用带命名空间的方式重新定义了变量,然后再次调用函数,见证奇迹的时刻到了! 这说明“在hive中使用set操作自定义变量时,hivevar:命名空间不是可选的...
这几天都在学习Hive,在安装方面花费了不少时间,主要问题集中在:1)创建数据库后创建表不成功,提示Specified key was too long; max key length is 767 bytes 长度的问题。因为用的不是案例的数据库,傻不拉几折腾了好些时间。2)总算创建表成功了,在删除表的时候又没反应了,也不知道是什么原因。可能也许大概或许是安装的mysql有问题,这是windows上面的mysql,之前没接触过mysql,甚至连安装都按BD文库弄的,也花不了那么多...
或者current_date
获取当前时间:from_unixtime(unix_timestamp()) -->返回格式:yyyy-MM-dd HH:mm:ss:current_timestamp() -->返回格式:yyyy-MM-dd HH:mm:ss.xxx
2.时间戳转为日期
from_unixtime(时间戳,string format=yyyy-MM-dd HH:mm:ss) //实际写出来不需要带string,只是表明格式
--时间戳为10位,H为24小时计数,h为12小时计数
--string format:默认标准格式为 yyyy-MM-dd HH:mm:ss
--其他格式写法多种...
对于 JOIN 操作:Map: 以 JOIN ON 条件中的列作为 Key,如果有多个列,则 Key 是这些列的组合以 JOIN 之后所关心的列作为 Value,当有多个列时,Value 是这些列的组合。在 Value 中还会包含表的 Tag 信息,用于标明此 Value 对应于哪个表。按照 Key 进行排序。Shuffle: 根据 Key 的值进行 Hash,并将 Key/Value 对按照 Hash 值推至不同对 Reduce 中。Reduce: Reducer 根据 Key 值进行 Join 操作,并且通过 Tag 来识别不同的表中...
1.写在前面
在利用spark计算引擎将kafka或其他源数据组件的数据入hive形成数仓的过程中有两种方式,一种方式是利用spark Rdd的API将数据写入hdfs形成hdfs文件,之后再将文件和hdfs文件和hive表做加载映射。第二种方式是利用sparkSQL将获取的数据Rdd转换成dataFrame,再将dataFrame写成缓存表,最后利用sparkSQL直接插入hive表中。这两种方式各有各自的优点。但大多数开发者更倾向于后者一次编码一步到位的方式。而对于利用sparkSQL...
1. 环境CDH 5.16.12. Hive 使用复杂数据类型2.1 数据格式1 zhangsan:man football,basketball
2 lisi:female sing,dance2.2 Hive 建表create table studentInfo(id int,info map<string,string> comment 'map<姓名,性别>',favorite array<string> comment 'array[football,basketball]'
)
row format delimited fields terminated by '\t' --列分隔符
collection items terminated by ',' --array中各个...
hive里面有个hive -e 命令可以传参数,但是当hql语句多了以后,整个shell脚本会显得比较凌乱,当然有人可能会说hive -f可以实现直接调用一个file,bingo的确如此,但是还是有个很大的缺陷,就是这个不能传参数了,不能传参数在实际的工作中是无法忍受的。于是想到了封装一个命令HiveF,既能直接传入file,又能传参数。其实实现很简单,下面就把代码分享出来。当然还不是很完善,抛砖引玉吧。#!/bin/bash. /etc/profilecat $1 > $1....
Hive优化 Hive优化目标
在有限的资源下,执行效率更高 常见问题
数据倾斜map数设置reduce数设置其他 Hive执行
HQL --> Job --> Map/Reduce执行计划explain [extended] hql样例select col,count(1) from test2 group by col;explain select col,count(1) from test2 group by col; Hive表优化
分区静态分区动态分区
set hive.exec.dynamic.partition=true;set hive.exec.dynamic.partition.mode=nonstrict;分桶set hive.enforce.buc...
执行以下插入语句报如下错误:insert into table log_orc select * from log_text;Query ID = atguigu_20210426104635_32601bfb-de63-411d-b4a0-a9f612b43c27
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers...
Hive指标案例
准备数据表结构指标计算准备数据
先创建txt表导入数据,然后将表数据导入ORC表中
-- createtable.hql
drop database sale cascade;
create database if not exists sale;
create table sale.dimdate_ori(
dt date,
yearmonth int,
year smallint,
month tinyint,
day tinyint,
week tinyint,
weeks tinyint,
quat tinyint,
tendays tinyint,
halfmonth tinyint
)
row format delimited
fields terminated by ",";crea...
#原始示例数据#1,k1|k2|k3|k1#2,k1|k1|k5|k3|k6#3,k3|k6|k7|k8#建表语句CREATE TABLE IF NOT EXISTS words(id INT,kw STRING)ROW FORMAT delimitedFIELDS TERMINATED BY ‘,‘collection items TERMINATED BY ‘|‘;#加载数据(local从本地,否则从hdfs;overwrite覆盖原有数据)load data [local] inpath ‘J:/test.txt‘ [overwrite] into table words;#字段转行(拼接成1个字段),结果如下1 k11 k21 k31 k12 k12 k12 k52 k32 k...