sqoop 兼容性问题

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 本文简介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
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
143 7
|
2月前
|
分布式计算 Hadoop 容器
Hadoop组件版本不兼容
【5月更文挑战第7天】Hadoop组件版本不兼容
28 3
|
2月前
|
Java atlas 网络安全
Flink CDC编译问题之编译atlas报错如何解决
Flink CDC编译指的是将Flink CDC源代码转换成可执行程序的过程,可能会涉及到依赖管理和环境配置等问题;本合集将介绍Flink CDC编译的步骤、常见错误及其解决办法,以确保顺利完成编译过程。
|
2月前
|
关系型数据库 MySQL Java
如何使用flink 实现mysql 库的整个库的数据迁移
使用Apache Flink 迁移整个 MySQL 库的数据可以分为以下步骤: ### 步骤 1: 设置 Flink 环境 确保你已经配置好了 Flink 的环境,并且已经安装好了相关的依赖。 ### 步骤 2: 连接 MySQL 数据库 使用 Flink 提供的 JDBC 连接器连接到 MySQL 数据库。你可以使用 `JDBCInputFormat` 来读取数据库中的数据。 ```java StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); Properti
245 0
HIVE3 兼容spark3.XX,编译过程
HIVE3 兼容spark3.XX,编译过程
281 0
HIVE3 兼容spark3.XX,编译过程
|
IDE Java 编译器
Flink 1.11.x WatermarkStrategy 不兼容问题
最近群里的一个同学问了这么一个问题,在 Scala 代码中使用了 WatermarkStrategy ,代码在编译的时候会抛出异常,具体的报错信息如下: Error:Error:line (31)Static methods in interface require -target:jvm-1.8 .assignTimestampsAndWatermarks(WatermarkStrategy.forBoundedOutOfOrderness[String](Duration.ofSeconds(5))) 刚开始我以为是他的 JDK 版本设置的有问题,后来他说
Flink 1.11.x WatermarkStrategy 不兼容问题
|
SQL 分布式计算 Oracle
【Sqoop】(一)Sqoop 概述及安装环境搭建
【Sqoop】(一)Sqoop 概述及安装环境搭建
383 0
【Sqoop】(一)Sqoop 概述及安装环境搭建
|
SQL 存储 分布式计算
Hive简介及源码编译
Hive是一个基于Hadoop的数据仓库,可以将结构化数据映射成一张表,并提供类SQL的功能,最初由Facebook提供,使用HQL作为查询接口、HDFS作为存储底层、MapReduce作为执行层,设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据,2008年facebook把Hive项目贡献给Apache。Hive提供了比较完整的SQL功能(本质是将SQL转换为MapReduce),自身最大的缺点就是执行速度慢。Hive有自身的元数据结构描述,可以使用MySql\ProstgreSql\oracle 等关系型数据库来进行存储,但请注意Hive中的所有数据都存储在HDFS中
393 0
Hive简介及源码编译
|
SQL 资源调度 关系型数据库
数据迁移的工具Sqoop的安装与配置
数据迁移的工具Sqoop的安装与配置
121 0
hudi 0.10.0适配hdp 3.1.5编译
hudi由于其依赖于hdfs作为后端存储,所以为了适配hdp 3.1.5版本,需要进行适配性编译,本文介绍hudi 0.10.0适配hdp 3.1.5编译。
hudi 0.10.0适配hdp 3.1.5编译