`
guoyunsky
  • 浏览: 854437 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
3d3a22a0-f00f-3227-8d03-d2bbe672af75
Heritrix源码分析
浏览量:206255
Group-logo
SQL的MapReduce...
浏览量:0
社区版块
存档分类
最新评论

Sqoop源码分析(二) Sqoop1.3变化/改进

阅读更多

          本博客属原创文章,转载请务必注明出处:http://guoyunsky.iteye.com/blog/1190702

          由于公司有自己的Sqoop分支,基于Sqoop1.2.Sqoop1.3出现也有一段时间了 ,虽然Sqoop官方版本采纳了一部分, 但还是有大部分没有采纳,所以需要将他们整合起来.我花了一天时间从源码层面了解Sqoop1.3的所有变化,了解这些变化之后才能让他们兼容.由于刚接触Sqoop也没几天,有几个地方也没搞清楚,同时对于一些变化也不知道原因,有些变化我也没理解,只是做了个翻译工作,待日后慢慢完善吧.现在贴出Sqoop1.3变化.

 

   1.SQOOP-181. Improve formatting of help messages.(直接增加)
    URL:https://github.com/cloudera/sqoop/commit/36ed6ddd3b3c24668210f05bfa1c74f6ee789259
    时间:2011-04-15
    大概说明:改进了帮助信息显示效果
    具体说明:
        将显示信息改成->后面部分
        conn-manager-class-name->class-name
        null-string->null-str
        input-null-string->null-str
        null-non-string->null-str
        input-null-non-string->null-str

2.SQOOP-180. Classpath construction in script.(直接增加)
    URL:https://github.com/cloudera/sqoop/commit/cd696caa8b37c97334b133f4f0a8552d4665c28c
    时间:2011-04-15
    说明:更改了bin/configure-sqoop脚本
    具体说明:
       

3.SQOOP-178. Support for tool plugins.(直接增加)
    URL: https://github.com/cloudera/sqoop/commit/82f7f4dd5234a6eb1dfdef0608985bd95fe3c5d4
    时间:2011-04-15
    大概说明:支持工具(也就是命令)插件
    具体改动如下:
        之前每个命令是对应一个SoopTool,也就是这里的tool(工具),而这些是固定的。Sqoop自身没有提供这些Tool的话你就无法完成某个功能.
        但1.3的版本允许用户自定义工具插件,如此就可以完成各种不同的命令,比如你定义一个query插件表示查询,那么你就可以通过query args(如--connection)运行查询命令

4.SQOOP-179. Adding setField() method to SqoopRecord(直接增加)
    URL:https://github.com/cloudera/sqoop/commit/53184fcdcfa717dac1b1e523a992c99c933dae9b
    时间:2011-04-15
    大概说明:给SqoopRecord怎加setField()方法
    具体说明:
        SqoopRecord表示获取的数据,如Import时,从关系型数据库获得的一条条记录到了Sqoop里就是SqoopRecord.Sqoop通过反射映射好对应的字段和值.
        而使用setField()方法则避免这个反射,直接对字段设值

5.SQOOP-183. File rename fails for generated files.(已经有)
    URL:https://github.com/cloudera/sqoop/commit/c2b381f69bab4b5034b731ca981f1f32bc19d221
    时间:2011-04-27
    大概说明:将JDK里的重命名方法改成apache.commons.io
    具体说明:
        JDK里重命名File.reName()的确有些bug,以前碰到过重命名不成抛异常的情况。引入apache.commons.io则更有保障

6.SQOOP-185. Tool plugins should not reuse names.(直接增加)
    URL: https://github.com/cloudera/sqoop/commit/2afdac99e9f8c80ce0a52e96bc71157f8d522ad4
    时间:2011-05-03
    说明:Tool名字不允许重名
    具体说明:
        如果重名则会抛出throw new RuntimeException(A plugin is attempting to register a tool with name toolName, but this tool already exists (toolName))

7.SQOOP-170. Capturing causal exception for logging.(直接增加)
    URL: https://github.com/cloudera/sqoop/commit/4e9772a218eb4570b22fc179d4664d549a1fcfbd
     时间:2011-05-03
     说明:关系型数据库异常由抛出改成日志记录
     具体说明:
        该日志等级为ERROR

8.SQOOP-187. Allow skipping end-of-record delimiter. (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/04bbbcd0bef3054cada071a08c3c7beb23a4051a
     时间:2011-05-04
     说明:允许跳过每条记录的分隔符
     具体说明:(直接翻译,还需推敲)SqoopRecord.toString()和SqoopRecord.toString(DelimiterSet)通常会在每条记录后面添加分隔符.当需要处理这些文件的时候,Sqoop会使用它自己的OutputFormat,如此的话这些分隔符就被保留了.其他的用户在他们的MapReduce代码里也会使用这些OutputFormat去处理这些SqoopRecord,但是这样的话通过TextOutputFormat处理后,这些分隔符有成为了行分隔符.这个补丁则允许用户在将SqoopRecord转换成字符串时(调用toString)可控制这些分隔符.

9.SQOOP-192. Limit HSQLDB export to single inserts. (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/3db1f6a5debd8df9ae5ecb88730f76b7bf9db3d4
     时间:2011-05-04
     说明:限制从Hadoop导出数据插入到HSQLDB时,只允许一个线程在插入
     具体说明:

10.SQOOP-191. Supplying programmatic configuration. (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/3c09a94d43aff2f3fd2050dc34f25ed7e935a1ff
     时间:2011-05-04
     说明:支持用户自定义配置
     具体说明:

11.SQOOP-129. Newlines in RDBMS fields break Hive(直接增加)
    URL: https://github.com/cloudera/sqoop/commit/f73f19da4db3525b67459f0c43d380eb15406098
     时间:2011-05-04
     说明:在导入到Hive中时,删除RDBMS数据库中每个字段内容里面的回车
     具体说明:
        直接str.replaceAll("\\n|\\r|\01", "");
        为什么要替换?

12.Sqoop should work without HBase where possible.(直接增加)
    URL: https://github.com/cloudera/sqoop/commit/214a0be8b94203b6a121ea3eb9663bed0fb862b9
     时间:2011-05-03
     说明:在没有HBASE的前提下,Sqoop还能继续工作
     具体说明:

13.SQOOP-193. Update Docs to describe --hive-drop-import-delims argument (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/72ed0356260e1848a96c01b7b1bbed318f3bb031
     时间:2011-05-11
     说明:给Sqoop增加--hive-drop-import-delims参数文档描述
     具体说明:
        更改了hive-args.txt和hive-txt文件,描述hive-drop-import-delims这个参数

14.SQOOP-100. Sqoop to support populating Hive table partitions. (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/12b598afc38d16392ea85a024ca1da33135c413c
     时间:2011-05-10
     说明:Sqoop导入Hive时候支持Hive表分区
     具体说明:

15.SQOOP-205. Add getJob() to JobBase (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/6e65ea3da0099efe69cd36501693ae45eb27b8c7
     时间:2011-05-20
     说明:给JobBase以及其子类增加getJob()方法
     具体说明:

16.SQOOP-204. Allow connector specific bounds query. (直接增加)
    URL:https://github.com/cloudera/sqoop/commit/4ed20bb837312ca2286fd6d65dea8c7d0bd2e755
     时间:2011-05-19
     说明:(直接翻译)这个变化在ConnManager引入新的方法,允许各种自定义实现去覆盖它,并且在通过free-form查询导入数据时,可以自定义范围查询去计算split(通过某个字段分隔数据)
     具体说明:

17.SQOOP-202. sqoop-metastore should be able to handle missing pid files  (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/78079f248fa2872d5fc0e400b6d57e7d07de1e48
     时间:2011-05-24
     说明:sqoop-metastore应该能够处理缺少的pid文件
     具体说明:在bin/stop-metastore.sh增加判断pid文件是否存在的判断

18.SQOOP-206. HBase import to use plugin InputFormat.  (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/bd3e4e0385dc8acdd6d06ed862c07f7c9d218f81
     时间:2011-05-26
     说明:HBase导入时支持插件化InputFormat
     具体说明:之前是固定使用DataDrivenDBInputFormat,现在可以自定义

19.SQOOP-201. Support for arbitrary compression codec.    (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/97c57560bcd6658245f71af41d32016e9cdb2f5b
     时间:2011-05-26
     说明:支持任意的压缩编码,默认是gzip
     具体说明:
        也就是增加--compression-codec参数,可以自定义以何种压缩方式将数据写入到HDFS.需要附带相关的压缩类

20.SQOOP-158. Additional methods for generated classes.    (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/fac97ca97a608762df02a9cf603ec435f02cd9dd
     时间:2011-06-05
     说明:生成类的时候,增加额外的方法
     具体说明:增加set和基于field值的equals方法,做何用途?

21.SQOOP-195. Documentation tip on specifying MR job name.     (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/64f6d2733219a1224fe24a43475544e7b0bd47bf
     时间:2011-06-07
     说明:文档中给出MR job名字提示
     具体说明:
        修改了src/docs/user/tools.txt

22.SQOOP-215. Support for codec aliases.    (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/dd282fbf29a583d0df4dac4a203f7c6fd060be96
     时间:2011-06-07
     说明:压缩编码支持别名
     具体说明:

23.SQOOP-48: Import bug when splitting over unsigned bigint column (直接增加)
    URL:https://github.com/cloudera/sqoop/commit/e180eab51f75658ac1c90257523279042e8d1841
     时间:2011-06-03
     说明:解决在导入时分隔大的无符号bigint字段存在的bug
     具体说明:待推敲,column split这块源码还需细读一下
   
24.SQOOP-219. Duplicate columns arguments results in code generation compil... (直接增加)
    URL: https://github.com/cloudera/sqoop/commit/c9e05069c0d77a9b9956668ca75cee0969962e46
     时间:2011-06-03
     说明:在生成代码的时候,有重复的列则会报错
     具体说明
        导入数据时,会通过ClassWriter生成代码,如果导入的数据存在相同的列名,则编译这些的时候会报错.所以在生成代码的时候要避免这个问题,对列名进行去重.如果存在相同的列名则会抛以下异常:
        throw new IllegalArgumentException("Duplicate Column identifier specified: 'XXX'");
   
25.SQOOP-67. NPE when column name list contains spaces (直接增加)
    URL:https://github.com/cloudera/sqoop/commit/dba07db3eafb3c5570e9e1acb99ed21f5aa20189
     时间:2011-06-03
     说明:--columns col1,col2,clo3中出现空格,如--columns col1,col2 ,col3那么col2会成为"col2 "
     具体说明:
   
26.SQOOP-212. Hive import for existing table does not work. (直接增加)
    URL:https://github.com/cloudera/sqoop/commit/3dbc8df63ef82a4f1d07ec20f10f3a8882e714e0
     时间:2011-06-14
     说明:在导入Hive的时候,增加hive-overwrite参数去决定当Hive中存在该表时是否原来的表,之前是当表存在时则不会导入
     具体说明:

27.SQOOP-224. Table name issue with PostgreSQL. (直接添加)
    URL:https://github.com/cloudera/sqoop/commit/e0c1890d6925d52d9d77aceece4f5429d2c04a9b
     时间:2011-06-16
     说明:PstgresqlManager最近有了更新,去避免标识符名称,会在两个地方更改代码.要么无法避免标识符名称要么就跟以前的逻辑一样,将他们小写
     具体说明:

28.SQOOP-91. Empty "columns" clause leads to null pointer exception (直接添加)
    URL:https://github.com/cloudera/sqoop/commit/556209e1bf48b1f15f7600b857a22659f5c469b1
     时间:2011-06-03
     说明:解决导入的数据中有些列为NULL的话会导致空指针异常
     具体说明:
       

29.SQOOP-225. Checkstyle module for detecting trailing white spaces. (直接添加)
    URL:https://github.com/cloudera/sqoop/commit/36dd48d91bf18a90ef7a56e3dd981f838d5f0e52
     时间:2011-06-16
     说明:这个补丁增加checkstyle模块去跟踪空格,它也在代码上删除各种跟踪到的空格
     具体说明:
        格式化代码,删除代码中一些不必要的空格,包括换行,Tab等

30.SQOOP-207. Support import as Avro Data Files. (直接添加)
    URL:https://github.com/cloudera/sqoop/commit/166417fdb0afd3141c6fd0fdc50043b5e13c2a97
     时间:2011-06-18
     说明:支持将导入的数据生成Avro数据文件
     具体说明:
        类似--as sequencefile,导入的数据生成SequenceFile,还有as-textfile.现在支持生成arvo数据文件,加上--as-avrodatafile参数即可.
        所使用的Arvo版本是1.5.1

31.Increment version number for release.     (直接添加)
    URL:https://github.com/cloudera/sqoop/commit/4859bdbf89fa3492db3c19c15054966e1bb1b628
     时间:2011-06-19
     说明:增加版本号
     具体说明:
        在build.xml中将版本从1.3.0-SNAPSHOT增加1.3.1-SNAPSHOT

 

 

更多技术文章、感悟、分享、勾搭,请用微信扫描:

1
2
分享到:
评论

相关推荐

    sqoop-1.4.6-cdh5.13.2.tar

    mv /usr/local/sqoop-1.4.6-cdh5.13.2/conf/sqoop-env.template.sh /usr/local/sqoop-1.4.6-cdh5.13.2/conf/sqoop-env.sh vi /usr/local/sqoop-1.4.6-cdh5.13.2/conf/sqoop-env.sh export HADOOP_COMMON_HOME=/usr/...

    sqoop1.99.7源码

    sqoop2(1.99.7版本)源代码,可以直接按需求修改一些内容,例如,默认分隔符等

    大数据-sqoop.pptx

    当业务数据存储在关系数据库中,随着数据量的增长,使用数据库进行分析可能会变得效率低下,这时可以通过 Sqoop 将数据导入 Hadoop 平台进行离线分析。同样,当在 Hadoop 上处理完大量数据后,可能需要将结果同步回...

    sqoop重编译版本,解决了联合主键的同步问题

    本资源是把sqoop的源码按照官方推荐的issue解决方案重新编译后的版本。sqoop-1.4.7.bin__hadoop-2.6.0-2020.0508.tar.gz是已完成编译的tar包。sqoop编译.zip是编译所需要改的配置以及步骤。 各位请二选其一吧。这个...

    java连接sqoop源码-quick-sqoop:ApacheSqoopETL工具的快速参考

    http://apache.arvixe.com/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz $ sudo mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz /srv/ $ cd /srv $ sudo tar -xvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha...

    Sqoop安装与使用

    Sqoop 工具的发展至今主要演化了二大版本,Sqoop1 和 Sqoop2,我们以 Sqoop1 为案例进行讲解,Sqoop2 商用不太稳定。 Sqoop 工具是一个非常有用的数据迁移工具,可以帮助用户将传统型数据库中的数据迁移到 Hadoop ...

    sqoop-1.4.6-cdh5.5.0.tar.gz

    首先,Sqoop 1.4.6 是该工具的一个稳定版本,它包含了多项改进和优化,比如增强的性能、更丰富的元数据支持以及对多种数据库系统的兼容性。在 CDH 5.5.0 上运行, Sqoop 可以无缝地与 Hadoop 2.x 版本兼容,确保了在...

    sqoop-1.4.7(可直接下载学习使用)附有安装配置教程!

    安装配置 sqoop 链接:...适用人群:Sqoop 1.4.7 适用于以下人群:数据工程师:数据工程师可以使用 Sqoop 进行大规模数据的迁移和转换,以支持数据分析、数

    大数据技术基础实验报告-sqoop的安装配置与应用.doc

    4. 将数据库驱动(如MySQL)复制到 `$SQOOP_HOME/lib` 目录,例如:`cp mysql-connector-java-5.1.45.jar /apps/sqoop/lib/`。这将允许Sqoop与数据库建立连接。最后,通过 `sqoop version` 命令验证安装是否成功。 ...

    sqoop-1.4.7.tar.gz.zip

    在这个特定的文件“sqoop-1.4.7.tar.gz.zip”中,我们看到的是 Sqoop 1.4.7 版本的源码或二进制包。这个版本的 Sqoop 是一个较早的稳定版本,它提供了对早期 Hadoop 生态系统的支持。 首先,我们需要了解 Sqoop 的...

    第9章 Sqoop组件安装配置.docx

    Sqoop 相关发行版本可以通过官网 https://mirror-hk.koddos.net/apache/sqoop/ 来获取。在 Master 节点上使用 root 用户将 Sqoop 安装包解压到 /usr/local/src 目录下。 `[root@master ~]# cd /usr/local/src/` `...

    sqoop-cdh安装包

    1. **下载Sqoop**:从Cloudera仓库或Apache官方网站下载适用于CDH版本的Sqoop二进制包,例如`sqoop-cdh-X.Y.Z-xxxx-bin.tar.gz`。 2. **解压 Sqoop**:将下载的压缩包解压到一个合适的目录,如 `/usr/local/sqoop`...

    sqoop-1.4.7.zip

    Sqoop是Apache Hadoop生态中的一个工具,用于在关系型数据库和Hadoop之间高效地导入导出数据。在这个场景中,我们遇到了一个关于Sqoop运行时的问题,即"找不到或无法加载主类 org.apache.sqoop.sqoop"。这个问题通常...

    大数据技术基础实验报告-sqoop的安装配置与应用PDF

    一、Sqoop 安装 1.到/install-package目录下查看sqoop的安装包 cd /install-package ls 2.解压 sqoop 的按转包到/apps目录下 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz-C/apps 将名称换成sqoop mv sqopp-...

    sqoop-1.4.5

    总的来说,Sqoop-1.4.5为Hadoop 2.x环境提供了强大而灵活的数据迁移能力,使得数据科学家和数据工程师能够无缝地在传统数据库和Hadoop之间迁移数据,实现大数据分析和处理。正确配置和使用Sqoop,能够有效地提升数据...

    sqoop安装与使用

    sqoop import --connect jdbc:mysql://10.13.7.108:3306/sqoopDB --username persistence --password 123456 --table employees --target-dir /persistence/sqoop/sqoop_employees -m 1 ``` - `--connect`:指定...

    sqoop2安装文档

    Sqoop2是Sqoop的一个重大升级版本,它引入了全新的架构和改进的功能,使得数据迁移更加稳定可靠。本文档将详细介绍Sqoop2的安装步骤及配置方法,帮助用户顺利完成部署。 #### 二、安装步骤 1. **解压安装包** ...

    sqoop-1.4.7.jar

    解决错误:Could not find or load main class ...如果你没有积分,也可以自己去这个地址下载:https://talend-update.talend.com/nexus/content/repositories/libraries/org/apache/sqoop/sqoop/1.4.7/sqoop-1.4.7.jar

    sqoop配置.docx

    - 下载地址: [Apache Sqoop](http://apache.org/dist/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz)。 - 解压命令: `tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz`。 2. **MySQL ...

Global site tag (gtag.js) - Google Analytics