1、需求背景
和上一篇文章Spark通过修改DataFrame的schema给表字段添加注释一样,通过Spark将关系型数据库(以Oracle为例)的表同步的Hive,这里讲的只是同步历史数据,不包括同步增量数据。
2、Oracle和Hive的字段类型对应
利用Spark的字段类型自动匹配,本来以为Spark匹配的不是很好,只是简单的判断一下是否为数字、字符串,结果经验证,Spark可以获取到Oracle的小数点精度,Spark的字段类型对应和我自己整理的差不多,所以就索性用Spark自带的字段类型匹配,而不是自己去Oracle相关表获取每个字段类型,然后一一转化为Hive对应的字段类型,下面是Oracle和Hive的字段类型对应,只是整理了大概:
Oracle | Hive |
---|---|
VARCHAR2 | String |
NVARCHAR2 | String |
NUMBER | DECIMAL/Int |
DATE | TIMESTAMP |
TIMESTAMP | TIMESTAMP |
CHAR | String |
CLOB(一般用不到) | String |
BLOB(一般用不到) | BINARY |
RAW (一般用不到) | BINARY |
Other | String |