• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Hive学习笔记(二),hive学习笔记

Hive学习笔记(二),hive学习笔记

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含Hive学习笔记(二),hive学习笔记等服务器相关知识,网友希望可以进行参考

Hive学习笔记(二),hive学习笔记


类型转换

hive原子数据类型可以进行隐式数据类型转换,如果某个表达式使用INT,那么TINYINT会转化为INT,hive不会进行反向转换,除非使用cast才操作。
数据类型转化规则:
任何整数类型都会转换为范围更广的类型。
所有整数类型、FLOAT、STRING类型都能隐式转换为double类型。
TINYINT、SMALLINY、INT都可以转换为FLOAT
BLOOEAN 不能转换为任何其他数据类型
cast进行显式数据类型转换:
eg:CAST(‘1’,AS INT) 将字符串’1’转换为整数值 1
如果cast执行转换失败,表达式会返回空值NULL

复杂数据类型:

hive有三种复杂数据类型:ARRAY、MAP和STRUCT .
ARRAY和MAP和java中的同名数据类型类似,STRUCT是记录类型,它封装一个字段的命名集合 。
复杂数据类型允许任意层次的嵌套。
复杂数据类型声明必须使用尖括号符号指明其中的数据字段类型。
eg:

CREATE TABLE complex(
  col1 ARRAY<INT>,
  col2 MAP<STRING,INT>,
  col3 STRUCT<a:STRING,b:INT,c:DOUBLE>
);

下面展示每种类型的字段访问操作:

select col1[0],col2['b'],col.c FROM complex;

操作与函数:

hive提供的操作包括:
关系操作:等值判断(x=’a’),空值判断(x IS NULL),模式匹配(x LIKE ‘A%’)
算术操作:加法:x+1
逻辑操作:逻辑或OR(x OR y)
在mysql和hive中,字符串连接用concat函数

hive内置函数:

hive提供了很多内置函数,分为这几大类:
数学和统计函数、字符串函数、日期函数、条件函数 、聚集函数以及处理 XML(使用xpath函数)和JSON 函数。
在hive外壳环境中用 show functions 可以获取函数列表,要了解具体函数使用帮助使用describe命令 :

describe function length;    

表:

hive表格逻辑上由存储的数据和描述数据格式的元数据组成,数据一般存放在HDFS中,也可以存放在其他hadoop文件系统中,包括 本地系统和S3。hive把元数据存放在关系型数据库中。

托管表和外部表
hive创建表,默认是hive负责管理数据,hive把数据移入它的“仓库目录”。另一种方式是外部表,这样hive可以访问仓库目录以外的数据。

两种表的区别在load和drop的语义上:
托管表:把数据加载到托管表时,hive会把数据数据移到仓库目录。
eg:

create table t1( dummy String);
load data inpath '/usr/tom/test.txt' into table t1;

把文件hdfs://usr/tom/test.txt移动到hive的仓库目录中,即hdfs://usr/hive/warehouse/t1。
加载操作仅是文件系统中文件的移动,即便是托管表,也不检查数据和表中声明的模式是否匹配,通过查询为缺失的字段返回为NULL,从而检查数据是否被正确解析。
要丢弃一个表:

drop table t1;

这个表会被删除,包括表的元数据和数据,load是一个移动操作,drop是一个删除操作。数据会彻底消失,这就是hive托管数据的定义。

外部表:与托管表不同的是,外部表由你来控制控制数据的创建和删除, 外部数据的位置需要在创建表的时候指明:

create  external table  t2(dummy String) 
location '/usr/tom/t2' ;
load data inpath '/usr/tom/test.txt' into table t2;

使用external 关键字,hive知道数据并不由自己管理,因此不会把数据移到自己的仓库目录。事实上, 在定义时,hive不会检查外部位置是否存在,这样的话就可以 把创建数据推迟到创建表后进行。
丢弃外部表,hive不碰数据,只会删除元数据。
如何选择使用哪种表:
除drop语义外,两种方式没有多大区别。所有处理都有hive完成,应该使用托管表。如果用hive和其他工具来处理统一数据。应该使用外部表。普遍做法是把HDFS(由其他进程创建)的初始数据集用作外部表使,然后用hive的变换功能把数据移到托管的hive表,反之也成立。外部表(未必在hdfs中)可以用于从 hive导出数据供其他应用程序使用。使用hive的另一个原因是为同一数据关联不同模式。

小结:

主要学习hive里的hive原子类型转换、复杂数据类型、操作与函数、hive的表,分为托管表和外部表,它们的定义、区别和什么时候使用,它们最大的区别在与drop语义不同,托管表里的drop操作会删除掉表的元数据和数据,而外部表只会删除掉元数据。

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Hive学习笔记(二),hive学习笔记

相关文章

  • hadoop2.6.0伪分布式安装,hadoop2.6.0伪
  • 上海第五次Spark meetup会议资料分享,sparkmeetup
  • spark streaming kafka1.4.1中的低阶api createDirectStream使用总结,directstream
  • 开源微内核seL4 microkernel,sel4microkernel
  • 在Ubuntu下安装Mongdb,以及Mongdb基本操作命令,ubuntumongdb
  • 《转》OpenStack Live Migration,《转》openstack
  • NOSQL(三)分布式数据模型,nosql模型
  • spark 查看 job history 日志,sparkjob
  • openstack 用nova API 指定 compute node 创建 instance,openstackcompute
  • hive-内部表与外部表的区别,hive-区别

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • hive中使用case、if:一个region统计业务(hive条件函数case、if、COALESCE语法介绍:CONDITIONAL FUNCTIONS IN HIVE),hivenotin
    • Elasticsearch之scroll,elasticsearch
    • Neutron数据库同步错误 NotImplementedError: No support for ALTER of constraints in SQLite dialect,sqlitealtertable
    • Hive 外部表 分区表,hive外部表分区表
    • MapReduce处理数据平均值与数值大小排行比较,mapreduce平均值
    • 《1》CentOS7.0+OpenStack+kvm云平台部署—基础配置,centos7.0kvm
    • MapReduce编程之WordCount,mapreducewordcount
    • [Hive]Hive调优:让任务并行执行,hive调优
    • OpenStack Magnum 项目简介,openstackmagnum
    • Nodejs课堂笔记-第四课 Dynamodb为何物,nodejsdynamodb

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有