1.Sqoop导入底层工作原理
(1)在导入前,Sqoop使用JDBC来检查将要导入的数据表。
(2)Sqoop检索出表中所有的列以及列的SQL数据类型。
(3)把这些SQL类型的映射到java数据类型,例如(VARCHAR、INTEGER)———>(String,Integer)。
(4)在MapReduce应用中将使用这些对应的java类型来保存字段的值。
(5)Sqoop的代码生成器使用这些信息来创建对应表的类,用于保存从表中抽取的记录。
注意:对于导入来说,更关键的是DBWritable接口的序列化方法,这些方法能使(生成的类)和JDBC进行交互。
2.Sqoop导出底层工作原理
(1)在导出前,sqoop会根据数据库连接字符串来选择一个导出方法 ————>对于大部分系统来说,sqoop会选择JDBC。
(2)Sqoop会根据目标表的定义生成一个java类。
(3)这个生成的类能够从文本中解析出记录,并能够向表中插入类型合适的值(除了能够读取ResultSet中的列)。
(4)然后启动一个MapReduce作业,从HDFS中读取源数据文件。
(5)使用生成的类解析出记录,并且执行选定的导出方法。