您的足迹:首页 > Sqoop >sqoop 兼容性问题

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

本博客所有文章如无特别注明均为原创。作者:数据为王复制或转载请以超链接形式注明转自 数据为王
原文地址《sqoop 兼容性问题

相关推荐


  • blogger

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)