学习记录3 Hadoop生态圈技术栈(一)

计算机软件开发 2024-10-3 20:09:41 75 0 来自 中国
这里先做一下简要的学习。
这里属于数据开发范畴,所以首先肯定是先看一下数据仓库的工具------hive。
hive简介

Hadoop本身的三个部分HDFS(数据储存),MapReduce(数据分析处理)和YARN(集群资源管理和调度)。其实乍一看这几个方面其实已经较为完善了,看着是可以满足一整套流程的,那么hive存在的意义是什么呢?
其存在的意义呢,个人感觉是为了方便一点。原因有二,其一是MapReduce本身的开发难度较大,学习成本比较高;其二就是HDFS储存的文件没有字段名,甚至没有数据类型,这就使得这个数据储存看起来很让人恶心了。
而Hive就由此而生,可以将结构化的数据文件“映射”成一张清晰的表,并且也提供了类似SQL的查询功能。其实功能就这么点,说到底就是将MapReduce的任务换成类似SQL去计算,这样呢就解决了以上问题。当然了底层数据还是HDFS,所以上面提到的是“映射”二字。
Hive的安装部分这里就不浪费时间讲了,一些环境、驱动什么的弄起来也挺复杂的。
hive勉强也算是一门编程语言,那么这里就大概说一下他的数据类型和文件格式吧,在基本数据结构上面与Java很类似,整数型、浮点型、布尔型、字符串型等等,该有的基本也都有,在数据类型转化上面也是有函数的。
select   cast ('1111'  as  int);
这样就直接实现了字符串转数值,其实也很简单啦,感觉应该不会很常用,希望要用的时候可以记起来。
除了基本数据结构以外就是集合数据类型了,包括array(有序集合),map(键值对),struct(不同类型的集合),union(不同类型元素在同一字段不同行)。
这四个数据类型都是集合,就是内部存的数据不同,最普遍的应该还是array,简单的单数据类型集合。例如(1,2,3)
那么如何从集合里面取值呢?
用[ ]就可以,这点倒是和Python类似了。
除了union数据类型写得稀里糊涂以外,其他也还是蛮好理解的,array和map应该还是最常用的类型了,struct存在的意义不知道在哪,以后希望能看到再顿悟吧。至于union,笑笑就可以了。
hive的文本文件数据编码

hive的储存格式是定义好的,当然也可以人为自己去定义,但是我相信没有哪个憨批会自己去重新定义。
首先就是hive自己的默认分割符,除了换行以外就是^A,^B,^C,有点印象就可以,知道它是分割符,这就避免了看代码不知道这个古怪符号的尴尬局面。至于三种^的区别其实也很简单,A就是create table才是产生的分割符,B就是array,map,struct的元素分割符。而C就是map里面键值对的分割符号了。
hive操作---DDL命令

这个就是查询之前更加基础的命令了,DDL就是数据定义语言,主要命令就是create、alter、drop之类的。定义的就是数据库的结构或者数据类型。
这个hive的DDL命令与SQL几乎完全相同,这里我是一点不想看了,主要还是sql看吐了。
内部表与外部表

hive值得一提的一点就是这个内部和外部表。虽然我现在还没弄懂两者创立的原因。
在创建表格时,默认内部表,加上external才会变成外部表,而生产中,大多使用外部表。
两者区别主要在删除上,内部表删除就是真的删除,外部表删除会保留数据,只删定义。这里我是没懂,删定义?数据保留?那我不是删了个寂寞吗?


8.png 如果在建表时出错了,就是表建错了,别着急,这里学习一下补救方法,应该会派上用场。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 16:43, Processed in 0.154312 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表