Sqoop介绍

Sqoop介绍,第1张

Sqoop介绍 定义

Sqoop是一个ETL工具,能够在HDFS与传统关系型数据直接传输数据。可以使用Sqoop将MySQL或Oracle等RDBMS导入Hadoop分布式文件系统HDFS中,在Hadoop中处理数据,然后将数据导回RDMBS。

sqoop import
$ sqoop help import
用法:sqoop import [GENERIC-ARGS] [TOOL-ARGS]
常用参数:-- 
   connect  指定JDBC 连接字符串
   --connect-manager  指定要使用的连接管理器类
   - -driver  手动指定要使用的 JDBC 驱动程序类
   --hadoop-mapred-home  Override $HADOOP_MAPRED_HOME 
   --help 打印使用说明
   --password-file 设置包含身份验证密码的文件的路径
   -P 从console 
   --password  设置认证密码
   --username  设置认证用户名
   --verbose 在工作时打印更多信息
   --hadoop-home  已弃用。覆盖 $HADOOP_HOME 

[...]

通用 Hadoop 命令行参数:(
必须在任何特定于工具的参数之前)
支持的通用选项是
-conf  指定应用程序配置文件
-D  使用给定的值property 
-fs  指定
名称节点 -jt  指定作业跟踪器
-files <逗号分隔的文件列表> 指定要复制到映射减少集群的逗号分隔文件
-libjars <逗号分隔的 jar 列表>
-archives <逗号分隔的存档列表> 指定要在计算机上取消存档的逗号分隔存档。

一般的命令行语法是
bin/hadoop command [genericOptions] [commandOptions]
导入常用参数 参数描述–connect 指定 JDBC 连接字符串–connection-manager 指定要使用的连接管理器类–driver 手动指定要使用的 JDBC 驱动程序类–hadoop-mapred-home 覆盖 $HADOOP_MAPRED_HOME–help打印使用说明–password-file为包含认证密码的文件设置路径-P从控制台读取密码–password 设置认证密码–username 设置认证用户名–verbose工作时打印更多信息–connection-param-file 提供连接参数的可选属性文件–relaxed-isolation将连接事务隔离设置为映射器未提交的读取。 导入控制参数 参数描述–append将数据附加到 HDFS 中的现有数据集–as-avrodatafile将数据导入 Avro 数据文件–as-sequencefile将数据导入到 SequenceFiles–as-textfile以纯文本形式导入数据(默认)–as-parquetfile将数据导入 Parquet 文件–boundary-query 用于创建拆分的边界查询–columns 要从表中导入的列–delete-target-dir删除导入目标目录(如果存在)–direct如果数据库存在,则使用直接连接器–fetch-size 一次从数据库读取的条目数。–inline-lob-limit 设置内联 LOB 的最大大小-m,–num-mappers 使用n个map任务并行导入,并行度默认为4,执行并行度是需要设置–split-by来指定列,如果不指定默认主键,如果主键和split-by都没有会报错。除非使用-m 1,指定一个任务执行导入 *** 作。-e,–query 导入结果statement。–split-by 用于并行度拆分任务的列。不能与–autoreset-to-one-mapper选项一起使用 。–autoreset-to-one-mapper如果表没有主键且未提供拆分列,则导入应使用一个映射器。不能与–split-by –table RMDBS中的表名–target-dir HDFS 目标目录–warehouse-dir 表目标的 HDFS 父级–where 导入期间使用的 WHERe 子句-z,–compress启用压缩–compression-codec 使用 Hadoop 编解码器(默认 gzip)–null-string 要为字符串列的空值写入的字符串–null-non-string 要为非字符串列的空值写入的字符串选项一起使用 。 导入示例
#! /bin/bash
import_data(){
$sqoop import 
--connect jdbc:oracle:thin:[数据库IP]:[端口号]:[库名] 
--username admin 
--passwarod-file [密码存储路径] 
--target-dir [HDFS存储路径]/
--query " and $CONDITIONS" 
--num-mappers 1 
--fields-terminated-by '01' 
--hive-drop-import-delims 
--compress 
--compress-codec lzop 
--null-string '\N' 
--null-non-string '\n'

hadoop jar [lzo压缩jar路径]/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DsitributedLzoIndexer [HDFS存储路径]/
}
import_USER(){
 import_data USER "SELECT UID,UNAME FROM USER "
}

case  in
"USER")
 	import_USER
 ;;
 "all")
 	import_USER
 ;;
 easc
sqoop export
$ sqoop export (generic-args) (export-args)
$ sqoop-export (generic-args) (export-args)
导出常用参数 参数描述–connect 指定 JDBC 连接字符串–connection-manager 指定要使用的连接管理器类–driver 手动指定要使用的 JDBC 驱动程序类–hadoop-mapred-home 覆盖 $HADOOP_MAPRED_HOME–password-file为包含认证密码的文件设置路径-P从控制台读取密码–password 设置认证密码–username 设置认证用户名–verbose工作时打印更多信息–connection-param-file 提供连接参数的可选属性文件–relaxed-isolation将连接事务隔离设置为映射器未提交的读取。 导出控制参数 参数描述–columns 要导出到表的列,不提供默认为全表的列–direct使用直接导出快速路径–export-dir 导出的 HDFS 源路径,路径数据是未压缩的行存储数据,必须参数-m,–num-mappers 使用n个map任务并行导出,默认采用4个任务进行导出,sqoop作业导出会分解成多个事务,某些作业出错,部分数据会提交成功。–table 要填充的表,必须参数–call 调用的存储过程–update-key 用于更新的锚列。如果有多于一列,请使用逗号分隔的列列表。–update-mode 指定在数据库中发现具有不匹配键的新行时如何执行更新。mode的值包括 updateonly(默认)和 allowinsert。–input-null-string 对于字符串列要解释为 null 的字符串,hive采用N表示NULL值–input-null-non-string 对于非字符串列要解释为 null 的字符串–staging-table 在将数据插入目标表之前将在其中暂存数据的表。–clear-staging-table表示可以删除暂存表中存在的任何数据。–batch 使用批处理模式进行底层语句执行。 导出示例
$sqoop evel 
--connect "jdbc:oracle:thin:@[IP地址]:[端口号]:[数据库名]" 
--username admin 
--password 123456 
-e "truncate table admin.USER"

$sqoop export 
--connect "jdbc:oracle:thin:@[IP地址]:[端口号]:[数据库名]" 
--username admin 
--password 123456 
--table "USER" 
--num-mappers 1 
--export-dir [HDFS对应数据路径] 
--input-fields-terminated-by "01" 
--input-null-string '\N' 
--input-null-non-string '\N'

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5683275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存