Hive初学者常用的一些命令

Hive菜鸟指南

  1. Hive简介

Hive对我来说就是一个基于HDFS的数据仓库,它提供了一个种SQL语言,能让不精通Java语言而熟悉SQL语言的工程师,快速的对HDFS或其他存储文件系统如Amazon,S3,上的数据进行数据分析,是Hadoop生态系统中非常重要的一个工具。

2.Hive常用语句

2.1菜鸟建表法

1.直接建表,指定分隔符,默认存储为text,也可以指定存储格式!

create table tb151

(id string comment “字段注释”,

name string,

age int)

row format delimited

fields terminated by ","

location ‘/path/to/data’;--location指定数据存放目录

  1. 从查询语句建表

create table tb151_sample as

select * from tb151 tablesample(5 rows);--抽样行数,也可是百分比(50 percent)和容量(10M)

  1. 根据已知表结构创建表

create table test_tb like tb151 location "/path/to/data";

2.2菜鸟导入导出Hive数据的几种方法

1.装载数据

--直接本地导入数据

load data local inpath "/path/to/data"

overwrite into table tbname;--local指本地目录,不加表示HDFS目录,overwrite关键字会覆盖表的数据

--从查询语句装载数据

insert overwrite table tbname

partition(partname="ptname")

select * from tbname2 where....;--overwrite关键字会覆盖元数据,使用into则追加数据。

2.导出数据

--如果数据文件恰好是需要的格式则直接从HDFS目录下载即可

hadoop fs -get /path

--通过查询语句

insert overwrite local directory "/path/to/data"

select ... from tbname where...;

--通过shell命令行

/path/to/hive -e "select ...from tbname where...." >> /path/to/data

2.3关联的几点优化

1.从左到右表由小到大

2或者显示的标记大表

select /*+STREAMTABLE(t)*/t.a,t1.b from t join t1 where……;

3大多数SQL官方语言支持in…exists结构来处理如:

select s.ymd,s.symbol,s.proice from s where s.ymd,s.symbol in (select d.ymd,d.symbol from d);但是Hive是不支持这样的语法的,我们可以通过左半外连接达到同样的目的:改写为—

-- select s.ymd,s.symbol,s.proice from s left semi join d on s.ymd=d.ymd and s.symbol=d.symbol;

4小表join大表可以使用mapjoin将小表放到内存中

--select /*+MAPJOIN(d)*/ s.ymd,s.tmd from s join d on s.ymd=d.ymd;--d指的是小表

3.Hive集合之交并差

1.Hive的交集可以通过先A左关联B,然后得到的结果将右列不为NULL的元素去重即可

2.Hive的并集可以用union实现,

--select id from t1 union select id from t2 union select id from t3;

3两列元素的合集可以用union all来实现

4差集

左表A-右表B,先用Aleft joinB,然后得到的结果右列为NULL的左列元素去重即可

4.Hive的几种执行方式

hive -e “select * from tbname”—执行单条语句

hive -e “select * from tbname”>>/path/to/data—将单条查询语句的结果重定向到本地文件

hive -f /path/to/sqlfile—执行sql文件

可以在hive命令行通过dfs执行Hadoop命令

也可以在hive命令行通过!+命令执行shell的一些简单命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值