hive 时间函数_Hive 体系

本文详细介绍了Hive的基本思想、使用原因及其特点,包括可扩展性、延展性和容错性。Hive作为一个基于Hadoop的数据仓库工具,提供了类SQL查询功能,降低了开发人员的学习成本。文章还深入讲解了Hive的安装过程,包括最简安装和标准安装(使用MySQL作为元数据库),并给出了详细的配置步骤。最后,讨论了Hive的使用方式,包括交互式shell、启动服务和脚本化运行查询任务。
摘要由CSDN通过智能技术生成

1.1. hive基本思想

Hive是基于Hadoop的一个数据仓库工具(离线),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

f4a64553d6ffab2db3e8a8a9f1de3c42.png

1.2. 为什么使用Hive

Ø 直接使用hadoop所面临的问题

人员学习成本太高

项目周期要求太短

MapReduce实现复杂查询逻辑开发难度太大

Ø 为什么要使用Hive

操作接口采用类SQL语法,提供快速开发的能力。

避免了去写MapReduce,减少开发人员的学习成本。

功能扩展很方便。

1.3. Hive的特点

Ø 可扩展

Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。

Ø 延展性

Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

Ø 容错

良好的容错性,节点出现问题SQL仍可完成执行。1. hive安装

2. hive的基本架构

7dbb73c50e46c173f701e73a8d6f40bf.png

Jobtracker是hadoop1.x中的组件,它的功能相当于:

Resourcemanager+MRAppMaster

TaskTracker 相当于:

Nodemanager + yarnchild

3. hive安装

补充:先将hadoop集群的机器配置时间同步

时间同步

yum install ntpdate -y ## 安装时间同步客户端

ntpdate 0.asia.pool.ntp.org ## 与互联网时间服务器同步

若上面的时间服务器不可用,也可以选择以下服务器同步时间

time.nist.gov

time.nuri.net

0.asia.pool.ntp.org

1.asia.pool.ntp.org

2.asia.pool.ntp.org

3.asia.pool.ntp.org  

3.1. 最简安装:用内嵌derby作为元数据库

准备工作:安装hive的机器上应该有HADOOP环境(安装目录,HADOOP_HOME环境变量)

安装:直接解压一个hive安装包即可

此时,安装的这个hive实例使用其内嵌的derby数据库作为记录元数据的数据库

此模式不便于让团队成员之间共享协作

3.2. 标准安装:将mysql作为元数据库

3.2.1. mysql安装

卸载老版本

mysql

1.先停掉mysql服务

service mysqld stop

2.先卸载rpm包

rpm -qa | grep mysql

将查到的都卸载: rpm -e xxx.mysql...x86.64

3.删除mysql遗留的文件

find / -name “mysql*” | grep -v “cdrom” | xargs rm -rf

find / -name “my.cnf” | xargs rm -rf

① 上传mysql安装包

② 解压:

[root@mylove ~]# tar -xvf MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar

③ 安装mysql的server包

[root@mylove ~]# rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm

依赖报错:

缺perl libaio

yum install perl

yum install libaio.x86_64

安装完perl后 ,继续重新安装mysql-server

(可以配置一个本地yum源进行安装:

1、先在vmware中给这台虚拟机连接一个光盘镜像

2、挂在光驱到一个指定目录:mount -t iso9660 -o loop /dev/cdrom /mnt/cdrom

3、将yum的配置文件中baseURL指向/mnt/cdrom

)

[root@mylove ~]# rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm

又出错:包冲突conflict with

移除老版本的冲突包:mysql-libs-5.1.73-3.el6_5.x86_64

[root@mylove ~]# rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps

继续重新安装mysql-server

[root@mylove ~]# rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm

成功后,注意提示:里面有初始密码及如何改密码的信息

初始密码:/root/.mysql_secret

改密码脚本:/usr/bin/mysql_secure_installation

④ 安装mysql的客户端包:

[root@mylove ~]# rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm

⑤ 启动mysql的服务端:

[root@mylove ~]# service mysql start

Starting MySQL. SUCCESS!

⑥ 修改root的初始密码:

[root@mylove ~]# /usr/bin/mysql_secure_installation 按提示

⑦ 测试:

用mysql命令行客户端登陆mysql服务器看能否成功

[root@mylove ~]# mysql -uroot -proot

mysql> show databases;

⑧ 给root用户授予从任何机器上登陆mysql服务器的权限:

mysql> grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

注意点:要让mysql可以远程登录访问

最直接测试方法:从windows上用Navicat去连接,能连,则可以,不能连,则要去mysql的机器上用命令行客户端进行授权:

在mysql的机器上,启动命令行客户端:

mysql -uroot -proot

mysql>grant all privileges on *.* to 'root'@'%' identified by 'root的密码' with grant option;

mysql>flush privileges;

3.2.2. hive的元数据库配置

vi conf/hive-site.xml

javax.jdo.option.ConnectionURL

jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true

JDBC connect string for a JDBC metastore

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

Driver class name for a JDBC metastore

javax.jdo.option.ConnectionUserName

root

username to use against metastore database

javax.jdo.option.ConnectionPassword

root

password to use against metastore database

2、上传一个mysql的驱动jar包到hive的安装目录的lib中

3、配置HADOOP_HOME 和HIVE_HOME到系统环境变量中:/etc/profile

4、source /etc/profile

5、hive启动测试

然后用命令启动hive交互界面:

[root@hdp20-04 ~]# hive

4. hive使用方式

4.1. 最基本使用方式

启动一个hive交互shell

bin/hive

hive>

设置一些基本参数,让hive使用起来更便捷,比如:

1、让提示符显示当前库:

hive>set hive.cli.print.current.db=true;

2、显示查询结果时显示字段名称:

hive>set hive.cli.print.header=true;

但是这样设置只对当前会话有效,重启hive会话后就失效,解决办法:

在linux的当前用户目录中,编辑一个.hiverc文件,将参数写入其中:

vi .hiverc

set hive.cli.print.header=true;

set hive.cli.print.current.db=true;

4.2. 启动hive服务使用

启动hive的服务:

[root@hdp20-04 hive-1.2.1]# bin/hiveserver2 -hiveconf hive.root.logger=DEBUG,console

上述启动,会将这个服务启动在前台,如果要启动在后台,则命令如下:

nohup bin/hiveserver2 1>/dev/null 2>&1 &

启动成功后,可以在别的节点上用beeline去连接

v 方式(1)

[root@hdp20-04 hive-1.2.1]# bin/beeline 回车,进入beeline的命令界面

输入命令连接hiveserver2

beeline> !connect jdbc:hive2//mini1:10000

(hadoop01是hiveserver2所启动的那台主机名,端口默认是10000)

v 方式(2)

启动时直接连接:

bin/beeline -u jdbc:hive2://mini1:10000 -n root

接下来就可以做正常sql查询了

4.3. 脚本化运行

大量的hive查询任务,如果用交互式shell来进行输入的话,显然效率及其低下,因此,生产中更多的是使用脚本化运行机制:

该机制的核心点是:hive可以用一次性命令的方式来执行给定的hql语句

[root@hdp20-04 ~]# hive -e "insert into table t_dest select * from t_src;"

然后,进一步,可以将上述命令写入shell脚本中,以便于脚本化运行hive任务,并控制、调度众多hive任务,示例如下:

vi t_order_etl.sh

#!/bin/bash

hive -e "select * from db_order.t_order"

hive -e "select * from default.t_user"

hql="create table default.t_bash as select * from db_order.t_order"

hive -e "$hql"

如果要执行的hql语句特别复杂,那么,可以把hql语句写入一个文件:

vi x.hql

select * from db_order.t_order;

select count(1) from db_order.t_user;

然后,用hive -f /root/x.hql 来执行

未完待续 2019-3-25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值