从Hive搭建及使用开始,到删库跑路?

Hive简介


  • Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。

  • Hive不适合用于联机(online)事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。

  • Hive的本质是将HQL转换成MapReduce任务,完成整个数据的分析查询,减少编写MapReduce的 复杂度 。

  • Hive可以将结构化的数据文件映射成一张数据表,并可以使用 类似SQL的方式来对数据文件进行读写以及管理。这套Hive SQL 简称HQL。Hive的执行引擎可以是 MR、Spark、Tez。

1.Hive安装

说明

Hive版本: 2.3.7

百度网盘:提取码:1111

需要以下环境:

具体可以参考以下文章

1.解压安装配置环境变量

#解压
[root@master package]# tar zxvf apache-hive-2.3.7-bin.tar.gz -C /usr/local/src/
#查看
[root@master package]# ls /usr/local/src/
#改名
[root@master package]# mv /usr/local/src/apache-hive-2.3.7-bin/ /usr/local/src/Hive/
#配置环境变量(就是把路径导入 然后下面再配个bin)

[root@master package]# vi /etc/profile
#配置如下:
export HIVE_HOME=/usr/local/src/Hive/
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:
#刷新
[root@master package]# source /etc/profile

#验证
[root@master package]# which hive

2.配置文件

配置hive-env.sh

#进入配置文件目录
[root@master bin]# cd /usr/local/src/Hive/conf/
#拷贝一份 用拷贝的做修改
[root@master conf]# cp hive-env.sh.template hive-env.sh

#修改
[root@master conf]# vi hive-env.sh
#配置如下
export JAVA_HOME=/usr/local/src/jdk1.8.0_152/
export HADOOP_HOME=/usr/local/src/hadoop-2.7.6/

配置hive-site.xml

[root@master conf]# vim hive-site.xml
<!--配置如下-->

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>


<configuration>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://192.168.159.151:9083</value>
  </property>

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://192.168.159.151:3306/hive1?createDatabaseIfNotExist=true</value>
</property>
<property>

  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>root</value>
</property>
</configuration>

拷贝MySQL的驱动JAR包到hive的lib目录下

#拷贝
[root@master conf]# cp /home/package/mysql-connector-java-5.1.28-bin.jar  /usr/local/src/Hive/lib/

3.使用

初始化元数据
# hive的元数据包括:库、表、字段、字段类型、等很多信息。
# hive的元数据默认存储到derby数据库中,但是2.x后也需要初始化元数据(schematool -initSchema -dbType derby)。
[root@hadoop01 ~]# schematool -initSchema -dbType mysql
启动元数据服务
[root@master conf]# hive --service metastore &
启动
[root@master conf]# hive
#那里出现no是正常的
#因为2.x的版本需要依赖hbase,我这里没安装

aaa

2.hive的简单使用

#查看数据库
hive> show databases;
OK
default
Time taken: 1.309 seconds, Fetched: 1 row(s)
#查看表
hive> show tables;
OK
Time taken: 1.221 seconds
#使用数据库
hive> use default;
OK
Time taken: 0.027 seconds
#创建数据库
hive> create database long
    > ;
OK
Time taken: 0.409 seconds
#使用数据库
hive> use long;
OK
Time taken: 0.017 seconds
#创建表
hive> create table if not exists student1(
    > name String,
    > age int,
    > sex int);
OK
Time taken: 0.647 seconds
#创建带分隔符和存储格式的表 "\n"换行
hive> create table if not exists student2(
    name String comment 'user name',
    age int,
    sex int)
    comment 'this is table'
    row format delimited fields terminated by ','
    lines terminated by '\n' 
    stored as textfile
    ;
#查看表
hive> show tables;
OK
student1
Time taken: 0.058 seconds, Fetched: 1 row(s)
#查看表结构
hive> desc student1; 
# 退出
hive> quit

aaa

补充:hive和mysql的区别

Hive采用了类SQL的查询语言HQL。除了HQL之外,其他没有任何相似的地方。Hive是为了数据仓库设计的。
存储位置:Hive存储在Hadoop上;Mysql将数据存储在设备或本地系统中;
索引:Hive无索引,每次扫描所有数据,底层是MR,并行计算,适用于大数据量;MySQL有索引,适合在线查询数据;
执行:Hive底层是MarReduce;MySQL底层是执行引擎;

3.hive数据加载方式

1.直接拷贝到hdfs中的表的对应目录


#直接通过HDFS上传到student1表
[root@master text]# hdfs dfs -put ./stu1.txt  /user/hive/warehouse/long.db/student2

#查看数据
hive> select * from student2;

OK
张三    18      1
李四    20      1
翠花    20      2
cu      35      1
zu      65      2
Time taken: 0.104 seconds, Fetched: 5 row(s)

2.使用命令导入数据

[root@hadoop01 sw]# vi ./stu1.txt
#这是覆盖
hive>load data local inpath '/home/text/stu2.txt' overwrite into table student2;


Loading data to table long.student2
OK

#这是追加
hive>load data local inpath '/home/text/stu1.txt' into table student2;


3.装载方式

#通过查询语句装载到新表
hive>create table stu3 as select name,age from student2;

4.insert into方式装载

#先创建一个跟旧表一样的表结构
hive> create table if not exists student3(
    name String comment 'user name',
    age int,
    sex int)
    comment 'this is table'
    row format delimited fields terminated by ','
    lines terminated by '\n' 
    stored as textfile
    ;
    
    
hive>insert into student3 select * from student2 where age>=20;

4.Hive表属性修改

#修改表名
hive> alter table t7 rename to a1;
# 修改列名 类型
alter table 表名 change column 旧列名 新列名 类型;
#示例:
hive> alter table student3 change column age ages string;
 
hive> desc student3;
    OK
    name                    string                  user name
    ages                    string
    sex                     int

#修改列的位置
alter table 表名 change column 修改的列名 修改的列名 列明   after 在哪个字段之前;
#示例:
hive> alter table student3 change column sex sex int  after ages;
        OK
        Time taken: 0.121 seconds
hive> desc student3;

        OK
        name                    string                  user name
        ages                    string
        sex                     int


#增加字段
alter table 表名 add columns (列名  类型);
#示例
hive> alter table student3 add columns (city  string);
OK
Time taken: 0.165 seconds

#替换字段


hive> desc student3;
OK
name                    string                  user name
ages                    string
sex                     int
city                    string
Time taken: 0.031 seconds, Fetched: 4 row(s)

hive> alter table student3 replace columns(
    > name string,
    > age string,
    > sex string,
    > city string);
OK
Time taken: 0.09 seconds

hive> desc student3;
OK
name                    string
age                     string
sex                     string
city                    string
Time taken: 0.025 seconds, Fetched: 4 row(s)


从删库到跑路

hive> drop database 库名 cascade

a

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

longtxue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值