sql 数据类型转换_数据ETL篇SparkSQL/Hive之基础

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

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

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

    基础数据类型

数据类型描述存储大小范围
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时间戳

其他数据类型

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

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

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

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

13138e14da62dd314f342147a5e01e04.png

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

有类型肯定就有数据类型转换的操作瑟,数据类型转换就是相当的简单了。关键字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程序了。