首页 > 其他分享 >3-Hive学习路线-软件的基本操作

3-Hive学习路线-软件的基本操作

时间:2023-11-24 22:32:28浏览次数:33  
标签:terminated 数据库 hive Hive mysql 2.3 基本操作 table 软件

2.3. 软件的基本操作

2.3.1. 进入hive

[root@localhost ~] hive 回车

2.3.2. 操作

show databases; //显示所有数据库 use databaseName; //切换到指定数据库 show tables; //显示数据中所有表 create table... //创建表 insert into ... //新增数据 select .... //查询数据

#创建表 create table dog(did int ,name string) row format delimited fields terminated by ','; // 逗号分隔符

2.3.3. 退出

ctrl+c exit; quit;

2.3.4. hive对本地文件数据进行表的映射操作

  • 创建文件dog.txt

cd /opt/programfile/apache-hive-1.2.2-bin mkdir tmp cd tmp vim dog.txt

  • 写入下面内容,1代表did ,fzy代表名称,用逗号分割,有多行数据

1,fzy 2,czq

hive> load data local inpath '/opt/programfile/apache-hive-1.2.2-bin/tmp/dog.txt' into table dog; //若添加失败:当前表没有指定数据属性的分割符好 //解决:指定属性间的分隔符 //查询数据 select * from dog;

  • 手动新增数据

insert into dog (did,name) values (3,'fhy'); #查询一下 select * from dog;

2.3.5. 转移元数据的存储路径(derby-->mysql)

问题:derby数据库,在同一时刻,只允许一个进程操作(连接数据库,访问数据库derby) 建议:使用MySQL对元数据进行存储

2.3.6. metastore的设置方式 :元数据

内嵌方式: 使用derby数据库作为内嵌的metastore数据库(用于测试),在同一时刻,只允许一个进程操作 外嵌方式(远程方式): 使用第三方数据库存储metastore

2.3.7. 设置metastore的存储路径(选择MySQL数据库进行存储)实现多客户端访问hive

2.3.7.1 安装MySQL数据库(在线安装模式,请保持外网络畅通 )

  1. 执行下载(http://repo.mysql.com/)命令:

cd /home/fzy/soft mkdir mysql cd mysql wget http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm

  1. 如果提示wget命令未找到,则在保持外网网络畅通下执行命令:

cd / yum install wget -y

3.再次执行下载命令:

wget http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm

4.下载完毕之后,执行如下命令:

sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm

5.执行如下命令,安装mysql数据库

  • 安装过程中提示如下信息,输入y,然后回车即可

sudo yum install mysql-server

  • 至此,mysql基本安装已经成功,接下来配置mysql一些相关信息

6.输入如下命令,登录数据库客户端

mysql -u root

  • 提示如下信息:

  • 是因为此目录,没有对应的操作权限问题,执行如下命令修改目录权限

sudo chown -R root:root /var/lib/mysql

  • 重新启动数据库,执行如下命令:

service mysqld restart

  • 启动失败

  • 给/var/lib/mysql 授予最高权限

chmod -R 777 /var/lib/mysql service mysqld restart

7.再次登录,执行如下命令:

mysql -u root -p

  • 初始化密码查看:

通过命令获取:

more /var/log/mysqld.log

从下图中可以看出初始密码是 1#;htwi(e>Bw

  • mysql8修改密码

mysql -u root -p #两次回车 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; flush privileges;

8.再次登录,执行如下命令

mysql -u root -p 初始密码

  1. 修改登录密码

alter user user() identified by 'password';

  1. 提示密码安全问题

执行如下命令,修改密码安全策略后,再次修改密码

set global validate_password_policy=0;

  • 重启mysql数据库,测试密码登录

service mysqld restart

至此,centos下,mysql安装成功

2.3.7.2远程连接配置

如果此时需要远程客户端访问数据库,则还需要进行如下配置 :

  1. 开启3306默认端口,并保存(也可以直接关闭防火墙)

#开启3306访问通过防火墙 /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT #关闭防火墙 systemctl stop firewalld.service

2.设置允许远程连接信息

mysql -u root -p use mysql; update user set host='%' where user ='root' and host='localhost'; select host,user from user; #mysql5.7做法 set global validate_password_policy=0; grant all privileges on *.* to root@'%' identified by 'password' with grant option; #mysql8.0做法 flush privileges;

3.重启mysql服务

service mysqld restart

4.其他配置

  • 取消mysql默认分区表、字段的大小写,修改配置文件/etc/my.conf

vim /etc/my.cnf

[mysqld] # Partition table and field are not case sensitive lower_case_table_names=1 //不区分大小写 lower_case_table_names=0 //默认、区分大小写

  • 重启mysql

service mysqld restart

  • 启动报错

【原因】

mysql8.0 要求我们不能在initialize之后再更改 lower_case_table_names 的值, 也就是说,再通过更改 my.cnf 文件是不管用的。 #在初始化时,设置 lower-case-table-names /usr/sbin/mysqld --initialize --user=mysql --lower-case-table-names=1

这里先不做处理了

2.3.7.3MySQL管理

  1. 查看mysql服务是否启动

ps -ef|grep mysqld

  1. 启动、关闭mysql服务

service mysqld restart //重启 service mysqld start //启动 service mysqld stop //停止

  1. 配置文件

/etc/my.cnf

  1. 常见管理命令

USE 数据库名 使用数据库 SHOW DATABASES 列出 MySQL 数据库管理系统的数据库列表 SHOW TABLES 显示指定数据库的所有表 SHOW COLUMNS FROM 数据表 显示数据表的属性 SHOW INDEX FROM 数据表 显示数据表的详细索引信息 SHOW TABLE STATUS LIKE [FROM db_name] [LIKE 'pattern'] \G: 该命令将输出Mysql数据库管理系统 的性能及统计信息。

#创建数据库 metastore CREATE DATABASE `metastore` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

2.3.7.4 Hive元数据存到MySQL(8.0.17)的参数配置

目的:hive连接上mysql 步骤: 1. mysql连接驱动(mysql-connector-java-8.0.17.jar)包拷贝到hive的lib包中 /opt/programfile/apache-hive-1.2.2-bin/lib 2. 连接mysql参数配置:user password driver url cd /opt/programfile/apache-hive-1.2.2-bin/conf # hive-default.xml.template hive的配置文件模板 3. 创建一个配置文件:hive-site.xml

【hive-site.xml】

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> </property> </configuration>

2.3.8. Hive的基本配置

2.3.8.1 配置日志的存储位置

日志文件默认存储位置:/tmp/zhangsan/hive.log 设置用户自定义的存储位置: 1. 创建 hive-log4j.properties cd /opt/programfile/apache-hive-1.2.2-bin/conf cp hive-log4j.properties.template hive-log4j.properties vim hive-log4j.properties 2. 修改参数 hive.log.dir=/opt/programfile/apache-hive-1.2.2-bin/logs 3. 重新进入hive,当前日志文件所在的路径发生的变更

2.3.8.2 hive-site.xml中进行配置

# 创建数据仓库目录 cd /opt/programfile/apache-hive-1.2.2-bin/ mkdir warehouse

[hive-site.xml]

<!--配置数据仓库的位置--> <property> <name>hive.metastore.warehouse.dir</name> <value>/opt/programfile/apache-hive-1.2.2-bin/warehouse</value> </property> <!--配置当前数据库提示信息--> <property> <name>hive.cli.print.current.db</name> <value>false</value> </property> <!-- 配置查询结果的字段提示信息--> <property> <name>hive.cli.print.header</name> <value>true</value> </property>

2.3.9. 特有的操作

2.3.9.1. 将文件中的数据存储到数据表中:指定分隔符

hive> load data local inpath "/opt/programfile/apache-hive-1.2.2-bin/tmp/dog.txt" into table dog; //注意:create table(字段列表... ...) row format delimited fields terminated "分隔符"

2.3.9.2. 不进入hive,执行sql语句

hive -e select * from dog; -e 直接在命令行编写sql语句,执行sql语句,不需要进入hive中 hive -f 文件名称 -f 执行文件中编写sql语句,执行sql语句,不需要进入hive中 hive -f 文件名称 > 结果数据的存储路径 将hive命令的结果数据,指定存储到一个文件中

2.3.9.3. 在hive查看hdfs文件系统

hive (default)> dfs -ls /; hive (default)> dfs -ls /user/hive/; hive (default)> ! ls /home/fzy; //查看本地的文件系统

2.3.9.4. 查看hive操作的历史记录

[root@localhost ~]# cd ~ [root@localhost ~]# cat .hivehistory

2.3.10. 配置文件的修改(优先级)

默认的配置<用户编写hive-site.xml配置文件<用户通过命令行实现参数的配置 #优先级:从小到大的顺序

2.3.11. hive 元数据存储到MySQL(初始化)

schematool -dbType mysql -initSchema

  • 查看该sql创建的表在mysql中已经存在,这里就 不要重复执行了

/opt/programfile/apache-hive-1.2.2-bin/scripts/metastore/upgrade/mysql/hive-schema-1.2.0.mysql.sql

2.4 Hive的数据类型

2.4.1. 基本数据类型

int float double string //在hive中使用string来表示字符串类型的数据,存储数据量为:2G左右 boolean timestamp

2.4.2. 复杂数据类型

array map struct

2.4.2.1 Array

create table arr_tb(name string,score Array<double>) row format delimited fields terminated by '\t' # 设置每行中的每一个属性间的分隔符 collection items terminated by '_' # 设置一个数组类型的数据项间的分隔符 lines terminated by '\n'; # 设置多行间的分隔符

  • 无注释版本

create table arr_tb(name string,score Array<double>) row format delimited fields terminated by '\t' collection items terminated by '_' lines terminated by '\n';

2.4.2.2 Map

create table hash_tb(name string ,score map<string,double>) row format delimited fields terminated by '\t' collection items terminated by '_' map keys terminated by ':' # map中一个数据项的kv的分隔符 lines terminated by '\n';

  • 无注释版本

create table hash_tb(name string ,score map<string,double>) row format delimited fields terminated by '\t' collection items terminated by '_' map keys terminated by ':' lines terminated by '\n';

2.4.2.3 Struct

create table struct_tb(name string ,score struct<java:double,bigdata:double,mysql:double>) row format delimited fields terminated by '\t' collection items terminated by '_' lines terminated by '\n';

2.4.3. hive数据类型向上转型

小的数据类型可以转换成大的数据类型 所有的数据类型类型都可以转成double类型 boolean类型无法转换

标签:terminated,数据库,hive,Hive,mysql,2.3,基本操作,table,软件
From: https://blog.51cto.com/u_16274468/8551841

相关文章

  • ig批量发帖软件
    IG批量发帖助手:提升社交媒体运营效率的利器 在当今社交媒体充斥着大量信息和内容的时代,有效管理和维护社交媒体账号成为了许多个人和企业的重要任务。IG(Instagram)作为全球最受欢迎的社交媒体之一,其用户数量庞大且持续增长,对于营销推广和品牌建设至关重要。为了提高社交媒体运营......
  • CentOS7系统下的Linux命令基本操作(三)
    文件搜索命令文件搜索命令:find尽量不要用搜索命令,占用资源太大命令所在路径:/bin/find执行权限:所有用户语法:find[搜索范围][匹配条件]功能描述:文件搜索范例:$find/etc-nameinit在目录/etc中查找文件init若把init改成init,包含init四个字母的就都会被找到,否则只能找到就叫init......
  • 远程软件推荐
    必须支持局域网,也就是本地IP连接,没有网时一根网线连接两台电脑就可以控制。支持windows、linux1、RustDesk目前免费下载地址:RustDesk–开源远程桌面访问软件 2、RealVNCVNCServer与 ViewerServer需要license,下载地址:VNCServer破解版-RealVNCVNCServer(远程控制软......
  • 软件测试/人工智能|AutoGPT原理与架构介绍
    简介我们生活中已经有越来越多的人工智能融入了,手机汽车等等接入了越来越多的人工智能,人工智能就像是我们的一个助手一样。不仅能够理解我们的需求,而且还能够与我们一起学习与成长。人工智能已无缝融入我们工作、生活,并帮助我们有效完成各种目标。大模型技术的发展与应用,使以上想法......
  • 软件测试/人工智能|教你如何使用ChatGPT的API
    简介自从有了ChatGPT之后,我每天都想去调戏它一番,自从开放了ChatGPT的API,我就想着通过API来使用ChatGPT,这样的话,速度上的体验应该会更好,本文就来介绍一下如何使用ChatGPT的API。环境准备在调用API之前,我们首先需要准备好我们的环境,一是我们需要安装openAI第三方库,OpenAI提供了一个......
  • 定制开发苹果软件,你需要用到这些代码!
    随着苹果设备在全球范围内的广泛普及,定制开发苹果软件的需求也日益增长,本文将带您了解定制开发苹果软件时常用的代码,以及一些基础源代码示例。通过掌握这些知识,您将能够更好地理解苹果软件开发的基础,为进一步深入开发打下坚实基础。一、苹果软件开发语言:Swift与Objective-C在苹果软......
  • 软件测试/人工智能|一文教你如何配置自己的AutoGPT
    简介AutoGPT是Github上的一个免费开源项目,结合了GPT-4和GPT-3.5技术,通过API创建完整的项目。与ChatGPT不同的是,用户不需要不断对AI提问以获得对应回答,在AutoGPT中只需为其提供一个AI名称、描述和五个目标,然后AutoGPT就可以自己完成项目。它可以读写文件、浏览网页、审查自己提示的......
  • 软件测试/人工智能|AutoGPT原理与架构介绍
    简介我们生活中已经有越来越多的人工智能融入了,手机汽车等等接入了越来越多的人工智能,人工智能就像是我们的一个助手一样。不仅能够理解我们的需求,而且还能够与我们一起学习与成长。人工智能已无缝融入我们工作、生活,并帮助我们有效完成各种目标。大模型技术的发展与应用,使以上......
  • 单片非晶磁性测量系统全自动测量软件
    单片非晶磁性测量系统全自动测量软件l 软件能够运行于Windows系统下作界面全中文提示,操作直观简捷。l 全自动控制与计算,智能化判断,最大限度消除人工操作所带来的误差。l 可实时显示电流、电压、功率的量值,并可在多个窗口中显I(t)、U(t)、B(t)采样波形和B(H)磁滞回线。实时......
  • 安装算量软件哪个好_鹏业安装算量优势特点
    鹏业安装算量软件通过智能分析电子图纸信息,融合安装工程专业特点,快速、准确、自动建立消防喷淋、强(弱)电、通风空调、消火栓、给排水等各专业的数据模型,自动完成工程量计算、三维模型数据的建立,轻松实现在BIM中的应用。一、使用鹏业安装算量软件的优势特点1.无需加密锁在线免费使......