Sqoop最佳实践

sqoop 导入mysql blob字段,Sqoop导入的数据格式问题 Sqoop简单介绍Sqoop是用来在Hadoop平台和其他结构性存储(比如关系型数据库)之间解决大量数据传输问题的工具。也就是说可以从Oracle,MySQL,PostgreSQL等数据库中将数据传输到HDFS,Hive,HBase上,反之也可以。简单说一下Sqoop的原理。它实际上就是将导入导出这个工作通过指令翻译成一个java文件,然后通过MapReduce来执行格式的转换和传输工作。具体怎么... 阅读详情

一、什么是Sqoop

Sqoop是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是Mysql、Oracle等RDBMS。Sqoop底层用MapReduce程序实现抽取、转换、加载,MapReduce天生的特性保证了并行化和高容错率,而且相比Kettle等传统ETL工具,任务跑在Hadoop集群上,减少了ETL服务器资源的使用情况。在特定场景下,抽取过程会有很大的性能提升。

    如果要用Sqoop,必须正确安装并配置Hadoop,因依赖于本地的hadoop环境启动MR程序;mysql、oracle等数据库的JDBC驱动也要放到Sqoop的lib目录下。本文针对的是Sqoop1,不涉及到Sqoop2,两者有大区别,感兴趣的读者可以看下官网说明。

二、import

    import是数据从RDBMS导入到Hadoop的工具

    2.1、split

    Sqoop并行化是启多个map task实现的,-m(或--num-mappers)参数指定map task数,默认是四个。并行度不是设置的越大越好,map task的启动和销毁都会消耗资源,而且过多的数据库连接对数据库本身也会造成压力。在并行操作里,首先要解决输入数据是以什么方式负债均衡到多个map的,即怎么保证每个map处理的数据量大致相同且数据不重复。--split-by指定了split column,在执行并行操作时(多个map task),Sqoop需要知道以什么列split数据,其思想是:

    1、先查出split column的最小值和最大值

    2、然后根据map task数对(max-min)之间的数据进行均匀的范围切分

例如id作为split column,其最小值是0、最大值1000,如果设置4个map数,每个map task执行的查询语句类似于:SELECT * FROM sometable WHERE id >= lo AND id < hi,每个task里(lo,hi)的值分别是 (0, 250), (250, 500), (500, 750), and (750, 1001)。

    Sqoop不能在多列字段上进行拆分,如果没有索引或者有组合键,必须显示设置splitting column;默认的主键作为split column,如果表里没有主键或者没有指定--split-by,就要设置num-mappers 1或者--autoreset-to-one-mapper,这样就只会启动一个task。

    从上面的分析过程可以看到Sqoop以理想化方式根据split column将数据切分成多个范围,如果split键的值不是均匀分布,每个任务分配的数据量可能相差很大、导致数据倾斜。

    2.2、参数

--driver:指定JDBC驱动,默认Mysql

--table:指定查询的表

--columns:指定从源数据库导入的列。当没有设置--table参数,就默认查询表中所有字段,实现方式是在数据库执行一个查询语句,就可得到每个字段及其对应的类型.

Sqoop数据导入到Hive表的最佳实践 Sqoop是一个开源工具,用于在Hadoop生态系统中的数据存储(如HDFS)和关系型数据库之间传输数据。它可以帮助数据工程师和分析师轻松地将结构化数据从关系型数据库导入到Hadoop集群中,以供进一步的数据处理和分析。将数据从关系型数据库导入到Hive表是大数据分析中的关键步骤之一。本文提供了Sqoop数据导入到Hive表的最佳实践,包括详细的步骤、示例代码和最佳建议。希望这些示例代码和详细内容有助于大家更好地理解和实施数据导入操作。 阅读详情

相关推荐

Sqoop与Kafka的集成:实时数据导入

SqoopSqoop是一个开源工具,用于在Hadoop生态系统中传输数据和关系型数据库之间进行数据导入和导出。它使数据工程师能够轻松将结构化数据从关系型数据库导入到Hadoop集群中,以供进一步的数据处理和分析。Kafka是一个分布式流处理平台,用于构建实时数据流应用程序和数据管道。Kafka提供了持久性、高可用性和可伸缩性,用于传输大规模数据流,支持发布-订阅和批处理处理模式。将Sqoop与Kafka集成是实现实时数据导入和流处理的关键步骤之一。

日常分享数据分析开发、编程语言内容 1779

sqoop的安装和使用

本实验通过练习sqoop的安装和配置,为学习sqoop准备,并且通过练习将mysql中表的数据导入到HDFS上来对sqoop的使用有一个初步的了解。完成sqoop的安装和配置并且练习将mysql数据库里的数据导入到HDFS中。本次环境是:Ubuntu16.04+ jdk1.8.0_73 + hadoop2.7.3 + sqoop-1.4.6 +mysql-5.7.22解压sqoop安装包然后进行配置后,在sqoop的bin目录下输入命令【】检查是否配置成功。然后在mysql中创建表并添加数据最后导入到HDF

需要远程指导仿真实验、代码有问题的,请后台私信或者关注公众号 4136

Sqoop与Spark的协作:高性能数据处理

SqoopSqoop是一个开源工具,用于在Hadoop生态系统中传输数据和关系型数据库之间进行数据导入和导出。它使数据工程师能够轻松将结构化数据从关系型数据库导入到Hadoop集群中,以供进一步的数据处理和分析。Spark是一个快速、通用的大数据处理引擎,用于分布式数据处理和分析。Spark提供了丰富的API和库,支持批处理、流处理和机器学习等多种数据处理任务。将Sqoop与Spark协作是实现高性能数据处理的关键步骤之一。

日常分享数据分析开发、编程语言内容 1365

Sqoop export columns 参数使用

0 使用场景 如果不使用 column 参数,就要默认Hive 表中的字段顺序和个数和MySQL表保持一致,如果字段顺序或个数不一致可以加 columns 参数进行导出控制。 hive中的表字段数目和目标mysql表字段数目可以不一致,加 columns 参数 hive中的表字段和目标mysql表字段名称顺序可以调整,加 columns 参数 1.Hive字段顺序和MySQL保持一致 (1)添加 id字段 (2)MySQL 中插入两条记录 (3)Hive表中添加一条记录 .....

石榴姐yyds 3897

跨库数据迁移利器 —— Sqoop

一、Sqoop 基本命令 1. 查看所有命令 # sqoop help 2. 查看某条命令的具体使用方法 # sqoop help 命令名 二、Sqoop 与 MySQL 1. 查询MySQL所有数据库 通常用于 Sqoop 与 MySQL 连通测试: sqoop list-databases \ --connect jdbc:mysql://hadoop001:3306/ \ ...

weixin_30362083的博客 619

sqoop import 命令常用参数

sqoop import 命令常用参数 表1.常用参数 参数 描述 --connect 指定JDBC连接字符串 --connection-manager 指定要使用的连接管理器类 --driver 手动指定要使用的JDBC驱动程序类 --hadoop-mapred-home 覆写$ HADOOP_MAPRED_HOME --help 打印使用说明 --passw...

Apache_Jerry的博客 3493

sqoop mysql 性能_Sqoop最佳实践

一、什么是SqoopSqoop是一个在结构化数据和Hadoop之间进行批量数据迁移的工具,结构化数据可以是Mysql、Oracle等RDBMS。Sqoop底层用MapReduce程序实现抽取、转换、加载,MapReduce天生的特性保证了并行化和高容错率,而且相比Kettle等传统ETL工具,任务跑在Hadoop集群上,减少了ETL服务器资源的使用情况。在特定场景下,抽取过程会有很大的性能提升。如...

weixin_35686386的博客 883

Sqoop最佳实践:优化数据迁移效率和可靠性

Sqoop最佳实践:优化数据迁移效率和可靠性 1.背景介绍 1.1 大数据时代的数据集成挑战 在当今的大数据时代,企业和组织面临着海量数据的存储、处理和分析挑战。数据通常分散在不同的系统和平台中,如关系型数据库、NoSQ

AI天才研究院 758

Sqoop实战:从零到一掌握核心命令与最佳实践

本文详细介绍了Sqoop的核心命令与最佳实践,帮助读者从零开始掌握数据同步工具Sqoop的使用方法。通过实战案例,展示了如何从MySQL高效导入数据到Hive,包括全量同步、增量同步等关键操作,并提供了性能调优和常见问题解决方案,助力提升大数据处理效率。

weixin_30654583的博客 540

CDH集成Sqoop2做全库导入

Sqoop简介 Sqoop是一个用于Hadoop和关系型数据库或主机之间的数据传输工具。它可以将数据从关系型数据库import到HDFS,也可以从HDFS export到关系型数据库,通过Hadoop的MapReduce实现。 我们现在的需求就是需要sqoop导入,真个库从mysql到hive里面咯。 Sqoop命令 执行 sqoop help, 可以看到Sqoop支持的命令: Sq...

大壮的博客 1245

sqoop 常用命令整理(一)

  这些内容是从sqoop的官网整理出来的,是1.4.3版本的Document,如果有错误,希望大家指正。       1.使用sqoop导入数据      sqoop import --connect jdbc:mysql://localhost/db --username foo --table TEST   2.账号密码       sqoop import...

weixin_33972649的博客 355

sqoop命令–map-column-java导入和导出数据类型转换

参数允许您指定特定列应使用的Java类,以便在导入或导出数据时对其进行转换。Sqoop提供了多种命令来执行不同的操作,其中包括使用。您可以根据您的具体需求指定不同的Java类。这些Java类必须在集群中的所有节点上都可用。参数,您可以在Sqoop导入和导出数据时轻松地执行自定义数据类型转换。参数来指定应对特定列执行的Java类。参数的使用方式类似。在上面的示例中,我们使用了。在上面的示例中,我们使用了。列应使用的Java类。列将使用的Java类。

weixin_42497376的博客 794

sqoop一些常用到的命令

sqoop命令 注意:oracle在sqoop使用时要分大小写(表名和字段名) sqoop的命令行只能有一个,不能叠加 –hive-delims-replacement “ ” :可以将mysql中取到的\n, \r, and \01等特殊字符替换为自定义的字符,此处用了空格 –hive-drop-import-delims :可以将mysql中取到的\n, \r, and \01等特殊字符丢弃 –map-column-hive TMSTAMP=String :将sqoop中的java文件转换

日常记录 995

sqoop 数据同步方案理解+问题解决

sqoop 数据同步方案理解+问题解决

weixin_42151880的博客 2401

sqoop抽取mysql的mediumtext字段类型,被转成ASCII

在使用sqoop抽取mysql中到hive时,其中两个字段数据发生了如下变化: 明显该字段被转成了ascii类型,查看Mysql中数据库表字段是mediumtext类型。 估计是不识别这种类型,找了一下资料,发现可以对字段进行转义: --map-column-java xxx=String 如果是有多个字段需要转义的话,如下所示: --map-column-java 字段1=String,字段2=String,字段3=String,字段4=String 其中有两个小细节,字段名必须.

jdk1994的博客 1912

Sqoop【付诸实践 02】Sqoop1最新版 全库导入 + 数据过滤 + 字段类型支持 说明及举例代码(query参数及字段类型强制转换)

本文介绍了Sqoop1最新版的全库导入、数据过滤及字段类型支持功能。主要内容包括:1)使用import-all-tables实现全库导出到HDFS/Hive,需注意主键限制和并行执行问题;2)通过query参数实现数据过滤导入,需遵循特定语法规则;3)处理不支持字段类型的方法,使用--map-column-java和--map-column-hive参数进行强制类型转换。文中提供了详细的示例代码,涵盖全库导出到HDFS/Hive、条件过滤查询以及字段类型转换等常见场景。环境要求为JDK1.8、MySQL5.

シ風 825
上一篇: Oracle中start with…connect by prior子句用法
下一篇: MapReduce 执行流程总结
奔跑de五花肉
博客等级 码龄16年 41粉丝 169原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值