hive3

Hive常用交互命令

  1. “-e”不进入 hive 的交互窗口执行 sql 语句

bin/hive -e “select id from student;”

  1. “-f”执行脚本中 sql 语句

bin/hive -f hivef.sql
执行文件中的 sql 语句并将结果写入文件中
bin/hive -f hivef.sql > hive_result.txt

其他命令

  1. 在hive cli命令中执行hdfs 命令
    dfs -ls /;
  2. 查看hive历史命令
    在 /root 或者/home/atguigu
    查看.hivehistory文件
    cat .hivehistory

Hive数据类型

TINYINT	SMALINT	INT		BIGINT
BOOLEAN
FLOAT DOUBLE
STRING
TIMESTAMP
BINARY

集合类型

STRUCT<name1:TYPE1,name2:TYPE2>				通过 . 方式访问
MAP<string,int>														通过['key'] 访问
ARRAY<string>														通过[1]访问

songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing

create table test(
name string,
friends array,
children map<string,int>,
address structstreet:string,city:string
)
row format delimited fields terminated by “,”
collection items terminated by “_”
map keys terminated by “:”
lines terminated by “\n”;

row format delimited fields terminated by ‘,’ – 列分隔符
collection items terminated by ‘_’ --MAP STRUCT 和 ARRAY 的分隔符(数据分割符号) map keys terminated by ‘:’ – MAP 中的 key 与 value 的分隔符
lines terminated by ‘\n’; – 行分隔符

测试 load data local inpath ‘/opt/module/hive/datas/test.txt’ into table test;

select friends[0] as f1,children[‘xiao song’] as xiaosong,address.street as st from test;

类型转换

隐式转换规则

(1)任何整数类型都可以隐式地转换为一个范围更广的类型,如 TINYINT 可以转换成
INT,INT 可以转换成 BIGINT。
(2)所有整数类型、FLOAT 和 STRING 类型都可以隐式地转换成 DOUBLE。
(3)TINYINT、SMALLINT、INT 都可以转换为 FLOAT。
(4)BOOLEAN 类型不可以转换为任何其它的类型。

可以使用 CAST 操作显示进行数据类型转换

例如 CAST(‘1’ AS INT)将把字符串’1’ 转换成整数 1;如果强制类型转换失败,如执行 CAST(‘X’ AS INT),表达式返回空值 NULL。

DDL

创建一个数据库,指定数据库在 HDFS 上存放的位置

create database db_hive2 location ‘/db_hive2.db’;

创建表

创建管理表

create table test_clazz(
id int,
name string)
row format delimited fields terminated by ","
lines terminated by "\n"
location "/home/atguigu/clazz.txt";

创建外部表

create external table 删除表时,不会删除数据,默认不加 是管理表,会删除数据

alter table student2 set tblproperties('EXTERNAL'='TRUE'); 修改表类型

DML

加载数据

向表中加载数据

load data [local] inpath ‘数据的 path’ [overwrite] into table
student [partition (partcol1=val1,…)];

通过查询语句向表中插入数据

insert overwrite table student_par
select id, name from student where month=‘201709’;

查询语句中创建表并加载数据(As Select)

create table if not exists student3 as select id, name from student;

排序

使用 ORDER BY 子句排序

Sort By

Sort By:对于大规模的数据集 order by 的效率非常低。在很多情况下,并不需要全局排 序,此时可以使用 sort by

分区(Distribute By)

分区内排序

Cluster By

当 distribute by 和 sorts by 字段相同时,可以使用 cluster by 方式。

分区

增加分区

alter table dept_partition add partition(day=‘20200404’);
alter table dept_partition add partition(day=‘20200405’) partition(day=‘20200406’);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值