zoukankan      html  css  js  c++  java
  • Sqoop工具

    简介

    SQOOP是用于对数据进行导入导出的。
    (1)把MySQL、Oracle等数据库中的数据导入到HDFS、Hive、HBase中
    (2)把HDFS、Hive、HBase中的数据导出到MySQL、Oracle等数据库中

    安装sqoop

    1.解压sqoop

    tar  -zxvf  sqoop-1.4.3.bin_hadoop-1.0.0.tar.gz

    2.重命名

    mv  sqoop-1.4.3.bin_hadoop-1.0.0   sqoop

    3.设置环境变量

    vi  /etc/profile
    export SQOOP_HOME=/usr/local/sqoop

    将$SQOOP_HOME/bin 添加到 PATH 中

    source  /etc/profile

    完毕!

    把mysql数据导入到hdfs或者hive中

    我们主要使用的是sqoop脚本。
    注:因为要连接mysql 所以需要jdbc驱动

    把数据从mysql导入到hdfs(默认是/user/username)中:

    sqoop import  --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '	'
    --null-string  ‘**’ 

    表示对于null值使用**代替 默认使用NULL ‘- -’不能使用,专有字符

    Sqoop在导入时,使用4个MapReduce并行执行 ,可以指定一个如下:

    sqoop import --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '	'  -m 1

    hdfs不可以多次写入,解决办法:

    sqoop import --connect jdbc:mysql://hadoop:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '	'  -m 1  --append

    也可以导入到hive中,但前提是删除 /user/root/目录下内容:

    hadoop fs -rmr  /user/root/*

    因为在执行导入后,会再次在/user/root下生成 sqoop文件

    sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '	' -m 1 --append --hive-import

    导入增量:

    sqoop import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '	' -m 1 --append --hive-import --check-column  'TBL_ID'  --incremental append  --last-value 6

    避免每次麻烦输出很长的命令,创建job:

    sqoop job --create myjob -- import --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table TBLS --fields-terminated-by '	' -m 1 --append --hive-import --check-column  'TBL_ID'  --incremental append  --last-value 6

    列出创建的job:

    sqoop job --list

    执行创建的job:

    sqoop job --exec myjob (会提示让你输出mysql密码)

    为了保存mysql密码,让其自动运行,要修改sqoop的配置文件sqoop-site.xml,让下面的内容生效:

    <property>
        <name>sqoop.metastore.client.record.password</name>
        <value>true</value>
        <description>If true, allow saved passwords in the metastore.
        </description>
      </property>
    

    修改后,下次执行之前,要先删除以前未修改配置文件的的myjob:

    sqoop job --delete myjob

    把数据从hdfs导出到mysql中

    导数据得事先在mysql中存在表
    导出数据必须按目录导出,不能按文件导出

    导出数据

    sqoop export --connect jdbc:mysql://hadoop:3306/hive --username root --password admin --table ids  --fields-terminated-by '	'  --export-dir  '/ids'

    导出可以重复进行,多次插入数据进入mysql中

    注意:sqoop的导入导出事物是以Mapper任务为单位。

    sqoop官网:http://sqoop.apache.org/

  • 相关阅读:
    [转]用汇编实现原子操作
    贪心算法练习集
    链表练习题集
    STL测试3)优先级队列实现二叉堆
    STL测试2)计算器简单实现
    STL测试
    Java学习笔记(三)
    【JAVA】学习笔记(2)
    【Java】学习笔记(1)
    【机器学习】异常检测算法(I)
  • 原文地址:https://www.cnblogs.com/bigdata1024/p/8387442.html
Copyright © 2011-2022 走看看