sqoop实践

What

将关系数据库 oracle ,mysql,ostgresql 和hadoop 数据进行转换的工具

版本

  • sqoop1 :1.4.x 使用最多
  • sqoop2: 1.99.x 同类产品 DataX 阿里顶级数据交换工具

Where

http://sqoop.apache.org

Why

How

  • 下载

    • `cd /opt/soft/``
    • wget http://mirrors.hust.edu.cn/apache/sqoop/1.4.6/sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
    • tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
    • mv /opt/soft/sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop-1.4.6
  • 修改配置文件 vi $SQOOP_HOME/bin/configure-sqoop 去掉不相干的环境变量检查 cd conf mv sqoop-evn-template.sh sqoop-env.sh vim sqoop-env.sh

  • 修改环境变量 vi ~/.base_profile

    1
    2
    export SQOOP_HOME=/opt/soft/sqoop-1.4.6
    PATH=$PATH:$SQOOP_HOME/bin

  • 添加数据库驱动包 cp mysql-connecter-jaa-5.1.10.jar $SQOOP_HOME/lib/

  • 测试 sqoop version

    1
    2
    sqoop-list-databases -connect jdbc:mysql://sj-node1:3306/ -username root -password 123456
    sqoop-list-tables -connect jdbc:mysql://sj-node1:3306/mysql -username root -password 123456



启动hdfs集群,和yarn集群

导入

  • 导入hdfs

    1
    sqoop import --connect jdbc:mysql://sj-node1:3306/test --username root --password 123456 --table testsqoop -m1 --target-dir hdfs://appcity/sqooptest

  • 导入hive

    1
    2
    3
    sqoop import --connect jdbc:mysql://sj-node1:3306/test \
    --username root --password 123456 \
    --table testsqoop -m 1 --hive-import

  • 导入hbase 启动hbase start-hbase.sh

    1
    2
    3
    4
    sqoop import --connect jdbc:mysql://sj-node1:3306/test \
    --username root --password 123456 --table testsqoop -m1\
    --hbase-table testsqoop --column-family cf1 --hbase-row-key name\
    --hbase-create-table

    在sqoop自动创建了表testsqoop

导出

  • hdfs导出mysql,hdfs上文件如果默认以逗号,分割就无需指定分隔符

    1
    2
    sqoop export --connect jdbc:mysql://sj-node1:3306/test \
    --username root --password 123456 --table testsqoop --export-dir /sqooptest/part-m-00000

  • hive导出mysql

     sqoop export --connect jdbc:mysql://sj-node1:3306/test \
     --username root --password 123456 --table testsqoop \
     --export-dir /user/hive_local/warehouse/testsqoop/part-m-00000 \
      --input-fields-terminated-by '\001'
    

问题

No columns to generate for ClassWriter问题