Hadoop教程

生成代码

除了能够将数据库表的内容写到HDFS, Sqoop还生成了一个Java源文件 (widgets.java),保存在当前的本地目录中。在运行了前面的sqoop import命 令之后,可以通过ls widgets.java命令看到这个文件。

生成的类(widgets)中能够保存一条从被导入表中取出的记录。该类可以在 MapReduce中使用这条记录,也可以将这条记录保存在HDFS中的一个SequenceFile文件中。在导入过程中,由sqoop生成的SequenceFile文件会使用生 成的类,将每一个被导入的行保存在其键/值对格式中“值”的位置。

也许你不想将生成的类命名为widgets,因为每一个类的实例只对应于一条记录。我们可以使用另外一个Sqoop工具来生成源代码,但并不执行导入操作,这个生成的代码仍然会检查数据库表,以确定与每个字段相匹配的数据类型:

% sqoop codegen --connect jdbc:mysql://localhost/hadoopguide \>--table widgets --class-name Widget

codegen工具只是简单地生成代码,它不执行完整的导入操作。我们指定希望生成 一个名为Widget的类,这个类将被写到Widget.java文件中。在之前执行的导 入过程中,我们还可以指定--class-name和其他代码生成参数。如果你意外地删 除了生成的源代码,或希望使用不同于导入过程的设定来生成代码,都可以用这个 工具来重新生成代码。

其他序列化系统

随着Sqoop的不断发展,Sqoop对数据进行序列化和交互的方法也在不断增加。在 写作这一章的时候,最新的Sqoop版本要求生成的代码必须实现Writable接口。

关注微信获取最新动态