微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hive安装配置 Mysql 安装

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本地安装

yum localinstall MysqL57-community-release-el7-8.noarch.rpm

在这里插入图片描述

4.安装MysqL

yum install MysqL-community-server

在安装过程中需要确认下载,总共有216M

在这里插入图片描述

5.启动MysqL服务

systemctl start MysqLd

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命令如下

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服务

systemctl restart MysqLd

配置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种类型。

  1. DDL ( Data DeFinition Language )可以创建数据库( create database )、创建表( create table ),进行数据库和表的删除;
  2. DML ( Data Manipulation Language)可以进行数据的添加查询;
  3. UDF ( User Defined Function)还支持用户自定义查询函数

hive sqlMysqL的区别

1、hivesql没有update、insert into类的更新表或插入表的操作。

2、hivesql特殊字符拼接问题,如分号要先进行八进制的ASCII码转义。

3、hivesql不支持等值连接。

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 举报,一经查实,本站将立刻删除。

相关推荐