HIve的概念,发展,历史,部署,入门,加载数据
Hive – 天天会用到的hive
#产生背景
MapReduce编程不方便:开发、测试、需求变更传统关系型数据库人员的需要 关系型数据库:是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据标准数据查询语言SQL就是一种基于关系数据库的语言
DBA:我就像使用sql一样的方式来处理分析大数据
==> Hive的产生
文件存放在HDFS之上的,那么如果你想使用SQL去处理它,需要一个什么前提?HDFS 上面文件都是文本 想办法转化数据 创建一张表,每张表的字段跟hdfs文本对应结构化、文件映射成表格 ==> Schema用它来说实现 元数据信息(metastore)
Hive是什么:
官网:hive.apache.org
data warehouse 数据仓库
The Apache Hive ™ data warehouse(仓库) software facilitates(促进) reading, writing, and managing large datasets residing(住) in distributed(分布式的) storage using SQL
使用sql对大的数据集分布式读和写的处理,
分布式存储:HDFS、S3、OSS
hdfs://xxxxxxx
s3://.....Facebook开源:最开始是解决海量结构化日志的数据 pv uv用来处理日志的额,每天访问多少ip
构建在Hadoop之上的数据仓库,
Hive定义了SQL语言:HQL (类SQL)
hadoop适合通常用于离线处理,所以hive也适合离线处理
SQL =====Hive=====MapReduce/Spark/Tez===>YARNhive执行引擎
Hive on MapReduce
Hive on Spark 写个sql语句经过hive框架翻译成spark上作业
Hive on Tez
Hive发展历程
08/07 07年8月 Facebook
05/13 13年5月 0.11 Stinger Phase 1 ORC列式存储 HiveServer2把hive提起来,相当于一个客户端就可以连接起来 Stinger计划
10/13 0.12 Stinger Phase 2 ORC improvement 性能改进
04/14 0.13 Stinger Phase 3 Tez and Vectorized query engine 向量化查询引擎
11/14 0.14 Stinger.next Phase 1: Cost-based optimizer 优化
面试 为什么要使用Hive
1) SQL方便写 简单容易
2) Hadoop 能够操作大规模数据集 ,如果不够就加机器,
3) MetaStore: Pig/Impala/Presto/SparkSQL 共享元数据信息 MetaStore 是数据库
hive 部署架构
视频6多看看
Hadoop 分布式 集群
Hive 仅仅只是客户端而已
sql 客户端 到hive 提交到hadoop集群的RM 上
元数据信息的存储就是使用mysql的
生产上一定要部署2mysql 防止挂掉,没有元数据了 ,
Hive与RDBMS的关系
相同点:都是用SQL Hive QL和SQL的关系:两者没有任何关系,只是语法相似而已
实时性 RDBMS发出一个数据,会马上出现 hive是实时性很差
事务 大数据里面的事务 特别是这种离线处理就是鸡肋,没有什么意义 工作当中不用考虑用hive sql去处理事务
分布式hive支持分布式
数据量 hive支持大量的
Hive部署
视频8
查找 chd版本 搜索hadoop-2.6.0-cdh5.7.0
下载:http://archive-primary.cloudera.com/cdh5/cdh/5/
在使用CDH版本的时候一定要注意:尾巴对准了
hadoop采用5.7.0 所以hive也采用5.7.0
wget http://archive-primary.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz
解压:tar -xzvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app/
配置环境变量: ~/.bash_profileexport HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0export PATH=$HIVE_HOME/bin:$PATH
生效: source ~/.bash_profile
Hive配置:$HIVE_HOME/confhive-env.shHADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0hive-site.xml配置的就是MySQL的相关信息 hive这里面也要配置mysql的信息<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/ruoze_d5?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8</value>
</property> 这里是hive字符集更改<property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value>
</property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value>
</property><property><name>javax.jdo.option.ConnectionPassword</name><value>root</value>
</property>
我们要hive连接mysql 所以 拷贝mysql驱动到$HIVE_HOME/lib
[hadoop@hadoop001 ~]$ cd software
[hadoop@hadoop001 software]$ ll
total 852
-rw-r--r-- 1 hadoop hadoop 872300 Nov 19 20:06 mysql-connector-java-5.1.27.jar
cp一份就可以了 到$HIVE_HOME/lib
可能遇到的问题:mysql赋权
启动hive
bin下面 ./hive
快速入门
hive > create table ruoze_helloworld(id int,name string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;
hdfs上的文件是有字段的分隔符,所以你创建的内容一定要与hdfs的内容关联上,
这里会挂,为什么怎么办
先看日志
我们要考虑一下mysql里面的数据集对不对
alter database ruoze_d5 character set latin1;
去mysql更改一下
进入mysql
use切换到数据库
把这个贴过来更改一下alter database ruoze_d5 character set latin1;
在重新
hive > create table ruoze_helloworld(id int,name string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;
就可以了ok
加载数据
load data local inpath ‘/home/hadoop/data/helloworld.txt’ overwrite into table ruoze_helloworld;
加载数据从本地 local指机器 去掉的话就是hdfs 文件的pwd 路径 重新写到那张表
select * from ruoze_helloworld;
select count(1)from ruoze_helloworld;
看外部界面8088 之前要把yarn启动 jps
这个select语句,hive就把提交到yarn上运行
HIve的概念,发展,历史,部署,入门,加载数据相关推荐
- Hive JSON数据处理:get_json_objec、json_tuple、用JSON Serde加载数据
Hive JSON数据处理 文章目录 Hive JSON数据处理 将JSON保存为字符串,用JSON函数处理 get_json_object json_tuple 用JSON Serde加载数据 将J ...
- Hive 加载数据跳过表头
Hive 加载数据跳过表头 问题 问题描述 hive加载数据时把表头当作数据加载到表中 执行命令 load data inpath "hdfs://node4.co:9000/hotelsp ...
- tomcat + spring mvc原理(六):tomcat WAR包的部署与加载
tomcat + spring mvc原理(六):tomcat WAR包的部署与加载 前言 监控的启动原理 状态监听 部署项目 前言 单独部署的tomcat服务器在运行中,当开发人员或者运维人员将开发 ...
- Hive加载数据操作
Hive加载数据操作 一.load data 语法结构: load data [local] inpath 'filepath' [overwrite] into table table_name [ ...
- 时间序列数据库——索引用ES、聚合分析时加载数据用什么?docvalues的列存储貌似更优优势一些...
加载 如何利用索引和主存储,是一种两难的选择. 选择不使用索引,只使用主存储:除非查询的字段就是主存储的排序字段,否则就需要顺序扫描整个主存储. 选择使用索引,然后用找到的row id去主存储加载数据 ...
- 用python的五种方式_Python加载数据的5种不同方式(收藏)
数据是数据科学家的基础,因此了解许多加载数据进行分析的方法至关重要.在这里,我们将介绍五种Python数据输入技术,并提供代码示例供您参考. 作为初学者,您可能只知道一种使用p andas.read_ ...
- 【TensorFlow-windows】keras接口——利用tensorflow的方法加载数据
前言 之前使用tensorflow和keras的时候,都各自有一套数据读取方法,但是遇到一个问题就是,在训练的时候,GPU的利用率忽高忽低,极大可能是由于训练过程中读取每个batch数据造成的,所以又 ...
- List 分页加载数据控制机制
分页加载是一种应用很广泛的数据展示控制机制,相信绝大多数开发者对于这一套机制都非常熟悉.这篇文章的主要目的结合实际的使用场景,对以往在开发中遇到一些概念进行梳理,归纳的同时加深理解,也希望能帮助更多刚 ...
- spring 启动加载数据_12个很棒的Spring数据教程来启动您的数据项目
spring 启动加载数据 Spring Data的任务是为数据访问提供一个熟悉且一致的,基于Spring的编程模型,同时仍保留基础数据存储的特殊特征. 它使使用数据访问技术,关系和非关系数据库, ...
最新文章
- 使用卷积神经网络预防疲劳驾驶事故
- [Objective-c基础教程] chapter one Before You Start chapter two Extensions to C
- Spring进行表单验证
- 主流html5桌面应用开发,主流HTML5开发工具推荐
- servlet后台如何接受multpartfile_Servlet进阶教程(你不得不知道的Servlet知识点)
- 实例化bean的三种方式
- [小技巧]ASP.NET Core中如何预压缩静态文件
- 下载Pytorch的自带数据集时报错=urllib.error.URLError: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]
- oracle rman和数据泵,使用RMAN或数据泵初始化OGG目标库
- Maven整合Spring与Solr
- 好用的MARKDOWN编辑器一览
- 用Python爬取网易云音乐全部歌手信息(歌手id和歌手名字)
- 有哪些好用的论文检索网站?
- Xmind中图标的导入和导出
- IT互联网行业猎头的年终总结:结束后开始
- 这心态也太好了!阿水赛前与kid双排狂说骚话:赢了血赚输了不亏
- win10检查更新后,蓝牙没了,卸载usb也没有用,蓝牙 未知usb设备 设备描述符请求失败
- 将APP变成黑白的颜色
- Excel2003 找回工作表密码方法
- 英特尔530和535哪个好_2020年终好物推荐,英特尔Evo平台认证更出彩
热门文章
- potala(5)——Unit Test and Cache
- Linux命令j解释之cp
- java 两个数据合并_R:两个数据帧合并
- mysql多数据库并发控制_什么是数据库并发控制?数据库并发控制的主要方法是?...
- 【求助】如何从 Spark 的 DataFrame 中取出具体某一行?我自己的一些思考
- 【python】一道LeetCode搞懂递归算法!#131分割回文串 #以及刷LeetCode的一点点小心得 [数据结构与算法基础]
- 1.4 php编译安装-安装顺序在最后
- 解决Linq.ToDictionary()时的键重复问题
- -xdebug java8_多种高级debug方法,帮你更快定位问题
- 微信小程序点击按钮弹出弹窗_转载 | 广东大学生就业创业微信小程序操作流程详解(一)...