前言 Hive是一个基于Hadoop的数据仓库, 可以将结构化的数据映射为一张数据表, 并提供简单的SQL查询功能, 他会将SQL转化为MapReduce的方式运行, 因为它支持原生的SQL语句,并能够将它转变为...下载HIVE 假设你的电脑已经安装了MySQL 我的Hadoop版本是2.9.2, 我下载的对应HIVE版本是1.2.2 之前下载了 2.3.4 结果版本太新不匹配 https://hive.apache.org.../downloads.html tar xvzf apache-hive-1.2.2-bin.tar.gz sudo mv apache-hive-1.2.2-bin /opt/hive-1.2.2 2...配置HIVE 2.1 配置环境变量 vim ~/.bashrc # Hive export HIVE_HOME=/opt/hive-1.2.2 export PATH=${HIVE_HOME}.../bin:$PATH source ~/.bashrc 2.2 修改HIVE配置文件 cd $HIVE_HOME/conf vim hive-site.xml # 添加如下内容
0.安装环境和版本 Ubuntu 16.04,Hadoop版本是2.7.2 ,选择Hive版本为 hive-2.1.17 1....Hive安装包下载 地址: https://mirrors.tuna.tsinghua.edu.cn/apache/hive/ 2.上传到服务器后解压 sudo mv apache-hive-2.1.1...=/usr/local/hive export HIVE_CONF_DIR=$HIVE_HOME/conf export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib export...1) 创建hive数据库和用户 GRANT all privileges on *.* TO 'hive' identified by 'Hive@12345'; create database hive...配置hive-site.xml文件 1) 配置hive-site.xml文件 cd $HIVE_HOME/conf cp hive-default.xml.template hive-site.xml
主机环境 : Ubuntu 13.10 Hadoop 1.2.1 Hive 0.12.0 下载解压和转移...: wget http://mirrors.hust.edu.cn/apache/hive/hive-0.12.0/hive-0.12.0.tar.gz tar -...cd conf cp hive-default.xml.template hive-site.xml Hive的主要配置项 : hive.metastore.warehouse.dir...指定Hive的存储目录 hive.exec.scratchdir 指定hive的数据临时文件目录 连接数据库的配置 : Hive需要将元数据存储在...hive-0.12.0/lib/hive-common-0.12.0.jar!
1.安装MySQL 1.1安装MySQL Server 在Ubuntu下面安装MySQL的Server很简单,只需要运行: sudo apt-get install mysql-server 系统会把MySQL...2.下载并配置Hive 2.1下载Hive 首先我们到官方网站,找到Hive的下载地址。...然后在master服务器上,wget下载hive的编译好的文件,我现在最新版是Hive 2.1.1 : wget http://mirror.bit.edu.cn/apache/hive/hive-2.1.1...:${JAVA_HOME}/lib:${JRE_HOME}/lib:/usr/local/hive/lib 2.3配置hive-env.sh 所有Hive的配置是在/usr/local/hive/conf...FIELDS TERMINATED BY '\t'; 3.2插入数据 是insert语句可以插入单条数据: insert into Users values(1,'Devin'); 如果要导入数据 我们在Ubuntu
存储原理: hive的数据存储在HDFS上,hive的表其实就是HDFS的目录,hive没有自己的数据存储格式,存储结构主要包括:数据库、文件、表、视图、索引。...hive默认可以直接加载text文本文件等。创建表时,指定hive的数据的列分隔符与行分隔符,hive即可解析数据。...表: Hive中的表和关系型数据库中的表在概念上很类似,每个表在HDFS中都有相应的目录用来存储表的数据,这个目录可以通过${HIVE_HOME}/conf/hive-site.xml配置文件中的hive.metastore.warehouse.dir...如果我有一个表table1,那么在HDFS中会创建/user/hive/warehouse/table1目录(这里假定hive.metastore.warehouse.dir配置为/user/hive/...由于Hive的元数据需要不断的更新、修改,而HDFS系统中的文件是多读少改的,这显然不能将Hive的元数据存储在HDFS中。目前Hive将元数据存储在数据库中,如Mysql、Derby中。
首先,Hive != SQL,虽然二者的语法很像,但是Hive最终会被转化成MapReduce的代码去执行,所以数据库的优化原则基本上都不适用于 Hive。...尽管看起来多了一条Hive QL,但是后两个任务需要扫描的数据将会变得很小。...四、UDF 在Hive中很多时候都需要做一些复杂的计算或者逻辑处理,这时候Hive本身作为一个通用框架没法很好地支持,所以有了UDF(User Defined Function)。...2、编写UDF 编写UDF十分简单,引入hive-exec包,继承org.apache.hadoop.hive.ql.exec.UDF类,实现evaluate方法即可,方法的输入和输出参数类型就是当你在...Hive中调用时的输入和返回值。
Hive是什么? 由facebook开源的用于解决海量结构化日志的数据统计,后称Apache Hive 的开源项目。 Hive是基于Hadoop文件系统上的数据仓库架构。存储用HDFS,计算用MR。...同时Hive还定义了类SQL语言--Hive QL,允许用户进行和SQL相似的操作。他可以将结构化数据的数据文件转化为一张数据表,并提供简单的查询功 能。可以将SQL转化为MapReduce语句。...Hive可以理解成为一个工具,不存在主从结构,不用安装到每台机器上,只需要安装几台就行了。 默认数据库:derby,后期转换成关系型数据库mysql。...看看下图hive在Hadoop生态系统中的位置。 ? 接着看下Hive体系结构。 ? Meta store引进元数据。 HDFS和MapReduce。
如上图所示: Hive 提供了 CLI(hive shell)、JDBC/ODBC(Java 访问 hive)、WeibGUI 接口(浏览器访问 hive); Hive 中有一个元数据存储(Metastore...2.Hive 基本操作 2.1 Hive 常用命令 在终端输入 hive -help 会出现: usage: hive -d,--define Variable...另外,Hive 也会读入 Hadoop 的配置,因为 Hive 是作为 Hadoop 的客户端启动的,Hive 的配置会覆盖 Hadoop 的配置。...3、 只需要在创建表的时候告诉 Hive 数据中的「列分隔符和行分隔符」,Hive 就可以解析数据 Hive 的默认列分隔符:控制符 「Ctrl + A,\x01 Hive」 的; Hive 的默认行分隔符...6.Reference 尚硅谷Hive教程(新版hive框架详解) Hive学习之路 (一)Hive初识 Hive内部表与外部表的区别
一.前述 本节主要描述Hive的优化使用,Hive的优化着重强调一个 把Hive SQL 当做Mapreduce程序去优化 二.主要优化点 1.Hive运行方式: 本地模式 集群模式 本地模式 开启本地模式...: set hive.exec.mode.local.auto=true; 注意: hive.exec.mode.local.auto.inputbytes.max默认值为128M 表示加载文件的最大值...对于小表可以直接从从hdfs直接拿到本地计算 2.并行计算 通过设置以下参数开启并行模式: set hive.exec.parallel=true; 注意:hive.exec.parallel.thread.number...= true; (该参数为true时,Hive自动对左边的表统计量,如果是小表就加入内存,即对小表使用Map join)(默认左边的加载到内存中去) 相关配置参数: hive.mapjoin.smalltable.filesize...sum,count时使用) 通过设置以下参数开启在Map端的聚合: set hive.map.aggr=true; 相关配置参数: hive.groupby.mapaggr.checkinterval
Hive基础02、安装Hive 前置 开启【hdfs】,六个服务都要在。...start-all.sh jps 安装Hive 1、解压【Hive】 tar -zxvf apache-hive-2.1.0-bin.tar.gz 由于命名不合适,所以更换一下: mv apache-hive...-2.1.0-bin/ hive 2、修改配置 在“/opt/hive/conf”目录下拷贝“hive-default.xml.template”与“hive-env.sh.template”两个文件...,并将拷贝后文件的名称分别变为“hive-site.xml”与“hive-env.sh” cd /opt/soft/hive/conf/ cp hive-default.xml.template...hive-site.xml cp hive-env.sh.template hive-env.sh 3、添加环境变量 vi hive-env.sh export JAVA_HOME=/opt/soft
Hive的所有数据都存在HDFS中. (1)Table:每个表都对应在HDFS中的目录下,数据是经过序列化后存储在该目录中。...同时Hive也支持表中的数据存储在其他类型的文件系统中,如NFS或本地文件系统。...Hive的整体架构图如下: ?...HiveMetastoreCatalog是Spark中对Hive Metastore访问的wrapper.HiveMetastoreCatalog通过调用相应的Hive API可以获得数据库中的表及表的分区...它会通过Hive client来访问MetaStore的元数据。
(as of Hive 0.9.0)....(As of Hive 0.10.0; bug with float types fixed in Hive 0.14.0, decimal type support added in Hive 0.14.0...(As of Hive 1.1.0.)....(As of Hive 0.8.0.)....(As of Hive 0.10.).「将结构体数组提取出来并插入到表中」 9.Reference Hive学习之路 (九)Hive的内置函数 LanguageManual UDF
Hive基础07、Hive引入Map 1、建表语句 创建一个成绩表,记录学生的各个科目成绩: 英文关键字解析: 1、CREATE TABLE 创建一个指定名字的表,如果库中已有相同名的表,则抛出异常...外部表在建表的同时必须指定一个指向实际数据的路径(LOCATION),Hive在创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。...5、CLUSTERED BY 对于每一个表(table)或者分区, Hive 可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分,Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中...8、LOCATION 定义 hive 表的数据在 hdfs 上的存储路径,一般管理表(内部表不不要自定义),但是如果定义的是外部表,则需要直接指定一个路径。
Hive基础06、Hive引入数组 目录 Hive基础05、Hive引入数组 1、建表语句 2、创建【arrayInfo.txt】 3、上传到【/soft/temp/】 4、引入数组操作 ----...外部表在建表的同时必须指定一个指向实际数据的路径(LOCATION),Hive在创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。...5、CLUSTERED BY 对于每一个表(table)或者分区, Hive 可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分,Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中...8、LOCATION 定义 hive 表的数据在 hdfs 上的存储路径,一般管理表(内部表不不要自定义),但是如果定义的是外部表,则需要直接指定一个路径。
前提:开启hadoop,关闭safe模式(关闭safe模式命令:hdfs dfsadmin -safemode leave) (1)创建一个数据库hive_test ?...(2)切换到hive_test ? (3)在数据库里面创建表hive_table ?...注意:这里的数据类型的写法和mysql不是很像,因为我们是从一个结构数据直接导入到我们的hive中,所以不需要在后面加括号写多大的数据,并且后面的row format跟的东西是我们以逗号将数据分开。...在hive目录下: ? 在warehouse目录下: ? 找到了我们的hive_test表,并且在hive_test.db目录下能找到我们创建的hive_table表: ?...(6)将此文件导入hive_table中 ? (7)查看数据是否加入成功 ? ? ? 可见导入成功 (8)再次查看hdfs ? 可见,相当于将此文件复制到了hdfs下
这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库。...> hive.metastore.warehouse.dir /user/hive_remote...> hive.metastore.warehouse.dir /user/hive...2.Remote分开:将hive-site.xml配置文件拆为如下两部分 服务端配置文件(因为服务端需要和Mysql通信,所以服务端需要Mysql的lib安装包到Hive_Home/conf目录下...dev/null & 客户端直接使用hive命令即可!!!
2. hive执行过程实例分析 Hive 将 HQL 转换成一组操作符(Operator),比如 GroupByOperator, JoinOperator 等 操作符 Operator 是 Hive...设定为严格模式(hive.mapred.mode=strict)时,不允许在 HQL 语句中出现笛卡尔积, 这实际说明了 Hive 对笛卡尔积支持较弱。...遗憾的是 Hive 的估计机制很弱,不指定 reducer 个数的情况下,Hive 会猜测确定一个 reducer 个数,基于以下两个设定: hive.exec.reducers.bytes.per.reducer...3.9 合并 MapReduce 操作 Multi-group by 是 Hive 的一个非常好的特性,它使得 Hive 中利用中间结果变得非常方便。...启动本地模式涉及到三个参数: 参数名 默认值 备注 hive.exec.mode.local.auto false 让 hive 决定是否在本地模式自动运行 hive.exec.mode.local.auto.input.files.max
Hive降低了将这些应用程序转移到Hadoop系统上的难度。凡是会使用SQL语言的开发人员都可以很轻松的学习并使用Hive。...如果没有Hive,那么这些用户就必须学习新的语言和工具,然后才能应用到生产环境中。另外,相比其他工具,Hive更便于开发人员将基于SQL的应用程序转移到Hadoop中 。...如果没有Hive,那么开发者将面临一个艰巨的挑战,如何将他们的SQL应用程序移植到Hadoop上。 Hive不是一个完整的数据库。...Hadoop以及HDFS的设计本身约束和局限性地限制了Hive所能胜任的工作。其中最大的限制就是Hive不支持记录级别的更新、插入或者删除操作。但是用户可以通过查询生成新表或者将查询结果导入到文件中。...传统数据库中在秒级别可以完成的查询,在Hive中,即使数据集相对较小,往往也需要执行更长的时间。 引自Hive编程指南
Hive.png Hive 运行方式 命令行 脚本 jdbc webui 搭建模式 local 单用户模式 远程模式/多用户模式 一般模式 Beeline · 服务器hiveserver2启动 · 客户端...beeline连接 HQL 建表(create) 内部表 · hive管理,删除表时源数据消失 外部表 · 非hive管理,删除表时源数据不消失 查看表描述(desc) DML 和sql基本类似,用到查询即可...分区 静态分区 动态分区 分桶 适用场景 抽样 map-join 索引 提高检索性能 SerDe 用于序列化与反序列化 构建数据存储和执行引擎之间用于解耦 用于hive和hbase的交互中 JDBC...默认端口10000 Hive函数 内置函数 自定义函数 继承udf或者udaf 重写evaluate方法 参数 配置文件 set命令 hive cli时设置(一次性) Lateral View 解决多个
一、前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要。...二、具体步骤 hive和hbase同步 https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 1、把hive-hbase-handler...-1.2.1.jar cp到hbase/lib 下 同时把hbase中的所有的jar,cp到hive/lib 2、在hive的配置文件增加属性: hbase.zookeeper.quorum node5,node6,node7 3、在hive中创建临时表 CREATE...外部表不可以,因为hive不管理数据,所以不会帮hbase创建表,得在hbase中先创建表。所以最好创建外部表!!! 4.版本依赖需要注意!!! ?
领取专属 10元无门槛券
手把手带您无忧上云