前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hive学习笔记-202104

Hive学习笔记-202104

作者头像
用户8483969
发布2021-04-09 11:33:34
3100
发布2021-04-09 11:33:34
举报
文章被收录于专栏:bgmonkeybgmonkey

Hive学习笔记

1、Hive数据类型

基本数据类型

代码语言:javascript
复制
tinyInt
smallInt
Int
BigInt
Boolean
float
double
string
timestamp
binary --字节数组

集合类型

代码语言:javascript
复制
STRUCT 
和 c 语言中的 struct 类似,都可以通过“点”符号访问元素内容。例如,如果某个列的数据类型是 STRUCT{first STRING,
last STRING},那么第 1 个元素可以通过字段.first 来引用。

MAP
MAP 是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是 MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过
字段名[‘last’]获取最后一个元素

ARRAY
数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第 2 个元素可以通过数组名[1]进行引用。

2、建表语句示例

数据示例

代码语言:javascript
复制
{
 "name": "songsong",
 "friends": ["bingbing" , "lili"] , //列表 Array, 
 "children": { //键值 Map,
 "xiao song": 18 ,
 "xiaoxiao song": 19
 }
 "address": { //结构 Struct,
 "street": "hui long guan" ,
 "city": "beijing" 
 } }

本地测试文件test.txt

代码语言:javascript
复制
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

建表语句

代码语言:javascript
复制
create table test(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string, city:string>
)
row format delimited 
fields terminated by ','
collection items terminated by '_'
map keys terminated by ':'
lines terminated by '\n';
location '/user/hive/warehouse/db/table';

## 解释:
row format delimited  分隔符设置开始语句

fields terminated by:设置字段与字段之间的分隔符

collection items terminated by:设置一个复杂类型(array,struct)字段的各个item之间的分隔符
map keys terminated by:设置一个复杂类型(Map)字段的key value之间的分隔符

lines terminated by:设置行与行之间的分隔符

3、删除数据库

代码语言:javascript
复制
drop database if exists  db_hive2; 
如果库为空可以直接删除
如果不是空库,可以采用 cascade 命令,强制删除
drop database db_hive cascade;

4、分桶抽样查询

代码语言:javascript
复制
select * from stu_buck tablesample(bucket 1 out of 4 on id);
## 注:tablesample 是抽样语句,语法:TABLESAMPLE(BUCKET x OUT OF y) 。 y 必须是 table 总 bucket 数的倍数或者因子。hive 根据 y 的大小,决定抽样的比例。例如,table 总共分了 4 份,当 y=2 时,抽取(4/2=)2 个 bucket 的数据,当 y=8 时,抽取(4/8=)1/2个 bucket 的数据。
## x 表示从哪个 bucket 开始抽取,如果需要取多个分区,以后的分区号为当前分区号加上y。例如,table 总 bucket 数为 4,tablesample(bucket 1 out of 2),表示总共抽取(4/2=)2 个bucket 的数据,抽取第 1(x)个和第 3(x+y)个 bucket 的数据。
## 注意:x 的值必须小于等于 y 的值,否则
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-04-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hive学习笔记
    • 1、Hive数据类型
      • 2、建表语句示例
        • 3、删除数据库
          • 4、分桶抽样查询
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档