hdfs比mysql采用哪个_(MySQL里的数据)通过Sqoop Import HDFS 里 和 通过Sqoop Export HDFS 里的数据到(MySQL)(五)...

下面我们结合 HDFS,介绍 Sqoop 从关系型数据库的导入和导出

一、MySQL里的数据通过Sqoop import HDFS

它的功能是将数据从关系型数据库导入 HDFS 中,其流程图如下所示。

157eb25310bb8394da47163a62117374.png

我们来分析一下 Sqoop 数据导入流程,首先用户输入一个Sqoop import 命令,Sqoop 会从关系型数据库中获取元数据信息,

比如要操作数据库表的 schema是什么样子,这个表有哪些字段,这些字段都是什么数据类型等。

它获取这些信息之后,会将输入命令转化为基于 Map 的 MapReduce作业。

这样 MapReduce作业中有很多 Map 任务,每个 Map 任务从数据库中读取一片数据,这样多个 Map 任务实现并发的拷贝,把整个数据快速的拷贝到 HDFS 上。

Sqoop Import HDFS(带着官网)

306dbf1d4dd375e1d88c107171016e6d.png

f0731e3aa7bb08948e7dbd1a67e3f8ba.png

bed10a72b2412116b488679982864c37.png

5b2bfcfc7a6432c05e7d148c49831d2d.png

具体,自己去尝试做吧!

在这之前,先启动hadoop集群,sbin/start-all.sh。这里不多赘述。

同时,开启MySQL数据库。这里,不多赘述。

9ee4fce5416be85e49891542aa585b55.png

同时,因为后续的sqoop运行啊,会产生一些日志等,我这里先新建一个目录,用来专门存放它。在哪个目录下运行后续的sqoop操作,就在哪个目录下新建就好。(因为,已经配置了环境变量,在任何路径下都是可以运行的)

25afeff285d5f7dbe137741435bf2a4c.png

[hadoop@djt002 sqoop]$ pwd/usr/local/sqoop

[hadoop@djt002 sqoop]$ ll

total4drwxr-xr-x. 9 hadoop hadoop 4096 Apr 27 2015 sqoop-1.4.6[hadoop@djt002 sqoop]$ mkdir sqoopRunCreate

[hadoop@djt002 sqoop]$ ll

total8drwxr-xr-x. 9 hadoop hadoop 4096 Apr 27 2015 sqoop-1.4.6drwxrwxr-x. 2 hadoop hadoop 4096 Mar 17 23:33sqoopRunCreate

[hadoop@djt002 sqoop]$ cd sqoopRunCreate/[hadoop@djt002 sqoopRunCreate]$ pwd/usr/local/sqoop/sqoopRunCreate

[hadoop@djt002 sqoopRunCreate]$

比如,以后我就在这个目录下运行操作sqoop,/usr/local/sqoop/sqoopRunCreate。

Sqoop Import 应用场景——密码访问

(1)明码访问

7630d387cf43b2c9cdb30ecb5f066a85.png

[hadoop@djt002 sqoopRunCreate]$ sqoop list-databases \>--connect jdbc:mysql://192.168.80.200/ \

>--username hive \> --password hive

c2848b2bf111ab583ec40002810ed1d1.png

(2)交互式密码访问

8a8a96fcd983305499ea59496fdc2c41.png

[hadoop@djt002 sqoopRunCreate]$ sqoop list-databases \> --connect jdbc:mysql://192.168.80.200/ \

> --username hive \> -P

Enter password: (输入hive)

(3)文件授权密码访问

因为,官网上是这么给的,在家目录,且需赋予400权限。所以

876cda3b8ec7f44d9c63d5bab225ed67.png

c56f90d82f173b2107c94c88e01328b7.png

[hadoop@djt002 ~]$ pwd/home/hadoop

[hadoop@djt002~]$echo -n "hive" >.password

[hadoop@djt002~]$ ls -a

. .bash_history .cache djt flume .gnote .gvfs .local .nautilus .pulse Videos .xsession-errors

.. .bash_logout .config Documents .gconf .gnupg .hivehistory .mozilla .password .pulse-cookie .vim .xsession-errors.old

.abrt .bash_profile .dbus Downloads .gconfd .gstreamer-0.10.ICEauthority Music Pictures .ssh .viminfo

anagram.jar .bashrc Desktop .esd_auth .gnome2 .gtk-bookmarks .imsettings.log .mysql_history Public Templates .Xauthority

[hadoop@djt002~]$ more .password

hive

[hadoop@djt002~]$

2634a155b28cf0730ff841b72fcc4b87.png

[hadoop@djt002 ~]$ chmod 400 .password

d92815d3c6731dd27f2a0960de4d6531.png

[hadoop@djt002 sqoopRunCreate]$ sqoop list-databases \> --connect jdbc:mysql://192.168.80.200/ \

> --username hive \> --password-file /home/hadoop/.password

java.io.IOException: The provided password file /home/hadoop/.password does not exist!

1293be306e62ee2f929c135994c215db.png

e53d40fb57575caf08f213f393e14f32.png

5c164cc21ae8b9156e2a00b0a9930600.png

9e5c00509d46c204f05bf1430583a382.png

[hadoop@djt002 local]$ $HADOOP_HOME/bin/hadoop dfs -put /home/hadoop/.password /user/hadoop

[hadoop@djt002 local]$ $HADOOP_HOME/bin/hadoop dfs -chmod 400 /user/hadoop/.password

58dcea819df3cced6cf31c12fe3e9148.png

[hadoop@djt002 ~]$ rm .password

rm: remove write-protected regular file `.password'? y

6269e42be2ac7ca6d3ea56a8ac1ccccf.png

[hadoop@djt002 sqoopRunCreate]$ sqoop list-databases \> --connect jdbc:mysql://192.168.80.200/ \

> --username hive \> --password-file /user/hadoop/.password

Sqoop Import 应用场景——导入全表

(1)不指定目录 (则默认是在/user/hadoop/下)

5863d4fb6f1ee1144b8e5037ec06aaca.png

我这里啊,给大家尝试另一个软件。(为什么,要这样带大家使用,是为了你们的多适应和多自学能力)(别嫌麻烦!)

1b39959d8711f74b0fe97735adc0ca39.png

23df521171560d2b952c45c962e064af.png

4c3e1b7247e18303007cd17c93dc83b6.png

4c57cf03841e2d981b31451e418fa290.png

这里,我们选择在hive这个数据库里,创建新的表,命名为

2f415824369308a9a292ca15a5da3fd4.png

ea234c822ca5c70118e719aeb1e1ad1c.png

1f3877275d58760233967e17ffd5417f.png

如果,面对 SQLyog不能正常显示中文数据的情况:在SQLyog下输入SET character_set_results = gb2312(或 gbk),执行,重新启动SQLyog,显示应该也可以看到你所插入的中文数据了。

08826f3cb44a814f36821ac51b3792e7.png

注意,我的数据表是djt-user。我这里改名啦!

77bf336a88d613c88bfcac9af2dbb66e.png

[hadoop@djt002 sqoopRunCreate]$ sqoop import \> --connect jdbc:mysql://192.168.80.200/hive \

> --username hive \> --password-file /user/hadoop/.password \> --table djt-user

4301afd2fb5089266ffe8dfc742739e9.png

4c43183a2966a74203f74befa85f0e37.png

cfe9764b6d419ee6b50db18d98924f2e.png

464ff03082cd474f0cb94008b08e2cee.png

3b63357fb546673f3cbf88fba55002bd.png

1c7de43df84f5333381aba91991d4350.png

23b9e154898fd9f36acbc7c93cf1999a.png

e568e14db20146639f0f1d1df4d5eeea.png

9583651d64024c219b3ea490fe7a3db3.png

d4afc43fc52fcc48790ff9e591ad73bc.png

SET character_set_database=utf8;

SET character_set_server=utf8;

SHOW VARIABLES LIKE'character%';

f1c08c8a63f86362e8e53e14fd7397de.png

8ac8a89ba31b961a7be3b12828e06297.png

a74f036475e61bc1bc38b1abd7164216.png

c82a6349bf227672be1bd51579de0b8b.png

4879f173aedec9bcdb5f5bb61d39dda2.png

31a0b7d87f6ee30fa65a1cbe74c161bb.png

[hadoop@djt002 ~]$ $HADOOP_HOME/bin/hadoop fs -rmr /user/hadoop/djt-user

ced5d61456a11f6040793709a0a1bdd5.png

[hadoop@djt002 sqoopRunCreate]$ sqoop import --connect jdbc:mysql://192.168.80.200/hive --username hive --password-file /user/hadoop/.password --table djt-user

[hadoop@djt002 sqoopRunCreate]$ sqoop import --connect jdbc:mysql://192.168.80.200/hive --username hive --password-file /user/hadoop/.password --table djt-user

Warning: /usr/local/sqoop/sqoop-1.4.6/../hcatalog d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值