千家信息网

sqoop的常用命令

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,1. 基础命令列出MySQL中有那些数据库sqoop list-databases \ --connect jdbc:mysql://hadoop01:3306/ \--username hadoo
千家信息网最后更新 2024年09月21日sqoop的常用命令

1. 基础命令

列出MySQL中有那些数据库

sqoop list-databases \  --connect jdbc:mysql://hadoop01:3306/ \--username hadoop \--password root \

列出MySQL中的数据库有哪些表

sqoop list-tables \  --connect jdbc:mysql://hadoop01:3306/mysql \ --username hadoop \ --password root \

在hive中创建一个跟MySQL数据库表中一样的表

create-hive-table  --connect jdbc:mysql://hadoop01:3306/test --username hadoop --password root --table book --hive-table test_hk

2.sqoop的数据导入

语法:sqoop import (generic-args) (import-args)
常用参数

-connect jdbc 连接地址 --connection-manager 连接管理者 --driver 驱动类 --hadoop-mapred-home $HADOOP_MAPRED_HOME --help help 信息 -P 从命令行输入密码 -m  指定maptask的个数,指定maptask的并行度--target-dir  指定导出数据在hdfs上的存储目录--fields-terminated-by  指定每条记录中字段之间的分隔符--where 指定查询sql的where条件--query  指定sql查询--columns 指定查询的列  (不指定默认导出所有的列)--password 密码 --username 账号 --verbose 打印流程信息 --connection-param-file 可选参数

MySQL ---> HDFS

#不指定分隔符和路径sqoop import \--connect jdbc:mysql://hadoop01:3306/test \  #指定连接--username hadoop \   #指定MySQL的用户名-password root \     #指定MySQL的密码--table book \        #指定导出的MySQL的表-m 1             #启动一个maptask#ps:如果没有指定文件的存储目录,那么默认的会保存在hdfs上的/user/用户/book 目录中,默认的字段的分隔符逗号。#指定导入路径和分割符sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--target-dir /user/hadoop/book \--fields-terminated-by '\t' \-m 1#导入where的结果sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--where "bid>2" \--table book \--target-dir /user/hadoop/book1 \-m 1ps:where后的条件,用双引号,如果条件的字段为string则里面使用单引号#导入query结果数据sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--target-dir /user/hadoop/book3 \--query 'select * from book where 1=1 and $CONDITIONS' \--split-by bid \   #指定maptask切分的列,列的值.hashcode/maptask的个数--fields-terminated-by '\t' \-m 1ps:1.query外层使用单引号,SQL 语句当中的条件使用双引号,否则会报错;2.在使用query时,必须有where子句,并且必须加入 and $CONDITIONS ,否则会报错3.--query不能和--where、--columns一起使用的4.--query sql语句,放入双引号中需要加转义

MySQL ---> hive
 Sqoop导入关系型数据到hive,的过程是先导入hdfs中,然后在load到hive。

#普通导入sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--hive-import \-m 1ps:导入数据到hive表中时,默认在default库下,表名和MySQL导入的表名一样。,默认采用'\u0001'分隔。#全量集sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--fields-terminated-by '\t' \   #列分割符--lines-terminated-by '\n'  \   #行分隔符 ,默认也是\n--hive-import \--hive-overwrite \  #覆盖导入--create-hive-table \ #创建表(默认也会自动创建表)--hive-table test.book \  #hive的表名--delete-target-dir  #删除中间存放的临时目录ps:表会自动创建,但是库不会,所以在执行语句前,一定要保证hive的数据库存在,否则会把报错。#增量导入,增量数据导入仅导入新添加的行#它需要添加 'incremental' , 'check-column', 和 'last-value' 选项来执行增量导入sqoop import \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--target-dir /user/hadoop/book \--incremental append \ #指定是增量导入 --check-column bid  \  #指定增量的列--last-value 500 \  #指定上一次的结束的列的值,(是从>500开始)一直到末尾-m 1ps:1.--incremental有两个值,append必须指定增量的列,指定使用--check-column(一般是MySQL的主键);lastmodified,最后一次修改表的时间2.增量备份如果想要导入hive中,只能指定--target-dir,导入到存放表的目录下,默认的hive不支持增量导入(即不能添加--hive-import)

MySQL ---> hbase

#sqoop import \--connect jdbc:mysql://hadoop02:3306/mysql \--username root \--password root \--table help_keyword \--hbase-table new_help_keyword \--column-family person \--hbase-row-key help_keyword_id#字段解释--connect jdbc:mysql://hadoop04:3306/mysql 表示远程或者本地 Mysql 服务的 URI--hbase-create-table 表示在 HBase 中建立表。--hbase-table new_help_keyword 表示在 HBase 中建立表 new_help_keyword。--hbase-row-key help_keyword_id 表示hbase表的rowkey是mysql表的help_keyword_id字段。--column-family person 表示在表 new_help_keyword 中建立列族 person。--username 'root' 表示使用用户 root 连接 mysql。--password 'root' 连接 mysql 的用户密码--table help_keyword 表示导出 mysql 数据库的 help_keyword 表。

3.sqoop的数据导出

语法:sqoop export (generic-args) (export-args)
常用参数

--direct 快速导入--export-dir HDFS 导出数据的目录 -m,--num-mappers 都少个 map 线程 --table 导出哪个表 --call 存储过程--update-key 通过哪个字段来判断更新 --update-mode 插入模式,默认是只更新,可以设置为 allowinsert.--input-null-string 字符类型 null 处理 --input-null-non-string 非字符类型 null 处理--staging-table 临时表--clear-staging-table 清空临时表--batch 批量模式

HDFS ---> MySQL

sqoop export \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--export-dir /sqoopdata \--fields-terminated-by ','

hive----> MySQL

sqoop export \--connect jdbc:mysql://hadoop01:3306/test \--username hadoop \--password root \--table book \--export-dir /user/hive/warehouse/uv/dt=2011-08-03 \--input-fileds-terminated-by '\t'

hbase---->MySQL
默认的没有命令直接将hbase中的数据导入到MySQL,因为在hbase中的表数据量通常比较大,如果一次性导入到MySQL,可能导致MySQL直接崩溃。
但是可以用别的办法进行导入:

  1. 将 Hbase 数据,扁平化成 HDFS 文件,然后再由 sqoop 导入
  2. 将 Hbase 数据导入 Hive 表中,然后再导入 mysql
  3. 直接使用 Hbase 的 Java API 读取表数据,直接向 mysql 导入,不需要使用 sqoop
数据 增量 字段 目录 引号 数据库 分隔符 密码 条件 用户 命令 参数 语句 存储 查询 常用 个数 信息 字符 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 金山区节能软件开发不二之选 网络安全周活动主题2019 杭州大数据软件开发大概要多少钱 远程服务器死机了 2019年5月6日网络安全 梁溪区信息化软件开发代理品牌 网络安全教育2000字征文 数据库系统内容 校园网络安全事例高中生 网络安全架构与设计与实现 精灵盛典黎明一个服务器多少钱 北京软件开发公司哪家专业 软件测评师与数据库工程师 医院行业网络安全标准 悠洗洗衣服务器无响应怎么办 阴阳师怎么看我的服务器 国安网络安全二十条 仙剑奇侠传四用什么软件开发的 服务器内存主频一般多少 洪湖网络安全等级评测 廊坊市网络技术上市公司 我的世界网易服务器为什么不能进 公安数据库资料删改 横版游戏软件开发 人社局网络安全责任追究制度 部队网络安全警示语录 网络安全是什么制度 女性性服务器模型 服务器系统和普通电脑区别 存储文本数据使用什么数据库
0