首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Sqoop使用流程

【导读:数据是二十一世纪的石油,蕴含巨大价值,这是·情报通·大数据技术系列第[29]篇文章,欢迎阅读和收藏】

1基本概念

Sqoop 使用流程主要包括三个部分:

Ø读取要导入数据的表结构,生成运行类,默认是 QueryResult ,打成 jar 包,然后提交给 Hadoop

Ø设置好 job ,主要是设置好各类参数

Ø这里就由 Hadoop 来执行 MapReduce 来执行 Import 命令

2术语解释

MapReduce 是一种分布式计算模型,是 Google 提出的,主要用于搜索领域,解决海量数据的计算问题。MR 有两个阶段组成:Map 和 Reduce ,用户只需实现 map() 和 reduce() 两个函数,即可实现分布式计算。

3详细说明

Sqoop使用流程如下:

3.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 项目的 lib 目录下。

3.2重命名配置文件

在 $/conf 中执行命令

mv sqoop-env-template.sh sqoop-env.sh

在 conf 目录下 , 有两个文件 sqoop-site.xml 和 sqoop-site-template.xml 内容是完全一样的 , 不必在意 , 我们只关心 sqoop-site.xml 即可。

3.3改配置文件

内容如下

#Set path to where bin/hadoop is available

export HADOOP_COMMON_HOME=/usr/local/hadoop/

#Set path to where hadoop-*-core.jar is available

export HADOOP_MAPRED_HOME=/usr/local/hadoop

#set the path to where bin/hbase is available

export HBASE_HOME=/usr/local/hbase

#Set the path to where bin/hive is available

export HIVE_HOME=/usr/local/hive

#Set the path for where zookeper config dir is

export ZOOCFGDIR=/usr/local/zk

好了 , 搞定了 , 下面就可以运行了。

3.4把数据从 mysql 导入到 hdfs 中

在 mysql 中数据库 test 中有一张表是 aa, 表中的数据如下图所示

image

现在我们要做的是把 aa 中的数据导入到 hdfs 中 , 执行命令如下

sqoop ##sqoop 命令

import ## 表示导入

– connect jdbc:mysql://ip:3306/sqoop ## 告诉 jdbc, 连接 mysql 的 url

– username root ## 连接 mysql 的用户名

– password admin ## 连接 mysql 的密码

– table aa ## 从 mysql 导出的表名称

– fields-terminated-by ‘ t ’ ## 指定输出文件中的行的字段分隔符

-m 1 ## 复制过程使用 1 个 map 作业

以上的命令中后面的 ## 部分是注释 , 执行的时候需要删掉 ; 另外 , 命令的所有内容不能换行 , 只能一行才能执行。以下操作类似。

该命令执行结束后 , 观察 hdfs 的目录 /user/, 下面会有一个文件夹是 aa, 里面有个文件是 part-m-00000 。该文件的内容就是数据表 aa 的内容 , 字段之间是使用制表符分割的。

3.5把数据从 hdfs 导出到 mysql 中

把上一步导入到 hdfs 的数据导出到 mysql 中。我们已知该文件有两个字段 , 使用制表符分隔的。那么 , 我们现在数据库 test 中创建一个数据表叫做 bb, 里面有两个字段。然后执行下面的命令

sqoop

export ## 表示数据从 hive 复制到 mysql 中

– connect jdbc:mysql://192.168.1.113:3306/test

– username root

– password admin

– table bb ##mysql 中的表 , 即将被导入的表名称

– export-dir ‘ /user/root/aa/part-m-00000 ’ ##hive 中被导出的文件

– fields-terminated-by ‘ t ’ ##hive 中被导出的文件字段的分隔符

命令执行完后 , 再去观察表 bb 中的数据 , 是不是已经存在了 !

sqoop 就是一个数据转换工具 , 明白了吧 !

3.6把 mysql 中的数据到如到 hive 中 和把 hive 中的数据导入到 mysql 中

将关系型数据的表结构复制到 hive 中– > 仅仅复制表结构

sqoop create-hive-table – connect jdbc:mysql://192.168.1.4:3306/radius2 – table nyyd_user – username root – password wckj123456 – hive-table user

从关系数据库导入文件到 hive 中– > 复制表结构同时也复制数据

sqoop import – connect jdbc:mysql://192.168.1.4:3306/radius2 – username root – password wckj123456 – table nyyd_user – hive-import

3.7把 hive 中的数据到入到 mysql 中

sqoop export – connect jdbc:mysql://192.168.1.4:3306/radius2 – username root – password wckj123456 – table userbak – export-dir /user/hive/warehouse/nbyd_user – input-fields-terminated-by ‘ /001 ’

此错误的原因为 sqoop 解析文件的字段与 MySql 数据库的表的字段对应不上造成的。因此需要在执行的时候给 sqoop 增加参数 , 告诉 sqoop 文件的分隔符 , 使它能够正确的解析文件字段。

hive 默认的字段分隔符为’ /001 ′

sqoop:MySQL 导入 HBase 命令 :

sqoop import – connect jdbc:mysql://192.168.1.4:3306/radius2 – table nbyd_user – hbase-table nbyd_user – column-family user – hbase-row-key id – hbase-create-table – username root -password wckj123456

– connect jdbc:mysql://10.10.97.116:3306/rsearch 表示远程或者本地 Mysql 服务的 URI,3306 是 Mysql 默认监听端口 ,rsearch 是数据库 , 若是其他数据库 , 如 Oracle, 只需修改 URI 即可。

– table researchers 表示导出 rsearch 数据库的 researchers 表。

– hbase-table A 表示在 HBase 中建立表 A 。

– column-family person 表示在表 A 中建立列族 person 。

– hbase-row-key id 表示表 A 的 row-key 是 researchers 表的 id 字段。

– hbase-create-table 表示在 HBase 中建立表。

– username ‘ root ’ 表示使用用户 root 连接 Mysql

hbase 导入数据到 mysql 中

sqoop import – connect jdbc:mysql://10.10.97.116:3306/rsearch – table researchers – hbase-table A – column-family person – hbase-row-key id – hbase-create-table – username root -password wckj123456

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191230A0SAMY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券