Hadoop数据分析平台实战——160Sqoop介绍

离线数据分析平台实战——160Sqoop介绍

Sqoop介绍

Apache Sqoop(SQL-to-Hadoop) 是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递,可以将一个关系型数据库中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
一般情况下,是将数据分析的结果导出到关系型数据库中,供其他部门使用。
Sqoop成立于2009年,刚开始是作为hadoop的一个模块而存在的,不过后来为了更好的进行部署使用,成为apache基金会组织的一个项目。
Sqoop专门为大数据而设计,可以通过分割数据集来启动多个mapreduce程序来处理每个数据块。

image.png

Sqoop安装步骤

Sqoop选择版本sqoop-1.4.5-cdh5.3.6,安装步骤如下:

  1. 下载:wget http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.5-cdh5.3.6.tar.gz
  2. 解压,sqoop根目录为:~/bigdater/sqoop-1.4.5-cdh5.3.6
  3. 复制相关的依赖包到lib文件夹中。
  4. 修改conf/sqoop-env.sh文件。
  5. 添加sqoop常量到用户环境变量中去。
  6. 测试是否安装成功。

Sqoop安装截图

image.png
image.png

Sqoop命令介绍

Sqoop总共有14个命令,包括:codegen,create-hive-table, eval, export, help, import, import-all-tables, import-mainframe, job, list-databases, list-tables, merge, metastore, version。其中常用命令为create-hive-table, export, import, help等。

sqoop命令格式:
sqoop <command> <generic-options> <command-options>,也就是说sqoop的所有命令有公用的参数列表,除此之外每个命令都有自己特定的执行参数。

help命令

help命令主要作用是查看sqoop提供的帮助信息,
命令格式如下:
sqoop help [<command>]。

help后面的参数为sqoop支持的命令名称。
如果不给定help后面的参数,那么表示显示sqoop命令的帮助信息,如果给定后面的参数,那么表示显示具体sqoop命令的帮助信息。
实例:

  1. sqoop help
  2. sqoop help list-tables

list-tables&list-databases命令

list-tables和list-databases两个命令都是针对关系型数据库(可以通过jdbc连接的数据库/数据仓库)而言的,我们一般可以通过该命令查看对应数据库中的table&database的列表。
基本命令格式为:
sqoop (list-tables|list-databases) --connect jdbc_url --username user_name --password user_pwd
实例:
sqoop list-tables --connect jdbc:mysql://hh:3306/hive --username hive --password hive
sqoop list-databases --connect jdbc:mysql://hh:3306/hive --username hive --password hive

create-hive-table命令

create-hive-table命令根据关系型数据库中的表创建hive表,不进行数据的copy,只进行表结构的copy。如果hive中存在要创建的表,默认情况下不进行任何操作。
命令格式:
sqoop create-hive-table --connect jdbc_url --username db_name --password db_pwd --table db_table_name --hive-table hive_table_name
实例:
sqoop create-hive-table --connect jdbc:mysql://hh:3306/test --username hive --password hive --table test --hive-table hivetest

import命令

import命令的主要作用是将关系型数据库中的数据导入到hdfs文件系统中(或者hbase/hive中),不管是导入到hbase还是导入到hive中,都需要先导入到hdfs中,然后再导入到最终的位置。
一般情况下,只会采用将关系型数据库的数据导入到hdfs或者hive中,不会导入到hbase中。
import命令导入到hdfs中默认采用','进行分割字段值,导入到hive中默认采用'\u0001'来进行分割字段值,如果有特殊的分割方式,我们可以通过参数指定。
import命令导入到hive的时候,会先在/user/${user.name}/文件夹下创建一个同关系型数据库表名的一个文件夹作为中转文件夹,如果该文件夹存在,则报错。
可以通过命令sqoop help import查看import命令的帮助信息。

import案例

案例1:将mysql表test中的数据导入hive的hivetest表,hive的hivetest表不存在。
案例2:在案例1的基础上,分别进行overwrite导入和into导入。
案例3:在案例2的基础上,通过增加mysql的test表数据,增量导入到hive表中。
案例4:将test表中的数据导出到使用','分割字段的hive表中。
案例5:将test表的数据导入到hdfs中。
案例6:在案例4的基础上,增量导出数据到hdfs中。

export命令

export命令的主要作用是将hdfs文件数据导入到关系型数据库中,不支持从hive和hbase中导出数据,但是由于hive的底层就是hdfs的一个基本文件,所以可以将hive导出数据转换为从hdfs导出数据。
导出数据的时候,默认字段分割方式是',',所以如果hive的字段分割不是',',那么就需要设计成对应格式的分割符号。
可以通过命令:sqoop help export查看export命令的详细参数使用方式&各个参数的含义。
注意:前提条件,关系型数据库中目的表已经存在。

export案例

案例1:将hdfs上的文件导出到关系型数据库test2表中。
案例2:将hive表数据导出到关系型数据库test2表中(使用insertOrUpdate方法导入)。

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

推荐阅读更多精彩内容

  • 1/列出mysql数据库中的所有数据库sqoop list-databases -connect jdbc:mys...
    时待吾阅读 2,729评论 1 5
  • Apache Sqoop 概述 使用Hadoop来分析和处理数据需要将数据加载到集群中并且将它和企业生产数据库中的...
    和心数据阅读 1,265评论 0 8
  • ApacheSqoop是用来实现结构型数据(如关系数据库)和Hadoop之间进行数据迁移的工具。 Apache S...
    逃之夭夭li阅读 953评论 1 1
  • 1.大数据协作框架: 大数据协作框架是Hadoop 2.x生态系统中几个辅助框架。最为常见的是以下几个: 数据转换...
    奉先阅读 3,033评论 0 2
  • 韩非的《扁鹊见蔡桓公》是我们中学学过的一篇文言文,告诉我们讳疾忌医的道理。但现实是我们懂得道理,但事情发生在自己身...
    自嗨如醉阅读 2,121评论 19 32