HIve的安装
1,解压
tar -xvf apache-hive-2.3.2-bin.tar.gz;
2,配置环境变量
mv apache-hive-2.3.2-bin hive
cd usr/local/hive
vi etc/profile
添加下面两句到其中
export HIVE_HOME=/usr/hadoop/hive
export PATH=$PATH:$HIVE_HOME/PATH
3,使环境变量立即生效
source /etc/profile
4,查看
hive --version
安装My sql
Hive 默认使用内嵌的Detdy数据库作为存储引擎,存储Ht的元数祝信息但Derby引擎的缺点是一次只能打开一个会话, 不能多用户并发访问。所以需要安装MysqL,并将Hive的存储引擎改为MysqL。由于MysqL采用在线安装,所以必须先要配置谷歌域名服务器。
在上面添加内容
nameserver 8.8.8.8
nameserver 8.8.4.4
1.下载wget命令
安装成功
2.下载MysqL安装包
wget http://dev.MysqL.com/get/MysqL57-community-release-el7-8.noarch.rpm
3.安装MysqL
下载后用yum本地安装
4.安装MysqL
在安装过程中需要确认下载,总共有216M
5.启动MysqL服务
6.设为开机启动
[root@master hadoop]# systemctl enable MysqLd
[root@master hadoop]# systemctl daemon-reload
7.修改root本地登录密码
MysqL安装完成之后,在/var/og/MysqLd.log文件中给root生成了一个默认密码。找到root默认密码,然后登录MysqL进行修改。
[root@master hadoop]# grep ‘temporary password’ /var/log/MysqLd.log
MysqL -uroot -p
8.创建用户
语法为
CREATE USER ‘username’@‘master’IDENTIFIED BY’ password’;
username:用户名; host: 指定在哪个主机上可以登录,本机可用localhost,所有远程主机; password: 用户登录密码。
MysqL> CREATA USER ‘hive’@’%’ IDENTIFIED BY ‘Hqh57216’
9.授权
语法为
“GRANT ALL PRIVILEGES ON . TO ‘username @’%’ IDENTIFIED BY’password;
格式: grant 权限on数据库名.表名to用户@登录主机identifed by“用户密码” ; **代表所有权。
@后面是访问MysqL的客户端IP地址(或是主机名),’%’ 代表任意的客户端,如果填写localhost,则为本地访问(那些用户就不能远程访问该MysqL数据库)。
mysq1>GRANT ALL PRIVILEGES ON . TO ’ slave1’@’%’ IDENTIEIED BY ‘Hqh57216’
mysq1>GRANT ALL PRIVILEGES ON . TO ’ slave2’@’%’ IDENTIEIED BY ‘Hqh57216’
mysq1>GRANT ALL PRIVILEGES ON . TO ’ slave3’@’%’ IDENTIEIED BY ‘Hqh57216’
10.刷新权限
MysqL> FLUSH PRIVILEGES;
11.配置默认编码为utf-8
[myaqld]
character_set_server=utf8
init_connect=‘SET NAMES utf8’
12.重启MysqL服务
配置Hive
1,重命名
cd /usr/local/hive/conf/
mv hive-evn.sh.template hive-evn.sh
mv hive-default.xml.template hive-site.xml
2,配置hive-config.sh
export Java_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export HIVE_HOME=/usr/local/hive
3,复制MysqL驱动
cp mysql-connector-Java-5.1.45-bin-jar /usr/local/hive/lib/
4,新建tmp临时目录
mkdir /usr/local/hive/tmp
5,配置HIVE_HOME/conf的hive-site.xml支持MysqL
6,配置HIVE_HOME/conf的hive-site.xml
验证Hive
1,Hive数据库的初始化
schematool -dbType MysqL -initSchema
2,启动Hive客户端
hive
3,显示所有表
hive>show tables
HIve QL的基础操作
Hive QL是Hive支持的类似sql的查询语言。Hive QL大体可以分成DDL、DML、UDF共3种类型。
- DDL ( Data DeFinition Language )可以创建数据库( create database )、创建表( create table ),进行数据库和表的删除;
- DML ( Data Manipulation Language)可以进行数据的添加、查询;
- UDF ( User Defined Function)还支持用户自定义查询函数。
hive sql与MysqL的区别
1、hivesql没有update、insert into类的更新表或插入表的操作。
2、hivesql特殊字符拼接问题,如分号要先进行八进制的ASCII码转义。
4、空值判断:MysqL中null表示空值,而HiveQL中String类型的字段若是空的(empty)字符串, 即长度为0, 那么对它进行IS NULL的判断结果是False。
5、函数使用不同,比如分隔字符串
操作数据库的基础命令
创建数据库txt1
hive>create database txt1;
hive>Show databases;
查看database信息,但无法查看当前数据库
hive>describe database txt1;
或
hive>desc database txt1;
可查看当前在哪个数据库
hive>select current_database();
hive>use txt1;
hive>drop database txt1;
Hive创建数据表
建表语法如下所示:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], …)] ----指定表的名称和表的具体列信息。
[COMMENT table_comment] —表的描述信息。
[PARTITIONED BY (col_name data_type [COMMENT col_comment], …)] —表的分区信息。
[CLUSTERED BY (col_name, col_name, …)
[SORTED BY (col_name [ASC|DESC], …)] INTO num_buckets BUCKETS] —表的桶信息。
[ROW FORMAT row_format] —表的数据分割信息,格式化信息。
[STORED AS file_format] —表数据的存储序列化信息。
[LOCATION hdfs_path] —数据存储的文件夹地址信息。
创建数据表解释说明:
1、 CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。hive中的表可以分为内部表(托管表)和外部表,区别在于,外部表的数据不是有hive进行管理的,也就是说当删除外部表的时候,外部表的数据不会从hdfs中删除。而内部表是由hive进行管理的,在删除表的时候,数据也会删除。一般情况下,我们在创建外部表的时候会将表数据的存储路径定义在hive的数据仓库路径之外。hive创建表主要有三种方式,第一种直接使用create table命令,第二种使用create table … as select…(会产生数据)。第三种使用create table tablename like exist_tablename命令。
2、 EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
3、 LIKE 允许用户复制现有的表结构,但是不复制数据。
4、ROW FORMAT DELIMITED(表明使用内置分隔符)
[FIELDS TERMINATED BY char]
[COLLECTION ITEMS TERMINATED BY char][MAP KEYS TERMINATED BY char]
[LInes TERMINATED BY char] I SERDE serde. name[WITH SERDEPROPERTIES
(property_ name=property_ value, property. name=property. vale…].
hive建表的时候默认的分割符是’ \001’,若在建表的时候没有指明分隔符,文件的分隔符需要是’ \001,程序不会报错,但表查询的结果会全部为’null’;
如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive通过 SerDe 确定表的具体的列的数据。
5、CLUSTERED BY INTO num_ _buckets BUCKETS
对于每一一个表(table)或者分,Hive 可以进一步组织成桶, 也就是说桶是更为细粒度的数据范围划分。Hive 也是针对某一列进行 桶的组织。Hive 采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。
目的:
(1)获得更高的查询处理效率。桶为表加上了额外的结构,Hive在处理有些查询时能利用这个结构。
(2)使取样(sampling) 更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的- -小部分数据上试运行查询,会带来很多方便。
原文地址:https://www.jb51.cc/wenti/3279184.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。