Sqoop简介安装及使用

mac2024-04-08  38

Sqoop简介 sqoop 是 apache 旗下一款“Hadoop 和关系数据库服务器之间传送数据”的工具。 核心的功能有两个: 导入、迁入 导出、迁出 导入数据:MySQL,Oracle 导入数据到 Hadoop 的 HDFS、HIVE、HBASE 等数据存储系统 导出数据:从 Hadoop 的文件系统中导出数据到关系数据库 mysql 等 Sqoop 的本质还是一个命令行工具,和 HDFS,Hive 相比,并没有什么高深的理论。 sqoop: 工具:本质就是迁移数据, 迁移的方式:就是把sqoop的迁移命令转换成MR程序 hive 工具,本质就是执行计算,依赖于HDFS存储数据,把SQL转换成MR程序 将导入或导出命令翻译成 MapReduce 程序来实现 在翻译出的 MapReduce 中主要是对 InputFormat 和 OutputFormat 进行定制

Sqoop安装 一、安装部署 (1)、下载地址:http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/ 解压到/opt/cdh5/sqoop (2)、拷贝MySQL的jdbc驱动包mysql-connector-Java-5.1.31-bin.jar到sqoop/lib目录下。 (3)、配置环境变量 #sqoop

export SQOOP_HOME=/opt/cdh5/sqoop export PATH=$PATH:$SQOOP_HOME/bin

(4)、复制sqoop/conf/sqoop-env-template.sh为sqoop-env.sh 添加相关的配置

#Setpath to where bin/Hadoop is available exportHADOOP_COMMON_HOME=/opt/cdh5/hadoop #Setpath to where hadoop-*-core.jar isavailable exportHADOOP_MAPRED_HOME=/opt/cdh5/hadoop #setthe path to where bin/Hbase isavailable exportHBASE_HOME=/opt/cdh5/hbase #Setthe path to where bin/Hive is available exportHIVE_HOME= /opt/cdh5/hive #Setthe path for where zookeper config diris exportZOOCFGDIR= /opt/cdh5/zookeeper

(5)、测试Sqoop   sqoop version 测试之前先测试mysql能不能远程连接

Sqoop语法

导入hdfs

Sqoop import --connect jdbc:mysql://192.168.104.200:3306/database (连接数据库的IP地址 、指定数据库) --username root (mysql用户名) --password root (mysql密码) --table user (表名) --columns “id,name”(指定需要查找的列) --where “id >3” (条件) --fields-terminated-by “\t” (列间隔) --split-by id (以哪个字段分割) --query ‘select id,name from user where $CONDITIONS and id >3’ (也可直接写查询语句,写条件语句时必须写$CONDITIONS ,查询语句外必须用单引号,否则得在$之前加转义字符 \) --delete-target-dir (删除掉存在的路径) --target-dir /hdfs (写入hdfs的路径) -m 1 (开启几个maptask任务)

增量导入

Sqoop import --connect jdbc:mysql://192.168.104.200:3306/database (连接数据库的IP地址 、指定数据库) --username root (mysql用户名) --password root (mysql密码) --table user --incremental append (追加) --check-column order_date (根据哪一列) --last-value ‘2018-11-12’ (大于这个日期的追加) --target-dir /hdfs --m 1

导入hive 先将hive-common-2.3.2.jar 导入sqoop的lib下

Sqoop import --connect jdbc:mysql://192.168.104.200:3306/database (连接数据库的IP地址 、指定数据库) --username root (mysql用户名) --password root (mysql密码) --table user --hive-import (指定导入hive) --fields-terminated-by “\t” --lines-terminated-by “\n” --hive-overwrite --create-hive-table --delete-target-dir --hive-database (指定导入hive的哪个数据库) --hive-table (默认和mysql的表名一样) --target-dir /hdfs --check-column uid --last-value 2 -m 1

导出export

Sqoop export --connect ‘jdbc:mysql://192.168.104.200:3306/database?useUnicode=true&characterEncoding=utf-8’ (连接数据库的IP地址 、指定数据库、指定编码格式) --username root (mysql用户名) --password root (mysql密码) --export-dir /hive/warehouse/userinfo/part-m-00000 (指定导出的hdfs路径) --table userinfo -input-fields-terminated-by “,”(指定导出的字段间隔,必须是逗号)

因为sqoop1不支持导入hbse,可以先导入hdfs,然后执行批量导入的命令导入hbase

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=, -Dimporttsv.columns="HBASE_ROW_KEY,info:name,order:no,order:date" customer /input/hbase/hbase_import_data.csv
最新回复(0)