sqoop 订阅
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。 展开全文
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache项目。
信息
作    用
处理大数据
起始时间
2009年
外文名
sqoop
发    音
skup
sqoop特征
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。对于某些NoSQL数据库它也提供了连接器。Sqoop,类似于其他ETL工具,使用元数据模型来判断数据类型并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。
收起全文
精华内容
下载资源
问答
  • Sqoop

    2018-09-05 20:17:58
    Sqoop


    一、简介

    Sqoop是一种在Hadoop与关系型数据库或主机之间传输数据的工具。一般来说,外界数据加载到HDFS中,有如下几种方法:

    • 数据源为日志,一般使用Flume + Kafka;
    • 数据源为RDBMS,一般使用Sqoop;
    • 数据源为文件,一般用kettle直接加载;

    Sqoop支持的数据源:MySQL/ SQL Server/ Oracle/ ProtgreSQL/ HDFS/ Hive/ HBase;从使用上来看,Sqoop基本不需要代码开发,用命令行就可以,可以说使用难度较小。

    Reference:


    二、命令

    Sqoop是一系列工具的集合,以下总结相关工具的具体调用命令。

    sqoop version  # 显示版本信息
    sqoop help  # 显示帮助信息
    sqoop help <tool_name>  # 显示具体命令的帮助信息
    sqoop help import  # eg:显示import工具的帮助信息
    sqoop import  # RDBMS -> HDFS,用的最多的命令
    sqoop export  # HDFS -> RDBMS,用的最多的命令
    sqoop codegen  # 获取表的数据,并打jar包
    sqoop create-hive-table  # 创建Hive表
    sqoop eval  # 查看SQL执行结果
    sqoop import-all-tables  # 将数据库中所有数据导入HDFS
    sqoop job  # 生成一个Sqoop任务
    sqoop list-databases  # 列出所有数据库名
    sqoop list-tables  # 列出某个库内部的所有表名
    sqoop merge  # 将HDFS不同目录下的数据,合并到一个目录中
    sqoop metastore  # 记录Sqoop任务的元数据信息
    
    # 显示MySQL地址下所有库名
    sqoop list-databases \
    --connect jdbc:mysql://<host>:<port> \
    --username <username> \
    --password <password>
    
    # 显示MySQL地址下,某数据库所有表名
    sqoop list-tables \
    --connect jdbc:mysql://<host>:<port>/<table_name> \
    --username <username> \
    --password <password>
    

    三、参数

    1. 公用参数

    --connect  # 连接RDBMS的url
    --connection-manager  # 制定要使用的管理类
    --driver  # JDBC的驱动类
    --help  # 打印帮助信息
    --username  # 连接数据库的用户名
    --password  # 连接数据库的密码
    --verbose  # 在控制台打印出详细信息
    --direct  # 使用直连的方式,加快传输速度;但目前仅对MySQL/ PostgreSQL有效,分别使用直连的MySQL_dump/ pg_dump
    

    2. sqoop import

    RDBMS -> HDFS;其中,RDBMS中的目标表必须已经存在

    --fields-terminated-by <char>  # 指定Hive表中字段的分隔符
    --lines-terminated-by <char>  # 指定Hive表中行的分隔符
    
    # demo(全量导入Hive,实测有效);当然也有其余的配置,如columns/ call等,这里略过不表
    sqoop import \
    --connect jdbc:sqlserver://172.16.100.241:1433 \
    --table PP_JD_RPT.dbo.rpt_24028 \
    --username <username> \
    --password <password> \
    --driver com.microsoft.sqlserver.jdbc.SQLServerDriver \
    --direct \
    --num-mappers 1 \
    --hive-import \  # 指定导入Hive
    --create-hive-table \  # 创建Hive表,此前Hive表不存在
    --delete-target-dir \  # RDBMS数据加载到HDFS之后,删除
    --hive-database rpt_jd \  # hive库名
    --hive-table rpt_24028_1029  # hive表名
    
    # demo(增量导入到Hive)
    sqoop import \
    --connect jdbc:sqlserver://172.16.100.241:1433 \
    --table PP_JD_RPT.dbo.rpt_24028 \
    --username <username> \
    --password <password> \
    --driver com.microsoft.sqlserver.jdbc.SQLServerDriver \
    --direct \
    --num-mappers 1 \
    --target-dir hdfs://nameservice1/user/hive/warehouse/rpt_jd.db/rpt_24028 \
    --incremental append \
    --check-column timest \
    --last-value '2019-01-01'
    
    # demo(导出数据到HBase)
    sqoop import \
    --connect jdbc:mysql://hadoop1:3306/mysql \
    --username root \
    --password root \
    --table help_keyword \
    --hbase-table new_help_keyword \
    --column-family person \
    --hbase-row-key help_keyword_id
    
    # 导出全部表
    sqoop import-all-tables --connect jdbc:mysql://<host>/<db_name>
    

    3. sqoop export

    HDFS -> RDBMS;其中,RDBMS的表必须已存在

    --input-fields-terminated-by <char>  # 字段之前的分隔符
    --input-lines-terminated-by <char>  # 行之间的分隔符
    
    # demo(全量导入,实测有效);当然也有其余的配置,如columns/ call等,这里略过不表
    sqoop export \
    --connect jdbc:sqlserver://172.16.100.241:1433 \  # SQL Server地址、端口
    --table PP_JD_RPT.dbo.rpt_24028_1029_copy \  # SQL Server库名、表名
    --username <username> \  # 登录SQL Server的用户名,这里隐去
    --password <password> \  # 登录SQL Server的密码,这里隐去
    --export-dir hdfs://nameservice1/user/hive/warehouse/rpt_jd.db/rpt_24028 \  # Hive表在HDFS中的路径,对于Hive可用 desc formatted <hive_table>查看
    --driver com.microsoft.sqlserver.jdbc.SQLServerDriver \  # 驱动
    -m 32 \
    -Dorg.apache.sqoop.export.text.dump_data_on_error=true \
    --direct \
    --batch \
    --input-null-string '\\N' \
    --input-null-non-string '\\N' \
    --fields-terminated-by '\001'
    

    4. Hive参数

    --create-hive-table  # 
    --hive-table  # 后面接创建表的名字,默认使用MySQL的名称
    --table  # 指定RDBMS的表名
    --hive-overwrite  # 覆盖Hive原表中的数据
    --hive-import  # 从关系型数据库导入数据到Hive
    --hive-partition-value <v>  # 导入Hive表的某个分区
    

    sqoop validation

    通过比较行数,以验证源表和目标表的数据导出过程的有效性。一般作为sqoop importsqoop export的配置项。

    sqoop create-hive-table

    在Hive中创建一张和RDBMS相同的表

    sqoop create-hive-table \
    --connect jdbc:mysql://<host>:<port>/<db_name> \
    --username <username> \
    --password <password> \
    --table <mysql_table_name> \
    --hive-table <hive_table_name>
    

    源码阅读

    展开全文
  • sqoop

    2019-12-02 12:05:09
    1.sqoop-1.4.7.tar.gz下载解压 2.拷贝mysql的jdbc驱动包mysql-connector-java-5.1.31-bin.jar到sqoop/lib目录下。 3.复制sqoop/conf/sqoop-env-template.sh为sqoop-env.sh并添加配置 # Set Hadoop-specific ...

    1.sqoop-1.4.7.tar.gz下载解压
    2.拷贝mysql的jdbc驱动包mysql-connector-java-5.1.31-bin.jar到sqoop/lib目录下。
    3.复制sqoop/conf/sqoop-env-template.sh为sqoop-env.sh并添加配置

    
    # Set Hadoop-specific environment variables here.
    
    #Set path to where bin/hadoop is available
     export HADOOP_COMMON_HOME=/root/apps/hadoop-2.8.1
    
    #Set path to where hadoop-*-core.jar is available
     export HADOOP_MAPRED_HOME=/root/apps/hadoop-2.8.1
    
    #set the path to where bin/hbase is available
    #export HBASE_HOME=
    
    #Set the path to where bin/hive is available
     export HIVE_HOME=/root/apps/hive-1.2.1
    
    #Set the path for where zookeper config dir is
     export ZOOCFGDIR=/root/apps/zookeeper-3.4.6/conf
    

    4.配置configure-sqoop,注释掉对于HBase和ZooKeeper的检查

    # Check: If we can't find our dependencies, give up here.
    if [ ! -d "${HADOOP_HOME}" ]; then
      echo "Error: $HADOOP_HOME does not exist!"
      echo 'Please set $HADOOP_HOME to the root of your Hadoop installation.'
      exit 1
    fi
    #if [ ! -d "${HBASE_HOME}" ]; then
    #  echo "Error: $HBASE_HOME does not exist!"
    #  echo 'Please set $HBASE_HOME to the root of your HBase installation.'
    #  exit 1
    #fi
    #if [ ! -d "${ZOOKEEPER_HOME}" ]; then
    #  echo "Error: $ZOOKEEPER_HOME does not exist!"
    #  echo 'Please set $ZOOKEEPER_HOME to the root of your ZooKeeper installation.'
    #  exit 1
    #fi
    

    5.配置环境变量

    export JAVA_HOME=/root/apps/jdk1.8.0_201
    export HADOOP_HOME=/root/apps/hadoop-2.8.1
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export PATH=$FLUME_HOME/bin:$PATH
    #hive
    export HIVE_HOME=/root/apps/hive-1.2.1
    export PATH=$PATH:$HIVE_HOME/bin
    export KAFKA_HOME=/root/apps/kafka_2.12-2.2.0
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$KAFKA_HOME/bin
    export STORM_HOME=/root/storm-1.2.2
    export PATH=$PATH:$STORM_HOME/bin
    #sqoop
    export SQOOP_HOME=/root/apps/sqoop-1.4.7
    export PATH=$PATH:$SQOOP_HOME/bin
    

    6.测试
    sqoop version
    7.成功
    有个坑就是错误: 找不到或无法加载主类 org.apache.sqoop.Sqoop
    解决:把sqoop目录下的sqoop-1.4.6.jar拷贝到hadoop/share/hadoop/mapreduce/的lib目
    录下解决
    sqoop-1.4.6.jar是在sqoop-1.4.6.bin__hadoop-2.0.4-alpha中取出来的
    下载地址:http://archive.apache.org/dist/sqoop/1.4.6/

    19/12/02 10:59:07 INFO sqoop.Sqoop: Running Sqoop version: 1.4.6
    Sqoop 1.4.6
    git commit id c0c5a81723759fa575844a0a1eae8f510fa32c25
    Compiled by root on Mon Apr 27 14:38:36 CST 2015
    

    二sqoop测试
    数据库列表:
    ./sqoop list-databases --connect jdbc:mysql://hdp-1:3306/ --username root --password 1
    表列表:
    ./sqoop list-tables
    –connect jdbc:mysql://hdp-1:3306/mysql
    –username root
    –password 1

    ./sqoop create-hive-table
    –connect jdbc:mysql://hdp-1:3306/mysql
    –username root
    –password 1
    –table help_keyword
    –hive-table hk

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,089
精华内容 7,235
关键字:

sqoop