整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

15.4生成代码

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

15.5节中,将看到Sqoop在将源数据库的表数据写到HDFS之前,会首 先用生成的代码对其进行反序列化。

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

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

% sqoop codegen –connect jdbc:mysql://localhost/hadoopguide \

> –table widgets –class-najne Widget

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

如果计划使用导入到SequenceFile文件中的记录,你将不可避免地用到生 成的类(对SequenceFile文件中的数据进行反序列化)。在使用文本文件中的 记录时不需要用到生成的代码,但在15.6节中,我们将看到Sqoop生成的


代码有助于解决数据处理过程中的一些繁琐问题。

其他序列化系统

最近的Sqoop版本支持基于Avro的序列化和模式生成(参见4.4节),允许 你在项目中使用Sqoop,但无须集成生成的代码。

转载请注明:全栈大数据 » 15.4生成代码

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址