zoukankan      html  css  js  c++  java
  • sqoop安装+将mysql数据导入到hdfs、hive、hbase

    一、Sqoop的简介


    SQL To Hadop,目的是完成关系型数据库导入导出到Hadoop!

    Sqoop的原理是讲命令翻译为MR执行,MR没有Reduce阶段,只有Map阶段!


    二、 Sqoop的安装

    1.配置环境
    可以在/etc/profile中配置,导出为全局变量

    sqoop-env.sh

    配置 HADOOP_HOME,HIVE_HOME,HBASE_HOME,ZOOKEEPER_HOME

    2.将连接mysql的驱动,拷贝到sqoop的lib目录

    3.测试
    bin/sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password 123456

    三、import 


    1. import 从 RDMS 讲数据迁移到 HDFS

    2. 导入到HDFS
    // 代表在shell窗口中换行
    bin/sqoop import
    // 连接的url
    --connect jdbc:mysql://hadoop102:3306/mydb
    // 用户名
    --username root
    // 密码
    --password 123456
    // 要导哪个表的数据
    --table staff
    // 将数据导入到hdfs的哪个路径
    --target-dir /company
    // 如果目标目录存在就删除
    --delete-target-dir
    // 导入到hdfs上时,mysql中的字段使用 作为分隔符
    --fields-terminated-by " "
    // 设置几个MapTask来运行
    --num-mappers 2
    // 基于ID列,将数据切分为2片,只有在--num-mappers>1时才需要指定,选的列最好不要有null值,否则null
    // 是无法被导入的!尽量选取主键列,数字列
    --split-by id
    // 只导入id和name 列
    --columns id,name
    // 只导入复合过滤条件的行
    --where 'id >= 10 and id <= 20'
    // 执行查询的SQL,讲查询的数据进行导入,如果使用了--query,不加再用--table,--where,--columns
    // 只要使用--query ,必须添加$CONDITONS,这个条件会被Sqoop自动替换为一些表达式
    --query "SQL"


    -----------------------
    bin/sqoop import
    --connect jdbc:mysql://hadoop102:3306/mydb
    --username root
    --password 123456
    --table t_emp
    --target-dir /t_emp
    --delete-target-dir
    --fields-terminated-by " "
    --num-mappers 2
    --split-by id
    --columns age,name
    --where 'id >= 5 and id <= 10'

    ---------------------------
    bin/sqoop import
    --connect jdbc:mysql://hadoop102:3306/mydb
    --username root
    --password 123456
    --query "select * from t_emp where $CONDITIONS and id >=2"
    --target-dir /t_emp
    --delete-target-dir
    --fields-terminated-by " "
    --num-mappers 2
    --split-by id

    3.导入到Hive
    Sqoop导入到hive,先讲数据导入到HDFS,再讲HDFS的数据,load到hive表中!

    $ bin/sqoop import
    --connect jdbc:mysql://hadoop102:3306/company
    --username root
    --password 123456
    --table staff
    --num-mappers 1
    //导入到hive
    --hive-import
    //导入到hive表中字段的分隔符
    --fields-terminated-by " "
    // 是否以insert overwrite方式覆盖导入数据
    --hive-overwrite
    // 要导入的hive表的名称,会自动帮助我们建表。建议还是在hive中手动建表,需要注意和mysql表的数据类型匹配
    --hive-table staff_hive

    -----------------------------
    bin/sqoop import
    --connect jdbc:mysql://hadoop102:3306/mydb
    --username root
    --password 123456
    --table t_emp
    --num-mappers 1
    --hive-import
    --fields-terminated-by " "
    --hive-overwrite
    --hive-table t_emp

    4.导入到hbase
    目前使用的sqoop1.4.6对应的是低版本的hbase,目前的1.3.0的hbase版本有点高!
    在执行导入时,sqoop是可以帮我们自动建表,在使用1.3.0hbase时,建表会失败!
    建议手动建表!

    bin/sqoop import
    --connect jdbc:mysql://hadoop102:3306/mydb
    --username root
    --password 123456
    --table t_emp
    //如果表不存在,hbase自动建表
    --hbase-create-table
    // 导入的表名
    --hbase-table "t_emp"
    // mysql的哪一列作为rowkey
    --hbase-row-key "id"
    //导入的列族名
    --column-family "info"
    --num-mappers 1
    --split-by id

    ---------------------------

    bin/sqoop import
    --connect jdbc:mysql://hadoop102:3306/mydb
    --username root
    --password 123456
    --table t_emp
    --hbase-create-table
    --hbase-table "t_emp"
    --hbase-row-key "id"
    --column-family "info"
    --num-mappers 1




  • 相关阅读:
    mysql代码实现hive中的rank()排序方法,获得top3中的最小值
    MySQL--Hive中字段数据类型对比
    使用shell脚本连接mysql shell脚本执行mysql语句
    WPS中查看超链接后返回超链接位置
    shell脚本中常用的命令
    Lamda一行代码实现"36选7"随机自动选号
    创建Visual studio项目模板 vstemplate关键点纪要
    网络传输及数据解析
    动画
    触摸事件与手势识别
  • 原文地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/13961131.html
Copyright © 2011-2022 走看看