sqoop是干嘛的,就不在这里浪费笔墨了,这里主要讲下一个新手接触到sqoop碰到的问题。
一 业务场景 Hive 查询Hql的结果进入MySql,目前本人是通过两步来实现的,
1 把hive查询结果直接进入Hive的表a(a表需要创建,结构需要和b一样)
2 通过sqoop把表a的内容导入到MySql表b(b表已经存在),
这个时候你需要现在hive上创建a表,假如b表字段很多,你需要一个一个字段写到建表语句。我是不想写。估计你也是,都是通过sqoop直接把MySQL的b表导入到hive,因为hive表默认的分隔符是'\001',所以倒过来的时候要注意,带上表分隔符参数
二 sqoop导入hive数据到MySql碰到hive表中列的值为null的情况。
在导入数据的过程中,如果碰到列值为null的情况,hive中为null的是以\N代替的,所以你在导入到MySql时,需要加上两个参数:--input-null-string '\\N' --input-null-non-string '\\N',多加一个'\',是为转义。如果你通过这个还不能解决字段为null的情况,还是报什么NumberFormalt异常的话,那就是比较另类的了,没有关系,我们还是要办法解决,这就是终极武器。呵呵
你应该注意到每次通过sqoop导入MySql的时,都会生成一个以MySql表命名的.java文件,然后打成JAR包,给sqoop提交给hadoop 的MR来解析Hive表中的数据。那我们可以根据报的错误,找到对应的行,改写该文件,编译,重新打包,sqoop可以通过 -jar-file ,--class-name 组合让我们指定运行自己的jar包中的某个class。来解析该hive表中的每行数据。脚本如下:一个完整的例子如下:
这样就可以解决所有解析异常了。
下面贴下sqoop经常用的命令,
1 导入MySQL表到Hive
sqoop支持两种增量MySql导入到hive的模式,
一种是 append,即通过指定一个递增的列,比如:
--incremental append --check-column num_iid --last-value 0
另种是可以根据时间戳,比如:
--incremental
就是只导入created 比'2012-02-01 11:0:00'更大的数据。
一 业务场景 Hive 查询Hql的结果进入MySql,目前本人是通过两步来实现的,
1 把hive查询结果直接进入Hive的表a(a表需要创建,结构需要和b一样)
2 通过sqoop把表a的内容导入到MySql表b(b表已经存在),
这个时候你需要现在hive上创建a表,假如b表字段很多,你需要一个一个字段写到建表语句。我是不想写。估计你也是,都是通过sqoop直接把MySQL的b表导入到hive,因为hive表默认的分隔符是'\001',所以倒过来的时候要注意,带上表分隔符参数
--fields-terminated-by '\t',如下:
sqoop import --connect jdbc:mysql://db.foo.com/corp --table EMPLOYEES \ --fields-terminated-by '\t'要想通过sqoop把hive的表导入MySql,hive上的表分隔符一定要是'\t',sqoop才能顺利导入,如果你使用默认的,即使在用sqoop导入的时候通过参数--input-fields-terminated-by '\001'也不行的。一定是--input-fields-terminated-by '\t' 才行。
二 sqoop导入hive数据到MySql碰到hive表中列的值为null的情况。
在导入数据的过程中,如果碰到列值为null的情况,hive中为null的是以\N代替的,所以你在导入到MySql时,需要加上两个参数:--input-null-string '\\N' --input-null-non-string '\\N',多加一个'\',是为转义。如果你通过这个还不能解决字段为null的情况,还是报什么NumberFormalt异常的话,那就是比较另类的了,没有关系,我们还是要办法解决,这就是终极武器。呵呵
你应该注意到每次通过sqoop导入MySql的时,都会生成一个以MySql表命名的.java文件,然后打成JAR包,给sqoop提交给hadoop 的MR来解析Hive表中的数据。那我们可以根据报的错误,找到对应的行,改写该文件,编译,重新打包,sqoop可以通过 -jar-file ,--class-name 组合让我们指定运行自己的jar包中的某个class。来解析该hive表中的每行数据。脚本如下:一个完整的例子如下:
./bin/sqoop export--connect "jdbc:mysql://localhost/aaa?useUnicode=true&characterEncoding=utf-8"
--username aaa --password bbb --table table
--export-dir /hive/warehouse/table --input-fields-terminated-by'\t'
--input-null-string'\\N'--input-null-non-string'\\N'
--class-name com.chamago.sqoop.codegen.bi_weekly_sales_item
--jar-file /tmp/sqoop-chamago/bi_weekly_sales_item.jar
上面--jar-file 参数指定jar包的路径。--class-name 指定jar包中的class。这样就可以解决所有解析异常了。
下面贴下sqoop经常用的命令,
1 导入MySQL表到Hive
./sqoop import --connect jdbc:mysql://localhost/aaa?useUnicode=true&characterEncoding=utf-8--username
aaa --password bbb --table table2 --hive-import
三 sqoop增量倒入
sqoop支持两种增量MySql导入到hive的模式,
一种是 append,即通过指定一个递增的列,比如:
--incremental append --check-column num_iid --last-value 0
另种是可以根据时间戳,比如:
--incremental
lastmodified
--check-column created --last-value '2012-02-01 11:0:00' 就是只导入created 比'2012-02-01 11:0:00'更大的数据。
相关推荐
Sqoop使用MapReduce进行数据传输,其数据传输工作是在后台由一个或多个MapReduce作业完成的。这个特性使得Sqoop能够利用Hadoop的并行处理能力以及容错机制,进行大规模数据的导入导出操作。 本文档适用于Sqoop ...
Sqoop 安装与使用 Sqoop 是一款方便的在传统型数据库与 Hadoop 之间进行数据迁移的工具,充分利用 MapReduce 并行特点以批处理的方式加快数据传输。Sqoop 工具是 Hadoop 下连接关系型数据库和 Hadoop 的桥梁,支持...
sqoop数据导出工具
sqoop使用参考是自己在学习和开发中用到的进行总结和汇总,方便大家做为参考.同时文内容不断的在更新中
本实验报告将详细介绍如何安装配置Sqoop以及如何使用它进行数据的导入导出。 **一、Sqoop安装** 1. 首先,你需要访问 `/install-package` 目录,确认sqoop的安装包已经在那里。使用命令 `cd /install-package` 和 ...
大数据sqoop从RDBMS中向Hadoop的hdfs中进行数据的转移工具。
#### 三、Sqoop使用方法 ##### 常用命令: - `sqoop list-databases`:列出数据库中的所有数据库。 - `sqoop list-tables`:列出指定数据库中的所有表。 - `sqoop import`:将数据从关系型数据库导入到HDFS。 - `...
安装配置 sqoop 链接:...适用人群:Sqoop 1.4.7 适用于以下人群:数据工程师:数据工程师可以使用 Sqoop 进行大规模数据的迁移和转换,以支持数据分析、数
在本教程中,我们将详细探讨 Sqoop 的安装过程及其基本使用方法。 ### Sqoop 的安装 1. **环境准备**:确保你已经安装了 Java 运行环境(JRE)和 Java 开发工具(JDK),因为 Sqoop 需要它们。检查 Java 版本: `...
### Sqoop 使用必备知识点 #### 一、概述 Sqoop 是一款开源的工具,主要用于在 Hadoop 和关系型数据库服务器之间传输数据。它利用 MapReduce 作业并行处理数据的特性,大大提高了数据导入导出的效率。对于从事 ETL...
通过这份Sqoop手册,你可以深入理解 Sqoop 的使用方法,掌握如何配置和调优 Sqoop 任务,以及如何解决常见问题。对于需要在 Hadoop 和 RDBMS 之间进行数据交换的场景,Sqoop 是一个非常实用的工具。
利用sqoop导出PostgresSQL的数据时所需的驱动包,只需要将该包放到hive或sqoop的lib目录下即可。
在“使用sqoop抽取mysql数据”的场景中,我们需要了解以下关键知识点: 1. ** Sqoop 安装与配置**:首先,你需要在 Hadoop 集群或本地环境中安装 Sqoop,并配置相关的数据库连接信息,包括 JDBC 驱动、数据库服务器...
* 依赖于 JDBC 驱动包:Sqoop 需要使用 JDBC 驱动包来连接数据源,如果 JDBC 驱动包不存在或不可用,Sqoop 将无法工作。 * 依赖于 Hadoop 环境:Sqoop 需要 Hadoop 环境来工作,如果 Hadoop 环境不可用,Sqoop 将...
3. **启动脚本问题**:如果使用的是Sqoop的启动脚本来运行命令,可能脚本没有正确设置类路径。检查并确保启动脚本(如`bin/sqoop`)正确指定了包含所有依赖的类路径。 4. **Java版本不兼容**:Sqoop可能需要特定...
使用 vim 编辑器打开 configure-sqoop 文件,并注释掉相关的检查语句。 三、Sqoop 集群搭建 Sqoop 集群搭建需要在 Hadoop 集群环境中安装和配置 Sqoop。在集群环境中,需要至少三个节点,分别作为 Namenode、...
在CDH(Cloudera Distribution Including Apache Hadoop)环境下安装和使用Sqoop,可以方便地将结构化数据从传统的数据库系统迁移到Hadoop的分布式文件系统HDFS,或者将分析结果写回数据库。下面我们将详细讲解sqoop...
大数据集群 Hadoop HBase Hive Sqoop 集群环境安装配置及使用文档 在本文档中,我们将详细介绍如何搭建一个大数据集群环境,包括 Hadoop、HBase、Hive 和 Sqoop 的安装配置及使用。该文档将分为四部分:Hadoop 集群...