利用sqoop实现mysql与Hdfs间的数据的导入导出

安装配置sqoop

原料:

1.sqoop tar 包

2.mysql jar包[最好用高版本的,我用的是5.1.32版]

步骤1

解压tar包,指定安装路径。

2配置环境变量,在/etc/profile文件里指定家目录和path目录。

3.将mysql jar 驱动包放在sqoop安装目录的lib目录下。

4测试   sqoop list-databases jdbc:mysql://master:3306/sqoopDB   --username sqoop -P

5输入密码。如果能显示所有数据库,则证明sqoop安装配置成功,并且与mysql建立链接,剩下要做的就是利用sqoop实现数据的导入导出。


qoop与MySQL 建立连接

创建数据源

接下来便是在Linux上的MySQL中创建一个数据库,我这里创建的是sqoopDB数据库,并创建一个sqoop用户并授予权限。

create user ‘uername’ indentified by'password' 

grant all privileges on sqoopDB.* to userame@ % indentified by 'password'

再然后对权限的刷新

flush privileges;


接着在这个sqoopDB数据库创建表 并添加数据。添加完成后 使用sqoop将MySQL中数据上传到hdfs 或者是hive 中去。

sqoop导入数据命令

上传到hdfs命令: sqoop import --connect jdbc:mysql://mysql.server.ip:3306/sqoopDB --username 'username' -P --table 'tablename'  --target-dir /user/sqoop

要注意的是hdfs中的user/sqoop中的sqoop不能存在,要是存在就无法自动创建 就会报错。


上传到hdfs中的数据

上传到hive 命令:sqoop import --connect jdbc:mysql://mysql.server.ip:3306/sqoopDB

--table 'tablename'  --username 'username' -P   --hive-import -m 1

--hive-import-m 1  是指定有一个map任务。


上传到hive中的数据



如果源数据发生改变了怎么办,比如发生insert update操作。这时候需要增量导入数据操作

目前sqoop支持两种增量导入,分别为append和lastmodified

append主要针对insert操作

lastmoified主要针对update操作

实现数据导入hive仓库分三步骤

1.将相应的表数据导入到hdfs中

2.把表数据类型映射为hive数据类型。然后根据表结构在hive上执行create table 操作创建hive表。

3.在hive中执行load data input 语句将hdfs上的表数据移动到hive数据仓库目录【该目录位置有定义在文件hive_home/conf/hive/hive_site.xml中的属性${hive.metastore.warehose.dir}设置】

sqoop-import-all -tables 操作

这个命令是把MySQL中的某一个数据库中的所有的表数据导入到hdfs中,每一个表数据分别位于hdfs上的一个单独目录下。

执行该命令操作必须满足三个条件。

1.要有主键,但主键不是组合键。

2,不能有任何子句。

3,所有表中的所有列都将被导入到hdfs上不能出现列数据丢失,否则不能导入。


现在只有一个表


又添加2个表

此时需要把添加的两个表同时导入到hdfs 上

命令操作:sqoop import-all-tables --connect jdbc:mysql://192.168.145.100:3306/sqoopDB --username sqoop -P


数据的导出


sqoop -export 与sqoop-import 操作功能相反的。 即 吧HDFS HIVE HBase 上的数据导出数据库中,条件是数据库中的表必须存在,表结构也要相同。sqoop-export 支持三种模式,insert update call  执行导出操作时,sqoop将HDFS上输入文件中的数据根据用户指定的分隔符解析成一系列的记录和记录字段,sqoop export 操作默认将这些记录以insert方式插入到指定的数据库目标表中,用户可以指定update方式替换数据库系统中已经存在的记录,或指定call模式调用数据库系统存储过程。


数据导出

sqoop 有很多命令,也有很多组合选项,一时半会记不来,也记不住,需要积累的,只要知道怎么操作,需要达成什么效果,到时候在上网搜命令。

数据导出结果表

最后有两个命令要注意

1 sqoop list-databases 这个在前面在我测试时候用到了,它是用于列举出指定数据库服务器中的数据库模式。

2.sqoop list-tables 用于列决出指定数据库服务器中的数据表。

eg:  sqoop list -tables --connect jdbc:mysql://192.168.145.100/sqoopDB --username sqoop -P


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容