1.只用Sqoop
用于关系型数据库如mysql与非关系型数据库间数据的导入导出,要注意空值的处理。
Sqoop将mysql数据导出到hive中,需要经过两步,
sqoop直接导入hive中其实他底层会做两件事,1,数据到hdfs 2.hdfs到hive 而且都是mr(由于他的底层就是Map)
2.使用Azkaban调度
azkaban调度Sqoop:
由azkaban调度Sqoop将mysql导到hdfs一步,从hdfs到hive-ods再一步这样第二步用得是hive的load更快,hive的load是直接剪切文件,因此生产环境下采用这个方式。
3.拓展:
3.1Sqoop import原理
从传统数据库获取元数据信息(schema、table、field、field type),把导入功能转换为只有Map的Mapreduce作业,在mapreduce中有很多map,每个map读一片数据,进而并行的完成数据的拷贝
Sqoop 在 import 时,需要制定 split-by 参数。
Sqoop 根据不同的 split-by参数值 来进行切分, 然后将切分出来的区域分配到不同 map 中。每个map中再处理数据库中获取的一行一行的值,写入到 HDFS 中。同时split-by 根据不同的参数类型有不同的切分方法,如比较简单的int型,Sqoop会取最大和最小split-by字段值,然后根据传入的 num-mappers来确定划分几个区域。
3.2Sqoop export 原理
获取导出表的schema、meta信息,和Hadoop中的字段match;多个map only作业同时运行,完成hdfs中数据导出到关系型数据库中.
——————————————————————————
部分引用自:https://www.jianshu.com/p/f3e3a4c3b429