Hive操作.md

Hive操作

Hive命令客户端启动

1. H I V E H O M E / b i n / h i v e 启 动 h i v e 客 户 端 , 可 能 会 出 现 j a r 包 的 冲 突 问 题 , 将 h i v e 中 高 版 本 的 J l i n e 替 换 掉 HIVE_HOME/bin/hive 启动hive客户端,可能会出现jar包的冲突问题,将hive中高版本的Jline替换掉 HIVEHOME/bin/hivehivejarhiveJlineHADOOP_HOME/share/hadoop/yarn/lib中的jline.jar包。

2.hive默认的情况下会将自己的元数据存放到默认的数据库中,而默认的数据库是derby。默认情况会将数据存放在当前目录。所以会导致在不同的位置打开hive看到的元数据不一致。因此我们要将元数据保存到我外部的mysql数据库中,这样能够解决数据不一致的问题。修改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.ConnectionURL</name>
<value>jdbc:mysql://hdp-nn-01:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>

Hive服务端命令启动

1.$HIVE_HOME/bin/hiveserver2会启动一个hive服务程序,会启动一个监听端口10000的hive服务。

2.使用客户端连接服务端连接服务端。$HIVE_HOME/bin/beeline启动客户端程序。

前台启动:$HIVE_HOME/bin/hiveserver2;

后台启动:nohup $HIVE_HOME/bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err

!connect jdbc:hive2://hdp-nn-01:10000

注:会提示username和password。username为服务端启动程序的用户名;password设置为空

Beeline中常用的命令

!connect jdbc:hive2://hdp-nn-01:10000	//创建连接
!help                 //查看帮助
!close                //关闭当前连接  如我们连接jdbc连接
!table ;              //显示表
!sh clear ;           //执行shell脚本命令
!quit ;               //退出beeline终端    

Hive中的语法

Hive创建数据库

规则

CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name>

示例

CREATE DATABASE [IF NOT EXISTS] userdb;
CREATE SCHEMA userdb;
SHOW DATABASES;
Hive删除数据库

规则

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

示例

DROP DATABASE IF EXISTS userdb;
DROP DATABASE IF EXISTS userdb CASCADE;	//使用CASCADE查询删除数据库。这意味着要全部删除相应的表在删除数据库之前。
DROP SCHEMA userdb;
Hive创建表

规则

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[ROW FORMAT row_format]
[STORED AS file_format]

示例

CREATE TABLE IF NOT EXISTS employee ( eid int, name String, salary String, destination String)
 COMMENT ‘Employee details’
 ROW FORMAT DELIMITED
 FIELDS TERMINATED BY ‘\t’
 LINES TERMINATED BY ‘\n’
 STORED AS TEXTFILE;
Hive修改表

规则

ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])

示例

//下面是查询重命名表,把 employee 修改为 emp。
ALTER TABLE employee RENAME TO emp;
//修改表的列名和类型
ALTER TABLE employee CHANGE name ename String;
ALTER TABLE employee CHANGE salary salary Double;
//增加了一个列名dept在employee表。
ALTER TABLE employee ADD COLUMNS (dept STRING COMMENT 'Department name');
//查询删除的所有列,并使用emp替换列:
ALTER TABLE employee REPLACE COLUMNS (eid INT empid Int, ename STRING name String);
建表规则
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]

•CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常

•EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)

•LIKE 允许用户复制现有的表结构,但是不复制数据

•COMMENT可以为表与字段增加描述

Hive表的分区

Partition By 关键字

create table t_4(ip string,url string,staylong int)
partitioned by (day string)
row format delimited
fields terminated by ",";

导入数据

将hive运行所在的机器的本地磁盘上的文件导入表中

load data local input '/root/weblog.1' into table t_4 partition(day='2017-04-08');
load data local input '/root/weblog.2' into table t_4 partition(day='2017-04-09');
//overwrite表示会删除表中之前的数据重新导入新数据
load data local input '/root/weblog.2' into [overwrite] table t_4 partition(day='2017-04-09');

将hdfs中的文件导入表中

//如果不加local表示hdfs的路径
load data input '/weblog.2' into [overwrite] table t_4 partition(day='2017-04-09');

从别的表查询数据后插入到一张指定的表中

//指定表不存在
create table t_1_jz 
as
select * from t_1;

//指定表已存在
create table t_1_hd like t_1;
insert into table t_1_hd 
select * from t_1;

导出数据

insert overwrite directory '/aa/bb'
select * from t_1;

Hive中的sql

显示库和表语句

show databases;
show tables;

使用默认库

use default;

创建库和表

create database db_1;
create table t_1(id int,name string,add string) 
row format delimited
fields terminated by ',';

爷儿您要是看的乐,打个赏也让姑娘乐一乐

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝色红宝石

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

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

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

打赏作者

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

抵扣说明:

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

余额充值