Hive
大数据之Hive...
张俊杰zjj
一个大龄的码农.目前是Java+Python开发,业余时间研究减肥健身养生,后期可能会去做减肥健身博主.
展开
-
hive 修改Linux控制台日志输出级别
修改配置文件需要这个配置文件: “hive-1.2.1/conf/hive-log4j.properties”大概在第七行,修改hive.root.logger属性, 可以是 DEBUG,console 也可以是 info,consoledebug级别打印的东西比较多,比较精细.但是控制台很乱,info就简练一些了.hive-log4j.properties文件的hive.root.logger 的属性.hive.log.dir=/root/soft/hive-1.2.1/hive_logsh原创 2020-11-13 14:19:39 · 3499 阅读 · 2 评论 -
hive将写好的函数放到HDFS上面关联生成永久函数
前提已经写好了函数上传上传到/user/hive/jars/hive-functions-0.0.1-SNAPSHOT.jar 上我是用的HDFS Explorer 图形操作软件上传的,HDFS Explorer然后在hive输入:create function base_analizer as 'com.udf.MyUDF' using jar 'hdfs://zjj101:9000/user/hive/jars/hive-functions-0.0.1-SNAPSHOT.jar';就原创 2020-10-28 12:35:44 · 254 阅读 · 0 评论 -
Hive整合Tez
Tez是一个Hive的运行引擎,性能优于MR。用Hive直接编写MR程序,假设有四个有依赖关系的MR作业,上图中,绿色是Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到HDFS。Tez可以将多个有依赖的作业转换为一个作业,这样只需写一次HDFS,且中间节点较少,从而大大提升作业的计算性能。下载安装包下载tez的依赖包:http://tez.apache.org拷贝到Linux上/root/soft[root@zjj101 soft]# ll总用量 77568-rw-r-原创 2020-10-27 11:57:35 · 747 阅读 · 0 评论 -
hive 列转行函数Lateral View + explode *
列转行函数介绍EXPLODE(col)EXPLODE(col)大白话是,如果你传递的参数是Array, 会给这个Array分隔转成多行 ,如果你传递的是Map,就会给Map里面的每个元素分隔成多行和多列. 参数只能是Array或者是Mapexplode函数属于udtf,udtf在使用时候,不能和其它表达式一起出现在select子句后,言外之意只能单独出现在select子句中.LATERAL VIEW用法:LATERAL VIEW udtf(expression) tableAlias AS co原创 2020-10-03 17:15:58 · 1822 阅读 · 0 评论 -
hive 重启后台hive服务
停止hive[root@zjj101 conf]# jps22353 NodeManager90933 DataNode22105 ResourceManager90808 NameNode41900 Jps77644 RunJar[root@zjj101 conf]# kill -9 77644[root@zjj101 conf]# 启动hiveshell命令:[root@zjj101 conf]# nohup hive --service hiveserver2 &原创 2020-10-03 16:32:02 · 7989 阅读 · 2 评论 -
hive本地模式执行hive,减少sql处理结果用的时间
大多数的Hadoop Job是需要Hadoop提供的完整的可扩展性来处理大数据集的,就是在yarn上运行。不过,有时Hive的输入数据量是非常小的。在这种情况下,为查询触发执行任务消耗的时间可能会比实际job的执行时间要多的多。对于大多数这种情况,Hive可以通过本地模式在单台机器上处理所有的任务。对于小数据集,执行时间可以明显被缩短。用户可以通过设置hive.exec.mode.local.auto的值为true,来让Hive在适当的时候自动启动这个优化。主要注意的是本地MapReduce模式只有在R原创 2020-09-30 19:08:56 · 787 阅读 · 0 评论 -
hive行转列的函数与demo *
函数介绍CONCAT(string A/col, string B/col…)返回输入字符串连接后的结果,支持任意个输入字符串;CONCAT_WS(separator, str1, str2,…)它是一个特殊形式的 CONCAT()。第一个参数是指定拼接的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间;COLLECT_SET(col)函数只接受基本数据类型,它的主原创 2020-09-30 18:54:41 · 191 阅读 · 0 评论 -
hive四种排序Order By , Sort By ,Distribute By ,Cluster By
前文Hive的本质是MapReduce,MapReduce中如何排序的??MapReduce分为几种:1.全排序order By: 结果只有一个(也就是只有一个分区),所有的数据整体有序.2.部分排 序sort By: 结果有多个(相当于有多个分区),每个分区内部有序的.3.二次排序: 在排序时,比较的条件有多个,比如说按总流量排序,总流量相等就按上行流量排序.注意:排序是在reduce之前就已经排好序了,排序是shuffle阶段的主要工作.然后让Reduce方便接下来的处理准备数据原创 2020-09-28 20:29:37 · 3612 阅读 · 0 评论 -
hive 抽样查询(有时间再研究研究) *
简介对于非常大的数据集,有时用户需要使用的是一个具有代表性的查询结果而不是全部结果。Hive可以通过对表进行抽样来满足这个需求。 就是随机查询抽样查询是查询语句,只不过写的时候有指定的格式. 就是按照规则查询指定的桶的数据语法和要求①抽样查询的表必须是分桶表!②bucket x out of y on 分桶表分桶字段假设当前表一共分了z个桶x: 从当前表的第几桶开始抽样0<x<=y x不能小于y,可以等于y ,如果等于y就是查询所有了.y: z/y 代表一共抽原创 2020-09-26 17:43:50 · 561 阅读 · 0 评论 -
hive 分区表和分桶表区别 *
分区针对的是数据的存储路径;分桶针对的是数据文件。分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区,特别是之前所提到过的要确定合适的划分大小这个疑虑。分桶是将数据集分解成更容易管理的若干部分的另一个技术。...原创 2020-09-26 17:16:46 · 1014 阅读 · 0 评论 -
hive分桶表排序
参考我是照着这个学习, 并且自己又总结了一下,原作者:添加链接描述准备数据/root/soft/buckt_data.txt1,name14,name43,name36,name65,name57,name79,name98,name82,name2创建普通的表create table test( id int comment 'ID', name string comment '名字') comment '测试分桶中间表' ROW原创 2020-09-26 13:18:09 · 3500 阅读 · 0 评论 -
hive分桶表的意义和作用 *
[CLUSTERED BY (col_name, col_name, …)分桶的字段,是从表的普通字段中来取[SORTED BY (col_name [ASC|DESC], …)] INTO num_buckets BUCKETS]分铜表意义建表时指定了CLUSTERED BY,这个表称为分桶表!分桶: 和MapReduce中分区是一个概念! 是把数据分散到多个文件中!分桶的作用分桶本质上也是为了分散数据!在分桶后,可以结合hive提供的抽样查询,只查询指定桶的数据在分桶时,也可以指定将每原创 2020-09-25 19:03:20 · 2511 阅读 · 0 评论 -
hive的分桶表的基本使用
参考我是照着这个学习, 并且自己又总结了一下,原作者:添加链接描述准备数据准备 buckt_data.txt 在 /root/soft 目录下面1,name12,name23,name34,name45,name56,name67,name78,name89,name9开启分桶的配置默认是不会帮你分桶的需要打开强制分桶开关:sqlset hive.enforce.bucketing=true;需要打开强制排序开关:set hive.enforce.sortin原创 2020-09-25 19:01:33 · 586 阅读 · 1 评论 -
hive动态分区
什么动态分区,动态分区好处 往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低。因为hive是批处理系统,所以hive提供了一个动态分区功能,其可以基于查询参数的位置去推断分区的名称,从而建立分区。静态分区与动态分区的主要区别在于静态分区是手动指定,而动态分区是通过数据来进行判断。详细来说,静态分区的列实在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。准备工作准备数据order_created.原创 2020-09-24 14:22:04 · 11571 阅读 · 1 评论 -
hive多级分区表的使用
简介一个分区字段就是一级目录,如果是两个分区,就是两个分区目录,比如说 area province,那么目录就是 /area/province/xxxxxx ,数据都在xxxxxx这里.创建表二级分区使用方式就是在一级分区基础上 PARTITIONED BY后面多写个字段即可create table order_multi_partition( order_no string, order_time string) PARTITIONED BY (event_ti原创 2020-09-23 19:49:25 · 4678 阅读 · 0 评论 -
hive读取直接放到hdfs的数据,将目录加载到分区表中 *
参考:本人在参考他的文章,并且实践了一下,顺便优化了一下,详细记录了一下原作者地址使用场景在生产上,一般对数据清洗之后直接放到HDFS上,然后再将目录加载到分区表中;准备数据order_created.txt用 tab分割10703007267488 2014-05-01 06:01:12.334+0110101043505096 2014-05-01 07:28:12.342+0110103043509747 2014-05-01 07:50:12.33+01101030435015原创 2020-09-23 19:09:14 · 4025 阅读 · 0 评论 -
hive查看表的描述
查看表的描述sql:desc formatted order_partition;里面就会有表的信息和分区信息,所以真正的表字段是不包含分区字段的,分区字段是指HDFS上的一个目录的名称原创 2020-09-23 18:42:07 · 2027 阅读 · 0 评论 -
hive创建分区表报错AccessControlException Permission denied: user=NONE, access=WRITE, inode
错误提示信息[2020-09-23 18:07:58] )sql> create table order_partition ( order_no string, order_time string ) PARTITIONED BY (event_time string) row format delimited fields terminated by '\t'[2020-09-23 18:10:3原创 2020-09-23 18:23:33 · 1267 阅读 · 0 评论 -
hive分区表一级分区的基本使用 *
参考尊重原创:这个文档是参考别人的,然后自己又总结了一下…原创地址一级分区准备数据order_created.txt10703007267488 2014-05-01 06:01:12.334+0110101043505096 2014-05-01 07:28:12.342+0110103043509747 2014-05-01 07:50:12.33+0110103043501575 2014-05-01 09:27:12.33+0110104043514061 2014-05-01原创 2020-09-23 18:43:58 · 468 阅读 · 0 评论 -
hive 分区表的概念和意义*
分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。分区的意义是为了将数据分散到多个子目录中,在执行查询时,可以只选择查询某些子目录中的数据来加快查询效率.只有分区表才有子目录(分区目录)分区目录的名称由两部分确定: 分区列的列名=分区列的列值.将输入导入到指定的分区之后,数据会附加上分区列的信息原创 2020-09-23 17:52:43 · 3642 阅读 · 0 评论 -
hive加载配置文件的参数读取顺序 *
1.先读取 hadoop中的8个配置文件,2.再读取hive-default.xml 默认配置文件3.再读取用户自定义的配置文件hive-site.xml4.如果你启动hive 的时候,你加了一些参数啥的比如说 hive --hiveconf 属性名=属性值, 就会读取后面自己定义的变量...原创 2020-09-21 21:32:08 · 664 阅读 · 0 评论 -
hive1.2.1 用Datagrip连接
参考:尊重原创.这是原创作者,我在学习的时候,我看这个博客使用,照着操作成功了…就此记录一篇博客,留着自己以后查阅:https://blog.csdn.net/qq_27731689/article/details/101513115下载jar包项目中导入依赖,此时Maven仓库里面就会有这些东西,注意hive-jdbc版本要对应上,否则连不上报错.<dependency> <groupId>org.apache.hive</groupId> <ar原创 2020-09-21 19:59:27 · 1240 阅读 · 8 评论 -
hive 用beeline远程连接Permission denied: user=NONE, access=EXECUTE, inode=“/tmp/hive“:root:root:drwx-----
[root@zjj101 ~]# beelineBeeline version 1.2.1 by Apache Hivebeeline> !connect jdbc:hive2://172.16.10.101:10000/defaultConnecting to jdbc:hive2://172.16.10.101:10000/defaultEnter username for jdbc:hive2://172.16.10.101:10000/default: NONEEnter pas..原创 2020-09-21 19:25:03 · 564 阅读 · 0 评论 -
hive后台运行另外使用beeline进行连接 *
命令nohup hive --service hiveserver2 &hive默认账号密码如果没进行特殊设置的话, hive默认账号密码是 NONE使用beeline进行连接打开另外一个crt终端[root@zjj101 ~]# beelineBeeline version 1.2.1 by Apache Hivebeeline> !connect jdbc:hive2://ip:10000/defaultConnecting to jdbc:hive2://ip原创 2020-09-21 19:26:56 · 705 阅读 · 0 评论 -
hive配置运行日志到自己需要的指定目录下面 *
Hive的log默认存放在/tmp/atguigu/hive.log目录下(当前用户名下)修改hive的log日志到指定的位置上,我打算放到 /root/soft/hive-1.2.1/hive_logs 目录下, 你们随意,去/root/soft/hive-1.2.1/conf 目录下面修改hive-log4j.properties 文件修改 hive.log.dir属性配置信息hive.log.dir=/root/soft/hive-1.2.1/hive_logshive.log.file原创 2020-09-13 17:18:09 · 877 阅读 · 0 评论 -
hive和关系型数据库对比 *
语法问题关系型数据库用的是sql, hive用的是类sql,两个语法相似,但是还是有点区别的数据存储位置hive数据是存到hdfs上面的, 关系型数据库是存到本地磁盘或者别的块设备上.数据更新方便关系型数据库增删改查都能写,hive只能写查询和新增,因为hive数据存放到hdfs上面,hdfs是不支持随机写的索引方面关系型数据库是有索引的,hive也有索引,但是实现方式是不一样的. hive索引作用时是在进行输入的时候会把指定的目录过滤出来,给其它目录过滤掉.MySQL索引是方便快速将数据从原创 2020-09-13 16:20:36 · 963 阅读 · 0 评论 -
hive 将本地文件导入到hive案例*
准备数据在 /root/soft 目录下面准备student.txt ,注意以tab键间隔。[root@zjj101 soft]# vim student.txt1001 zhangsan1002 lisi1003 zhaoliu原创 2020-09-16 22:15:56 · 937 阅读 · 0 评论 -
hive简介以及优缺点
简介Hive:由Facebook开源用于解决海量结构化日志的数据统计。Hive是管理,读和写数据的工具.说简单了就是用SQL分析数据.Hive只能处理结构化数据,处理hadoop里面的数据,你在HDFS上传的数据有很多,比如说软件,视频啥的.只要是文件都能上传到HDFS上面去.但是Hive只能分析结构化的数据,Hive是坐落在hadoop之上的(使用hive前提是必须要安装了hadoop),用来分析大数据的,可以让你的查询和分析更简单.1.hive处理的数据都在hdfa中,但是hive还会存储一个原创 2020-09-13 15:14:12 · 12925 阅读 · 0 评论 -
hive的数据类型 *
基本数据类型对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。集合数据类型Hive有三种复杂数据类型ARRAY、MAP 和 STRUCT。ARRAY和MAP与Java中的Array和Map类似,而STRUCT与C语言中的Struct类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。...原创 2020-09-13 15:06:11 · 255 阅读 · 0 评论 -
hive的类型转换
首先hive是Java写的,在Java里面,低精度类型的数据类型和高精度类型的数据类型,做运算的话,这时候低精度数据类型会自动进行隐式转换(低精度数据类型变成高精度的数据类型).Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。隐式类型转换规则如下(1)任何整数类型都可以隐式原创 2020-09-13 15:02:22 · 1359 阅读 · 0 评论 -
在hive上面执行hdfs 或者Linux命令 *
你在hive上面要想查看 hdfs 的东西, 原本你需要再打开一个crt终端,现在不用了.hive面板查看hdfs上面的东西直接 dfs 后面跟上命令就可以了,比如说下面的查看hdfs 根目录下的文件有哪些hive (default)> dfs -ls /;Found 11 items-rw-r--r-- 3 root supergroup 261987 2020-08-20 11:45 /0824ab18972bd40787bafea56c899e510fb3096c.jp原创 2020-09-13 14:51:57 · 1427 阅读 · 0 评论 -
hive 配置查询后台信息显示
问题情况是现在我切换数据库 还是显示hive ,感觉体验不好, 我可以添加一下配置实现查看hive的配置:修改 /root/soft/hive-1.2.1/conf 的hive-site.xml<property> <name>hive.cli.print.header</name> <value>true</value></property><property> <name>hive.原创 2020-09-13 14:27:08 · 319 阅读 · 0 评论 -
修改hive的数据仓库位置
Default数据仓库的最原始位置是在hdfs上的:/user/hive/warehouse路径下,如果你不想用这个默认的路径是可以进行修改的修改方式在hive-site.xml文件里面去修改在conf文件夹下面去编辑[root@zjj101 conf]# pwd/root/soft/hive-1.2.1/conf<--! 配置hive的根目录,直接放到hdfs的hive目录下面 --><property> <name>hive.metasto原创 2020-09-13 14:16:44 · 2027 阅读 · 1 评论 -
hive基本操作建表啥的 *
(1)启动hive[atguigu@hadoop102 hive]$ bin/hive(2)查看数据库hive> show databases;(3)打开默认数据库hive> use default;(4)显示default数据库中的表hive> show tables;(5)创建一张表hive> create table student(id int, name string);(6)显示数据库中有几张表hive> show tables;(7)查看表原创 2020-09-12 19:46:26 · 165 阅读 · 0 评论 -
jdbc方式连接hive*
进入下面目录cd /root/soft/hive-1.2.1/bin[root@zjj101 bin]# hiveserver2运行完了就卡在这里了, 因为hiveserver2是一个前台进程.jdbc客户端连接pom 依赖<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core&l原创 2020-09-12 19:56:18 · 337 阅读 · 0 评论 -
hive元数据存到MySQL中*
hive默认是存储到Derby中的,Derby是Java语言编写的微型,常用于内嵌在Java程序中的数据库.但是derby有个缺点,Derby同一个数据库的实例文件不支持多个客户端同时访问.如果你启动了两个终端软件执行hive的话,就会抛出异常出来.hive内置数据库有个缺点就是你建了一个表关闭再打开就会发现自己当时见的表找不到了.找不到的原因是元数据schema存到了Derby中, 你启动hive之后,hive没有找到上一个Derby的数据,因为derby默认是将你数据库文件存到你执行hive指令的所原创 2020-09-11 20:15:30 · 1177 阅读 · 0 评论 -
Linux安装单体Hive demo*
准备hive tar.gz包上传到指定目录下直接rz 命令上传,其它上传工具也行解压tar -zxvf apache-hive-1.2.1-bin.tar.gz 解压完毕配置环境变量改个名字[root@zjj101 soft]# mv apache-hive-1.2.1-bin hive-1.2.1[root@zjj101 soft]# lsapache-hive-1.2.1-bin.tar.gz hadoop-2.7.2 hadoop-2.7.2.tar.gz hello.原创 2020-09-11 12:41:52 · 178 阅读 · 0 评论