sqoop的常用命令
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,1. 基础命令列出MySQL中有那些数据库sqoop list-databases \ --connect jdbc:mysql://hadoop01:3306/ \--username hadoo
千家信息网最后更新 2024年11月22日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直接崩溃。
但是可以用别的办法进行导入:
- 将 Hbase 数据,扁平化成 HDFS 文件,然后再由 sqoop 导入
- 将 Hbase 数据导入 Hive 表中,然后再导入 mysql
- 直接使用 Hbase 的 Java API 读取表数据,直接向 mysql 导入,不需要使用 sqoop
数据
增量
字段
目录
引号
数据库
分隔符
密码
条件
用户
命令
参数
语句
存储
查询
常用
个数
信息
字符
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
定序数据库计算
能否给出嵌入式软件开发流程
服务器安全狗蓝屏
网络安全科测验试题
网络技术人员工资会计分录
网络技术应用发展前景
数据库和测绘的联系
网络技术师范大学有哪些
福建特色软件开发推荐货源
温州中顺网络技术有限公司
绍兴软件开发驻场大概多少钱
拼多多软件开发成本
制作一个网站数据库怎么弄
纯生存服务器
gis数据库建库
cms上传服务器
泾县进口软件开发服务攻略
pa服务器
神经网络技术路线图模板
软件开发团队研究
郑州科技学院网络安全精英赛
网络安全如何防范经验
服务器硬盘发热影响网速吗
北京软件开发人员招聘
网络安全问题图片背景图
深圳智慧电梯软件开发怎么收费
我的世界服务器1.9
现代网络技术与课堂教学
160元的服务器
豆瓣网计算机网络技术