Hive 入门

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 官网:hive.apache.org首先,Hive是数据仓库。可以用类SQL的语言来跑MR,可以理解为Hadoop的客户端。

官网:hive.apache.org

首先,Hive是数据仓库。可以用类SQL的语言来跑MR,可以理解为Hadoop的客户端。一方面Hive 数据都来自HDFS,另一方面Hive的代码需要提交到Hadoop中去执行,来跑MR。

HiveQL或者HQL,实际上是Hive将SQL提交,后翻译成MR,在HDFS上执行。所以Hive由解释器(解释成Java代码,提交到MR执行)、编译器、优化器等功能。

Hive在运行时元数据存储在关系型数据库中。不推荐默认的,可以使用mysql代替。具体的配置文件在conf/hive-site.xml里的ConnectionURL里面.

hive的语法和sql很像,举例

CREATE TABLE t_person(
id int,
name string,
hobby array<string>,
character map<string, string>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '_'
MAP KEYS TERMINATED BY ':';

对应的example:
1, zhangsan, sports_books_TV, sex:man_color:red

另外,只有查所有数据的时候才不执行MR, 比如:select * from table 时

创建分区表,分区实际上是个文件夹,表名就是文件夹名。每一个分区,实际上就是这个文件夹下的不同文件。分区可以根据时间、区域等进行划分,如每天一个分区或者每个城市一个分区,只要写下 where pt=20170707这样的条件即可查询指定时间得到数据。

CREATE TABLE e_stu(
id int,
sname string,
city string) PARTITIONED BY (ds string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
sTORED AS TEXTFILE;

导入数据(在hive中执行)
LOAD DATA LOCAL INPATH '/home/zkpk/ecaoyng/input/estu.txt' OVERWRITE INTO TABLE e_stu PARTITION (ds='2017-07-07')

LOAD DATA LOCAL INPATH '/home/zkpk/ecaoyng/input/estu2.txt' INTO TABLE e_stu PARTITION (ds='2017-07-08')


hive> select * from e_stu;
OK
1   young   linyi   2017-07-07
2   jerry   dalian  2017-07-07
3   ian dalian  2017-07-07
1   hello   usa 2017-07-08
2   world   France  2017-07-08
3   hadoop  English 2017-07-08
4   hive    spain   2017-07-08
Time taken: 0.087 seconds, Fetched: 7 row(s)
hive> select * from e_stu where ds = '2017-07-07';
OK
1   young   linyi   2017-07-07
2   jerry   dalian  2017-07-07
3   ian dalian  2017-07-07
Time taken: 0.211 seconds, Fetched: 3 row(s)
hive> 

hive> insert into table e_stu 
    > partition (ds = '2017-09-10')
    > select id,sname,city from e_stu;


hive> select * from e_stu where ds = '2017-09-10';
OK
1   young   linyi   2017-09-10
2   jerry   dalian  2017-09-10
3   ian dalian  2017-09-10
1   hello   usa 2017-09-10
2   world   France  2017-09-10
3   hadoop  English 2017-09-10
4   hive    spain   2017-09-10

那么hive的文件在哪里查看?从50070的页面中的browse directory 中的user目录下/user/hive/warehouse/day0525.db/e_stu 可以看到有两个文件夹

hive的四种数据导入方式,旧的版本不支持insert into values,但新版本已经支持。
http://blog.csdn.net/lifuxiangcaohui/article/details/40588929

因为mysql中存储元数据,所以启动hive的时候需要启动mysql。但启动是有时会遇到如下的提示:

Another MySQL daemon already running with the same unix socket.
解决方案:
find / -name mysql.sock
将mysql.sock(e.g. /var/lib/mysql/mysql.sock)删除,重启service即可

export将表中的数据导出到hdfs.


未完待续

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
70 0
|
6月前
|
SQL 存储 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
76 0
|
8月前
|
SQL 存储 分布式计算
Hive学习---1、Hive入门、Hive 安装(二)
Hive学习---1、Hive入门、Hive 安装(二)
|
7月前
|
SQL 大数据 Java
大数据Hive函数入门
大数据Hive函数入门
47 0
|
7月前
|
SQL 存储 分布式计算
大数据Hive入门案例
大数据Hive入门案例
55 0
|
7月前
|
SQL 存储 分布式计算
大数据Hive入门概述
大数据Hive入门概述
112 1
|
8月前
|
SQL 分布式计算 关系型数据库
Hive学习---1、Hive入门、Hive 安装(一)
Hive学习---1、Hive入门、Hive 安装(一)
|
SQL 分布式计算 Hadoop
Hive的安装与配置——第2关:Hive Shell入门基础命令
Hive的安装与配置——第2关:Hive Shell入门基础命令
901 0
Hive的安装与配置——第2关:Hive Shell入门基础命令
|
11月前
|
SQL 分布式计算 监控
《CDP企业数据云平台从入门到实践》——Hive 迁移到 CDP(1)
《CDP企业数据云平台从入门到实践》——Hive 迁移到 CDP(1)
104 0
|
11月前
|
SQL 监控 分布式数据库
《CDP企业数据云平台从入门到实践》——Hive 迁移到 CDP(2)
《CDP企业数据云平台从入门到实践》——Hive 迁移到 CDP(2)
72 0