sqoop 兼容性问题

--direct 只支持mysql 5.0 + 和postgresql 8.3+(只是import)

jdbc的jar包需要放在$SQOOP_HOME/lib目录下

mysql zeroDateTimeBehavior

mysql允许DATE列使用'0000-00-00\' 如果不处理sqoop默认给转换为null

当然你也可以自己指定为 round,自动转换为('0001-01-01\')

$ sqoop import --table foo \

    --connect jdbc:mysql://db.example.com/someDb?zeroDateTimeBehavior=round

mysql UNSIGNED 列

如果是UNSIGNED的,它是介于0 and 2^32 (4294967295)的,但是数据库会告诉sqoop,这是整形。整形的大小是介于-2147483648 and \+2147483647的,超过214748364的,它处理不了。

--direct模式不支持BLOB和CLOB,不支持视图

为了性能,一般的是32MB提交一次,可以通过 -D sqoop.mysql.export.checkpoint.bytes=size来指定

它的单位是bytes,设置为0,就禁用检查点了。

在对生产环境导入数据时,用户也在用,我们通过stage表来解决稳定性的问题,肯定会对生产环境产生影响。

我们可以通过设置 -D sqoop.mysql.export.sleep.ms=time 参数(单位毫秒)来让它停止一段时间。每传输sqoop.mysql.export.checkpoint.bytes个字节就休息一段时间。

oracle部分

sqoop支持 ojdbc6.jar

oracle当中的DATE和TIME,都会当做是TIMESTAMP值,sqoop会当做java.sql.Timestamp来存储

当把数据导回到数据库的时候,sqoop会把它转换为 yyyy-mm-dd HH:MM:SS.ffffffff格式

但是你只希望yyyy-mm-dd格式

时区,默认是GMT

$ sqoop import -D oracle.sessionTimeZone=America/Los_Angeles \

    --connect jdbc:oracle:thin:@//db.example.com/foo --table bar

hive和sql的数据类型匹配

DATE,TIME,TIMESTAMP 会被当做是字符串处置, NUMERIC和DECIMAL会被认为是double

sqoop会提醒你精度丢失了。

Microsoft SQL特殊的参数

--schema <name>     Scheme name that sqoop should use. Default is "dbo".
--table-hints <hints>     Table hints that Sqoop should use for data movement.

$ sqoop import ... --table custom_table -- --schema custom_schema
$ sqoop import ... --table custom_table -- --table-hints NOLOCK

PostgreSQL

$ sqoop export (generic-args) --connection-manager org.apache.sqoop.manager.PGBulkloadManager (export-args)

支持参数和例子:

Property     Description
mapred.reduce.tasks     map数量
pgbulkload.bin             pg_bulkoad binary安装路径,每一台机器都有
pgbulkload.check.constraints     检查约束,默认是true
pgbulkload.parse.errors             在转义,加密,过滤,检查约束,数据类型转换中产生的错误的最大数,默认是无穷大
pgbulkload.duplicate.errors     数据重复的忍耐值. 重复值在数据库中存储是badfile,默认是无穷大
pgbulkload.filter             转换每一行为输入的数据

Here is a example of complete command line.

$ sqoop export \
    -Dmapred.reduce.tasks=2
    -Dpgbulkload.bin="/usr/local/bin/pg_bulkload" \
    -Dpgbulkload.input.field.delim=$'\t' \
    -Dpgbulkload.check.constraints="YES" \
    -Dpgbulkload.parse.errors="INFINITE" \
    -Dpgbulkload.duplicate.errors="INFINITE" \
    --connect jdbc:postgresql://pgsql.example.net:5432/sqooptest \
    --connection-manager org.apache.sqoop.manager.PGBulkloadManager \
    --table test --username sqooptest --export-dir=/test -m 2
时间: 2024-10-21 17:29:08

sqoop 兼容性问题的相关文章

Sqoop解决关系型数据库与HDFS之间进行数据转换

Sqoop是一个转换工具,用于在关系型数据库与HDFS之间进行数据转换. 以下操作就是使用sqoop在mysql和hdfs之间转换数据. 1.安装 我们使用的版本是sqoop-1.4.3.bin__hadoop-1.0.0.tar.gz,打算安装在/usr/local目录下. 首先就是解压缩,重命名为sqoop,然后在文件/etc/profile中设置环境变量SQOOP_HOME. 把mysql的jdbc驱动mysql-connector-java-5.1.10.jar复制到sqoop项目的li

Sqoop(2)

生成的代码 除了,从数据库中的内容写到HDFS,Sqoop还提供了写向当前本地目录的生成的Java源文件(widgest.java).(运行完Sqoop导入命令以后,你可以通过 ls widgest.java 查看) 代码生成是Sqoop导入过程的一个必要部分:你会在483页,数据导入:深入学习,在导入HDFS前,Sqoop用生成的代码来反序列化数据库中的特定的表数据. 生成的类,有能力处理一个单独的记录,这个记录索引着导入的表.生成的类可以在Mapreduce中操作这样的一个记录,或者把记录以

《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server

1.6 配置Sqoop以支持SQL Server 本节将展示如何配置Sqoop和SQL Server数据库进行连接.这样可以允许数据从SQL Server数据库有效地导入HDFS中. 准备工作 本例子使用了Sqoop V1.3.0版本. 如果你使用的是CDH3版本,Sqoop默认是已经安装了.如果不是CDH3,你可以通过https://ccp.cloudera.com/display/CDHDOC/Sqoop+Installation找到发行版的说明. 在本节假设你已经启动了一个Microsof

win8高效辅助软件兼容性测试

  用户们在这个经典的Windows操作系统平台上,得到了视听.娱乐以及各种安全服务的同 时,通过一些第三方的辅助软件,Windows能够高效地提高人们的工作效率,这一类高效服务类工具,最终发展成为一个比较大的类别.那么,在目前最新的 Win8系统平台下,这一类的软件应用的兼容性如何?我们将和大家继续来探讨. 往往在PC上使用了这样的工具软件,都能提高或者辅助用户的工作和学习,而对于目前最新的Windows操作系统来说,这个系列的软件也都是用户所需要的实用工具,我们抽取该系列软件中的部分软件来进

Win8电脑安全软件兼容性测试

  电脑中的安全软件对系统本身的使用权限要求较高,在与操作系统紧密结合的过程中,就存在了与系统兼容性的问题.在这个问题上,兼容性越好的话,安全软件本身功能的发挥更为全面,更能准确地保护电脑系统的安全. 待测试软件详情 软件类别 软件名称 媒体播放类 瑞星全功能安全软件 金山木马专杀 木马清理王 USBKiller(U盘病毒专杀工具) AVG Anti-Spyware Safe3 web防火墙 贝壳木马专杀 安全软件分为杀毒软件,系统工具和反流氓软件.安全软件是一种可以对病毒.木马等一切已知的对计

怎么样关闭win7备份功能和win7兼容性提示窗口

windows 7很多功能都非常人性化,像任务栏的改变.Areo特效等都非常好用,但是有些繁忙的提示就不好用的,如果只是提示一次还好,但是每次打开文件或者软件都要提示一次,这就会让人非常的烦. 1 win7备份功能: 如果你有使用操作中心,那么在操作中心很多时候都会提示你进行系统备份.而系统备份一般情况下我们都是手动备份的,所以这个功能是没用的.我们要关闭它. 单击"开始/控制面板/操作中心",直接点击"维护/设置备份"下面的"关闭有关'Windows备份

[翻译]JDK 8 兼容性指南

翻译官方文档,删除部分可忽略. 译者:坤谷,井桐,激酶 兼容性是一个复杂的问题. 本文介绍了Java平台潜在的三种不兼容问题: 源码: 源码兼容性问题关注Java源代码转换成class文件是否兼容,包括代码是否仍然可编译. 二进制: 在Java语言规范中,二进制兼容性定义为:"类的改变是二进制兼容的(或者不破坏二进制兼容性),是指如果改变前的类的二进制在链接时没有错误,那么改变后的类在链接时仍然没有错误." 行为 : 行为兼容性包括在运行时执行的代码的语义. 欲了解更多信息,请参阅Op

js中window.showModalDialog各浏览器居中和传参实例兼以及一些兼容性问题

  浏览器居中以及传参实例 window.showModelDialog可设置center参数为yes,保证其在子窗口在父窗口居中. 但是该参数只对IE浏览器有效,对火狐无效,只有通过计算模态窗口的居中位置.   解决办法 function openShowModalDialog(url,param,whparam,e){    // 传递至子窗口的参数  var paramObj = param || { };    // 模态窗口高度和宽度  var whparamObj = whparam

android开发-求高手解答安卓软件兼容性的一个问题

问题描述 求高手解答安卓软件兼容性的一个问题 安卓新手一枚,在2.2的试验机上做了个仿qq程序,今天拿了部4.0试了下,很多控件没有反应,甚至有的操作还会报错,不知道是为什么,我在建立这个项目时按照默认的配置配的,求解......