vlambda博客
学习文章列表

数据ETL篇SparkSQL/Hive之基础

    好久没有更文了,写文章真的很费时间,也不是为了啥,主要就是想沉淀学习过程中的一些知识。

    做了这么久的数据挖掘,主要还是ETL和算法,打算把这一部分知识好好的梳理一下。关于数据的分层就后面再聊了,最近主要还是说如何做ETL吧。本次内容主要就是介绍下Hive的数据类型、关系运算。下一篇就介绍SparkSQL/Hive的一些内置函数和开创函数以及自定义函数UDF吧。

     数据类型是数据的一个基本属性,用于区分不同类型的数据,不同的数据类型所占的存储空间也是不相同的,在创建表之前我们就可以想清楚字段的类型,在存储方面也能节省一定的空间,定义好了数据类型,当我们在存储数据时也必须遵守该字段的数据类型,不然就会报错的哟。

    基础数据类型

数据类型
描述
存储大小
范围
int
整数型
4个字节

string
字符串
看存入多大了

double
双精度浮点型
4字节
decimal
固定有效位数


Boolean
布尔类型

true/false
smallint
有符号整数
16字节
-32768-32768
tinyint
整数
16字节
-128-127
bigint
整数
64字节
很大
varchar
可变长度字符


binary
二进制数

0/1
date
日期


timestamp
时间戳

其他数据类型

数据类型
描述
map java类似,一组无序键值对
array
一段有序序列,对应Java arraylist
struct 一组命名的字段,字段类型可以不同

map: 假设定义类型 map<string,int>,字段的建为string类型,值为int型。在数据库中表现为{"k1":v1,"k2":v2},有点像json的感觉。

array: 常用就array<string>,array<int>类型,在数据库中表现形式类似于[1,2,3,4]之类的,用中括号的。

struct:感觉和map差不多吧,但是呢,他也可以单独查询里面的k,v列。用得不多。

其他的都比较好理解,就不举例了,主要还是方便自己看。

有类型肯定就有数据类型转换的操作瑟,数据类型转换就是相当的简单了。关键字cast。

比如说字符串转日期,YYYY-MM-dd这种,前提是能转哈,向‘a’这种转int肯定是不行的,比如说,cast(string as date) ;cast(string as int)。。。

运算符

关系运算符,都是些常用的,用于数据类型之间的比较,并且返回一个boolean,这里就简单描述下,做开发的sql也写得不少,这些简单的就稍微带过就好了。

运算符
描述
=
判断是否相等
<>
判断不相等
!=
判断不相等,和<>差不多
</> 判断小于/大于
<=/>=
小于等于/大于等于
between and 
判断是否在区间
is null
判断是否为空
is not null
判断不为空
like
匹配,常与%一起使用,%代表任意匹配
not like
和like相反
rlike
是否包含子字符串匹配

算术运算符,常用的不外乎就是+、-、*、/、%(取余),这里就不介绍了。

逻辑运算符常用的也就是and 、or、not、in、not in这些。都是些比较简单的概念性的东西,一看就懂一看就明白。

    后面逐渐会稍微难点了,主要分以下几个部分。内置函数以及开窗的使用和udf的开发,以及表操作和一些ETL常用的命令之类的,然后就是关于在spark上任务调优这些就差不多了,其他sql解决不了的也就只能依赖spark程序了。