zoukankan      html  css  js  c++  java
  • 大数据实践(九)--sqoop安装及基本操作

    前置工具及环境

    Hadoop 2.7.3

    sqoop 1.4.6

    mysql 8

    mysql-connector-java-8.0.20.jar

    java-json.jar

    一、简介

    Sqoop 是一个常用的数据迁移工具,主要用于在不同存储系统之间实现数据的导入与导出:

    • 导入数据:从 MySQL,Oracle 等关系型数据库中导入数据到 HDFS、Hive、HBase 等分布式文件存储系统中;
    • 导出数据:从 分布式文件系统中导出数据到关系数据库中。

    其原理是将执行命令转化成 MapReduce 作业来实现数据的迁移。

    二、安装

    1、解压、配置环境变量

    tar -zxvf  sqoop-1.4.6.tar.gz
    

    其他步骤略去。

    2、修改环境文件

    进入安装目录的conf下,拷贝模板

    cp sqoop-env-template.sh sqoop-env.sh
    

    在文件中修改hadoop的变量。

    sqoop使用mapReduce处理数据,所以以下两个变量必须修改。

    export HADOOP_COMMON_HOME=/usr/local/hadoop
    
    #Set path to where hadoop-*-core.jar is available
    export HADOOP_MAPRED_HOME=/usr/local/hadoop
    

    3、加入jar包

    在lib目录下加入Mysql和处理json的jar包。

    mysql-connector-java-8.0.20.jar 
    
    #  处理json
    java-json.jar 
    

    查看版本

    $ sqoop version
    Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
    Please set $HCAT_HOME to the root of your HCatalog installation.
    Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail.
    Please set $ACCUMULO_HOME to the root of your Accumulo installation.
    20/11/12 14:34:17 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
    Sqoop 1.4.6
    git commit id 
    Compiled by jenkins on Tue Aug 23 00:56:12 PDT 2016
    
    

    三、数据转换

    1、查看mysql

    没有mysql驱动会报错

    #链接数据库,查看库
    sqoop list-databases 
    --connect jdbc:mysql://ip:3306/ 
    --username root 
    --password root
    
    
    #连接数据库,查看表
    sqoop list-tables 
    --connect jdbc:mysql://ip:3306/mysql  
    --username root 
    --password root 
    

    2、mysql-hdfs

    将mysql数据导入hdfs

    sqoop import 
    --connect jdbc:mysql://ip:3306/mysql      
    --username root 
    --password root 
    --table help_keyword            # 待导入的表
    --delete-target-dir             # 目标目录存在则先删除
    --target-dir /sqoop             # 导入的目标目录
    --fields-terminated-by '	'     # 指定导出数据的分隔符
    -m 3    
    

    将hdfs数据导入mysql中

    #mysql中需要预先建表
    CREATE TABLE help_keyword_from_hdfs LIKE help_keyword ;
    
    sqoop export  
        --connect jdbc:mysql://ip:3306/mysql 
        --username root 
        --password root 
        --table help_keyword_from_hdfs         # 导出数据存储在 MySQL 的 help_keyword_from_hdf 的表中
        --export-dir /sqoop  
        --input-fields-terminated-by '	'
        --m 3 
    

    3、sqoop转换hbase、hive、mysql等

    导入导出过程中可能会出现以下冲突:

    主键错误
    乱码
    
  • 相关阅读:
    python模块--time模块
    python模块--如何相互调用自己写的模块
    Animating Views Using Scenes and Transitions
    fragment 切换
    android textview 设置text 字体
    android intent 5.1
    android EditView ime
    animation of android (4)
    animation of android (3)
    animation of android (2)
  • 原文地址:https://www.cnblogs.com/cgl-dong/p/14034914.html
Copyright © 2011-2022 走看看