《数据采集与预处理》课件 项目四 使用Sqoop进行数据的迁移_第1页
《数据采集与预处理》课件 项目四 使用Sqoop进行数据的迁移_第2页
《数据采集与预处理》课件 项目四 使用Sqoop进行数据的迁移_第3页
《数据采集与预处理》课件 项目四 使用Sqoop进行数据的迁移_第4页
《数据采集与预处理》课件 项目四 使用Sqoop进行数据的迁移_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目四使用Sqoop进行数据的迁移言示网66网站原创,侵权必究Project4UseSqoopfordatamigration任务一Task1言示网66网站原创,侵权必究使用Sqoop将数据导入到HDFS言示网66网站原创,侵权必究任务描述(1)学习Sqoop的相关基础知识。(2)使用Sqoop实现数据由Mysql导入到HDFS中。

任务目标(1)熟悉Sqoop的相关基础知识。(2)学会使用Sqoop实现数据由Mysql导入到HDFS中。言示网66网站原创,侵权必究知识准备Sqoop概念Sqoop是Apache旗下的一款Hadoop和关系数据库之间传输数据的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql,Oracle、Postgresql...)间进行数据的相互传递。Sqoop可以使用MapReduce和ApacheHive转换Hadoop上的数据。高级功能包括增量加载、使用SQL进行格式设置和更新数据集。Sqoop并行运行以实现高速数据传输。如图4-1所示。言示网66网站原创,侵权必究知识准备1.Sqoop参数(1)import和export通用参数Sqoop的import和export通用参数如表4-1所示言示网66网站原创,侵权必究知识准备1.Sqoop参数(2)数据导入工具import参数import工具是将HDFS平台外部的结构化存储系统中的数据导入到Hadoop(Hive)平台,数据导入工具import参数,如表4-2所示。表4-2import参数表言示网66网站原创,侵权必究知识准备1.Sqoop参数(3)Job参数SqoopJob用来生成一个Sqoop任务,生成后不会立即执行,需要手动执行,Job参数如表4-5所示。言示网66网站原创,侵权必究任务实施1.环境准备(1)在$SQOOP_HOME/conf下修改sqoop-env.sh配置文件如下所示。(2)拷贝

JDBC

驱动程序,拷贝

jdbc

驱动(mysql-connector-java-5.1.46-bin.jar)到sqoop的lib目录下(建立软链接也可以)。(3)将$HIVE_HOME/lib下的hive-common-1.2.1.jar,拷贝到$SQOOP_HOME/lib目录下。如不拷贝在MySQL往Hive导数据的时候将会出现错误。(4)将$HADOOP_HOME/share/hadoop/tools/lib/java-json.jar拷贝到$SQOOP_HOME/lib/目录下;否则在创建sqoopjob时会报“java.lang.NoClassDefFoundError:org/json/JSONObject”的错误。言示网66网站原创,侵权必究任务实施1.环境准备(5)数据准备在mysql中创建sqoop数据库,命令如下。创建数据表beijing_businfo,命令如下:执行beijing_businfo.sql脚本,将数据导入beijing_businfo数据表中,命令如下:创建数据表part_businfo,这里只需要复制beijing_businfo表的结构,命令如下:执行part_businfo.sql脚本,将数据导入part_businfo数据表中,命令如下:言示网66网站原创,侵权必究任务实施2.全量导入所有表将sqoop数据库下的“beijng_businfo”和“part_businfo”两个数据表导入到HDFS中,连接数据库使用账户“root”,密码“123456”。导入表中推荐设有主键,否则导入过程中将会出错,提示找不到表的主键,请使用--splitby指定一个,或使用“-m1”执行顺序导入,命令如下。导入到HDFS上的数据默认存放到/user/用户名/表名路径下,查看数据目录,如图4-1所示。言示网66网站原创,侵权必究任务实施2.全量导入所有表在图

4-1

中分别单击“beijng_businfo”和“part_businfo”,查看数据导入结果,看到“_SUCCESS”即表示数据导入成功,Sqoop中默认的map数量为4,所以可以看到在每个数据导入目录中都生成了4个part-m-00000到part-m-00003的文件,如图4-2所示。言示网66网站原创,侵权必究任务实施3.增量导入增量导入是每次只导入新增加的或者需要更新的数据。增量导入会大大降低数据库服务器的负担。增量导入需要使用--incremental参数。使用append模式导入数据,在mysql的part_businfo数据表中,现有300条数据,在beijing_businfo数据表中有331条数据,现在将beijing_businfo数据表中bus_id>300的数据追加到part_businfo数据表中,然后将part_businfo数据表中的新增数据增量导入到HDFS中。将beijing_businfo数据表中bus_id>300的数据追加到part_businfo数据表,命令如下。使用增量导入的功能,将part_businfo数据表中的新增数据增量导入到HDFS中,命令如下所示。言示网66网站原创,侵权必究任务实施3.增量导入查看/user/root/part_businfo

路径下的文件可以发现共有8个文件,从part-m-00004

到part-m-00007这4个文件就是增量数据导入的结果,如图4-3所示。--incremental参数表示使用增量导入,参数值为使用的增量导入的类型。由于只添加而不修改列的值,所以使用append。增量导入中还需要额外的两个参数:--check-column指定一个列,用于检查新增加的数据,--last-value包含上次成功导入到Hadoop的值(比如bus_id取值为从1-331,全量导入时共导入了1-300条记录数据,last-value为300)。言示网66网站原创,侵权必究任务实施2.增量导入在part_businfo数据表中更新last_update_date字段大于“2023-12-310:0:0”的记录,将其中的bus_type字段修改为“测试类型”,命令如下。使用lastmodified模式而不是append模式来导入变化的数据。即导入last_update_date列大于“2023-12-310:0:0”的记录。命令如下。言示网66网站原创,侵权必究任务实施3.增量导入在使用lastmodified模式而不是append模式来导入变化的数据,如果不使用--merge-key参数,代码运行中将会出错,代码执行后,查看数据导入结果,如图4-4所示。对比程序执行前后的数据信息如图4-5所示。言示网66网站原创,侵权必究任务实施3.增量导入增量导入模式lastmodified需要一个日期(可选的类型有date、time、datetime和timestamp)列来保存列被修改的时间。注:--last-value的值在增量导入时是包含在需要导入的范围之内的。Sqoop不会检查数据是否重复。Sqoop导入任务完成后会给出新的last-value,可以保存下来,以便下次使用。Sqoop的metastore会保存任务的信息,可以创建对应的作业,注意--import中在--和import之间有一个空格,命令如下。运行代码,如图4-6所示.言示网66网站原创,侵权必究任务实施3.增量导入执行作业,命令如下。从作业运行结果可以看到没有新增数据被导入(数据表beijing_businfo没有数据更新),如图4-7所示。查看任务信息,信息中会包含last-value的当前值,命令如下。言示网66网站原创,侵权必究任务实施3.增量导入查看任务信息,可以看到last.value=331,如图4-8所示。删除任务,命令如下。运行删除任务命令,运行结果如图4-9所示。任务二Task2言示网66网站原创,侵权必究使用Sqoop将数据导入到Hive言示网66网站原创,侵权必究任务描述(1)学习Sqoop的相关基础知识。(2)使用Sqoop实现数据由Mysql导入到Hive中。

任务目标(1)熟悉Sqoop的相关基础知识。(2)学会使用Sqoop实现数据由Mysql导入到Hive中。言示网66网站原创,侵权必究知识准备知识准备使用Sqoop将数据导入到Hive中时使用的参数,如表4-3所示。言示网66网站原创,侵权必究任务实施1.全量导入(1)单表导入首先需要将“$HIVE_HOME/lib”目录下的所有hive-shims*文件拷贝到$SQOOP_HOME/lib/目录下,如果没有拷贝相应文件的话,运行程序将会产生“Exceptioninthread“main”java.lang.NoClassDefFoundError:org/apache/hadoop/hive/shims/ShimLoader”的错误,命令如下。其次,在Hive的命令行中创建sqoop数据库,命令如下。将Mysql中的sqoop数据库中的beijing_businfo数据表导入到Hive中的sqoop数据库中。言示网66网站原创,侵权必究任务实施1.全量导入运行代码,部分运行结果如图4-10所示。在Web端查看数据导入结果,默认存放目录为“/user/hive/warehouse/”,如图4-11所示。在hive的命令行中查看导入结果,如图4-12所示。言示网66网站原创,侵权必究任务实施1.全量导入将Mysql中的sqoop数据库中的beijing_businfo数据表导入到Hive中的sqoop数据库中的实现过程分为两步:①将数据导入到HDFS,默认的临时目录是/user/当前操作用户/mysql表名(因此如果该目录下文件存在的话,将会产生文件已存在的错误)。②将导入到HDFS的数据迁移到Hive表,如果Hive表不存在,Sqoop会自动创建内部表。(2)所有表导入将Mysql中的sqoop数据库中的所有数据表导入到Hive中的sqoop数据库中,命令如下。言示网66网站原创,侵权必究任务实施1.全量导入运行代码,部分运行结果如图4-13所示。在Web端查看数据导入结果,默认存放目录为“/user/hive/warehouse/”,如图4-14所示。言示网66网站原创,侵权必究任务实施1.全量导入在hive的命令行中查看导入结果,如图4-15所示。言示网66网站原创,侵权必究任务实施2.增量导入由于--hiveimport与incremental冲突,所以增量导入不能直接导入到Hive表中,但可以导入到Hive表对应的HDFS目录里。为Mysql中的beijing_businfo数据表添加一行记录,如下所示。增量导入数据前查看“/user/hive/warehouse/sqoop.db/beijing_businfo/part-m-00000”文件内容,可以看到最后的记录为bus_id为:“331”的数据记录,如图4-16所示。言示网66网站原创,侵权必究任务实施2.增量导入为实现数据的增量导入,执行命令如下。程序执行结果如图4-17所示。查看“/user/hive/warehouse/sqoop.db/beijing_businfo/part-m-00000_copy_1”文件内容,可以看到数据,如图4-18所示。part-m-00000_copy_1文件内容为增量导入内容。任务三Task3言示网66网站原创,侵权必究使用Sqoop将数据导入到Mysql言示网66网站原创,侵权必究任务描述(1)学习Sqoop的相关基础知识。(2)使用Sqoop实现数据由HDFS导出到Mysql中。(3)使用Sqoop实现数据由Hive导出到Mysql中。

任务目标(1)熟悉Sqoop的相关基础知识。(2)学会使用Sqoop实现数据由HDFS导出到Mysql中。(3)学会使用Sqoop实现数据由Hive导出到Mysql中。言示网66网站原创,侵权必究知识准备知识准备export工具是将HDFS平台的数据,导出到外部的结构化存储系统中,数据导出工具export参数如表4-7所示。言示网66网站原创,侵权必究任务实施1.数据导入(1)将HDFS中的beijing_businfo目录下的数据导出到Mysql数据库hdfs中的beijing_businfo数据表中。在Mysql中创建数据库hdfs,命令如下。在hdfs数据库下创建beijing_businfo数据表,命令如下。使用Sqoop将HDFS中的数据导出到mysql数据库中,命令如下。言示网66网站原创,侵权必究任务实施1.数据导入-columns参数用于设定选择列并控制它们的排序。当导出数据文件和目标表字段列顺序完全一致的时候可以不写。否则以逗号为间隔选择和排列各个列。没有被包含在–columns后面列名或字段要么具备默认值,要么就允许插入空值。否则数据库会拒绝接受sqoop导出的数据,导致Sqoop作业失败。--export-dir参数用于设定导出目录,在执行导出的时候,必须指定这个参数,同时需要具备--table或--call参数,--table设定据库当中对应的表,--call设定调用某个存储过程。执行命令,如图4-19所示。言示网66网站原创,侵权必究任务实施1.数据导入数据导出成功后,执行“SELECT*FROMbeijing_businfoORDERBYbus_id”;查看导出数据如图4-20所示。需要注意的是sqoop导出数据实际是使用独立的insert语句来添加每一行记录,但如果导出记录数非常大(比如“100万记录”),这将使导出过程非常缓慢。要解决这个问题,需要使用Sqoop的批量插入。言示网66网站原创,侵权必究任务实施1.数据导入sqoop可以每次插入多条记录(即批量插入),例如每次插入10条记录数据,命令如下。执行命令,如图4-21所示。言示网66网站原创,侵权必究任务实施1.数据导入仔细查看图4-19可以看到数据导出速度为“17.6449KB/sec”,而在批量插入模式下,由图4-21可以看到数据导出速度为“13.4321KB/sec”,由此可见批量插入模式下可以提高导出速度。数据导出成功后,执行“SELECT*FROMbeijing_businfoORDERBYbus_id”;查看导出数据如图4-22所示。言示网66网站原创,侵权必究任务实施1.数据导入(2)将Hive中的beijing_businfo目录下的数据导出到Mysql数据库hdfs中的beijing_businfo数据表中。将Mysql数据库hdfs中的beijing_businfo数据表中数据清空,命令如下。将Hive中的beijing_businfo目录下的数据导出到Mysql数据库hdfs中的beijing_businfo数据表中,命令如下。执行命令,如图4-23所示。言示网66网站原创,侵权

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论