Hive记录-Sqoop常用命令
1.sqoop是什么
Sqoop是一款开源的数据迁移工具,主要用于Hadoop(Hive)与传统的关系型数据库(mysql...)相互之间的数据迁移。
2.sqoop的特点
sqoop的底层实现是mapreduce,所以sqoop依赖于hadoop,数据是并行导入的。
3.sqoop常用命令
sqoop help
1)列出mysql数据库中的所有数据库中的test数据库
sqoop list-databases --connect jdbc:mysql://localhost:3306/test -usernametest -password
test
2)连接mysql并列出数据库中的表
sqoop list-tables --connect jdbc:mysql://localhost:3306/test --username test --password test
3)将关系型数据的表结构复制到hive中
sqoop create-hive-table --connect jdbc:mysql://localhost:3306/test --table users --username test
--password test --hive-table users --fields-terminated-by "\0001" --lines-terminated-by "\n";
参数说明:
--fields-terminated-by "\0001" 是设置每列之间的分隔符,"\0001"是ASCII码中的1,它也是hive的默认行内分隔符, 而sqoop的默认行内分隔符为"," --lines-terminated-by "\n" 设置的是每行之间的分隔符,此处为换行符,也是默认的分隔符;
注意:只是复制表的结构,表中的内容没有复制
4)将数据从关系数据库导入文件到hive表中
sqoop import --connect jdbc:mysql://localhost:3306/test --username test --password test
--table users --hive-import --hive-table users -m 2 --fields-terminated-by "\0001";
参数说明:
-m 2 表示由两个map作业执行;
--fields-terminated-by "\0001" 需同创建hive表时保持一致;
5)将hive中的表数据导入到mysql数据库表中
sqoop export --connect jdbc:mysql://192.168.66.66:3306/test --username test --password test
--table users --export-dir /user/hive/warehouse/users/part-m-00000 --input-fields-terminated-by '\0001'
注意:
a.在进行导入之前,mysql中的表users必须已经提起创建好了。
b.jdbc:mysql://192.168.66.66:3306/test中的IP地址改成localhost会报异常
6)将数据从关系数据库导入文件到hive表中,--query 语句使用
sqoop import --append --connect jdbc:mysql://192.168.66.66/test --username test --password test --query "select id,age,name from userinfo where \$CONDITIONS" -m 1 --target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by ",";
7)将数据从关系数据库导入文件到hive表中,--columns --where 语句使用
sqoop import --append --connect jdbc:mysql://192.168.66.66:3306/test --username test --password test --table userinfo --columns "id,age,name" --where "id > 3 and (age = 88 or age = 80)" -m 1 --target-dir /user/hive/warehouse/userinfos2 --fields-terminated-by
",";
注意:--target-dir /user/hive/warehouse/userinfos 可以用 --hive-import --hive-table userinfos进行替换
8)mysql导入数据到HDFS
sqoop import --connect jdbc:mysql://192.168.66.66:3306/test --username root --password 123456 --table test_user --target-dir /usr/test -m 2 --fields-terminated-by "\t" --columns
"id,name" --where 'id>2 and id<=6'
sqoop export --connect jdbc:mysql://192.168.66.66:3306/test --username root --password 123456 --export-dir '/usr/test' --table test -m 2
import的主要参数
--connect <jdbc-uri> jdbc连接地址
--connection-manager <class-name> 连接管理者
--driver <class-name> 驱动类
--hadoop-mapred-home <dir> $HADOOP_MAPRED_HOME
--help help信息
-P 从命令行输入密码
--password <password> 密码
--username <username> 账号
--verbose 打印信息
--connection-param-file <filename> 可选参数
Argument Description
--append 添加到hdfs中已经存在的dataset
--as-avrodatafile 导入数据作为avrodata
--as-sequencefile 导入数据位SequenceFiles
--as-textfile 默认导入数据为文本
--boundary-query <statement> 创建splits的边界
--columns <col,col,col…> 选择列
--direct 使用直接导入快速路径
--direct-split-size <n> 在快速模式下每n字节使用一个split
--fetch-size <n> 一次读入的数量
--inline-lob-limit <n> 最大数值 an inline LOB
-m,--num-mappers <n> 通过实行多少个map,默认是4个,某些数据库8 or 16性能不错
-e,--query <statement> 通过查询语句导入
--split-by <column-name> 创建split的列,默认是主键
--table <table-name> 要导入的表名
--target-dir <dir> HDFS 目标路径
--warehouse-dir <dir> HDFS parent for table destination
--where <where clause> where条件
-z,--compress Enable compression
--compression-codec <c> 压缩方式,默认是gzip
--null-string <null-string> 字符列null值
--null-non-string <null-string> 非字符列null值
export主要参数
--direct 快速导入
--export-dir <dir> HDFS到处数据的目录
-m,--num-mappers <n> 都少个map线程
--table <table-name> 导出哪个表
--call <stored-proc-name> 存储过程
--update-key <col-name> 通过哪个字段来判断更新
--update-mode <mode> 插入模式,默认是只更新,可以设置为allowinsert.
--input-null-string <null-string> 字符类型null处理
--input-null-non-string <null-string> 非字符类型null处理
--staging-table <staging-table-name> 临时表
--clear-staging-table 清空临时表
--batch 批量模式
转义字符相关参数。
Argument Description
--enclosed-by <char> 设置字段结束符号
--escaped-by <char> 用哪个字符来转义
--fields-terminated-by <char> 字段之间的分隔符
--lines-terminated-by <char> 行分隔符
--mysql-delimiters 使用mysql的默认分隔符: , lines: \n escaped-by: \ optionally-enclosed-by: '
--optionally-enclosed-by <char> 复制结束符
hive导入参数
--hive-home <dir> 重写$HIVE_HOME
--hive-import 插入数据到hive当中,使用hive的默认分隔符
--hive-overwrite 重写插入
--create-hive-table 建表,如果表已经存在,该操作会报错!
--hive-table <table-name> 设置到hive当中的表名
--hive-drop-import-delims 导入到hive时删除 \n, \r, and \01
--hive-delims-replacement 导入到hive时用自定义的字符替换掉 \n, \r, and \01
--hive-partition-key hive分区的key
--hive-partition-value <v> hive分区的值
--map-column-hive <map> 类型匹配,sql类型对应到hive类型
Hive记录-Sqoop常用命令的更多相关文章
- Hive记录-impala常用命令
1.impala是什么 Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据.已有的Hive系统虽然也提供了SQL ...
- 【Hadoop离线基础总结】Sqoop常用命令及参数
目录 常用命令 常用公用参数 公用参数:数据库连接 公用参数:import 公用参数:export 公用参数:hive 常用命令&参数 从关系表导入--import 导出到关系表--expor ...
- 记录Nginx常用命令
在此记录下Nginx服务器常用命令(CentOS7.2.Nginx1.14.2环境) 启动Nginx:./usr/sbin/nginx Nginx检查语法:nginx -tc /etc/nginx/n ...
- Hive记录-Beeline常用操作命令
Beeline和其他工具有一些不同,执行查询都是正常的SQL输入,但是如果是一些管理的命令, 比如进行连接,中断,退出,执行Beeline命令需要带上"!",不需要终止符.常用命令 ...
- sqoop 常用命令集
sqoop是一个介于分布式数据系统与关系型系统之间数据转换的一个数据转换工具 常用命令集sqoop2中sqoop-shell 创建link.job sqoop:001> show link 显示 ...
- sqoop 常用命令整理(二)
26.Validate 它用来比较源数据和目标数据的数量 它有三个接口 Validator. 它有三个接口 Validator. Property: validator Description: Dr ...
- sqoop 常用命令整理(一)
这些内容是从sqoop的官网整理出来的,是1.4.3版本的Document,如果有错误,希望大家指正. 1.使用sqoop导入数据 sqoop import --connect jdbc:mysql: ...
- 记录Vim常用命令
命令 简单说明 i 进入编辑模式,光标在原位置 I 进入编辑模式,光标在行首位置 o 从光标所在行,下面一行开始编辑 O 从光标所在行,上面一行开始编辑 a 从光标当前字符后编辑 A 从光标所在行的行 ...
- linux学习记录.4.常用命令
帮助command --help 获取‘command‘命令的帮助 目录与文件 cd /home 进入‘home’目录 cd .. 返回上一级目录 cd 进入个人目录 c ...
随机推荐
- PAT 1019 数字黑洞
https://pintia.cn/problem-sets/994805260223102976/problems/994805302786899968 给定任一个各位数字不完全相同的4位正整数,如 ...
- CentOS(6.8)7 安装 Mysql 5.7
https://blog.csdn.net/zyw_java/article/details/70949596 https://blog.csdn.net/yzl11/article/details/ ...
- Atlas & mysql-proxy
Atlas https://github.com/Qihoo360/Atlas https://github.com/Qihoo360/Atlas/wiki/Installing-Atlas Atla ...
- Windows 聆听 简单使用体验
1. 点击windows 按键 输入语音 按照操作 选择语音 并且读出那一段话. 2. 可以将windows 语音识别 添加到开始面板 3. 使用时 点击 该图标,然后点击麦克风按钮 聆听效果如图示 ...
- fasterxml.jackson 将对象转换为json报错处理
最近在做查询的数据遇到如下报错: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found ...
- python之使用heapq()函数计算列表中数值大小
# heapq函数:计算列表最大几个值和最小几个值 # 语法:heapq.nlargest(n, list,[key]) # n表示最大或最小的几个: list为分析的对象: key为排序关键字,非必 ...
- BZOJ1906树上的蚂蚁&BZOJ3700发展城市——RMQ求LCA+树链的交
题目描述 众所周知,Hzwer学长是一名高富帅,他打算投入巨资发展一些小城市. Hzwer打算在城市中开N个宾馆,由于Hzwer非常壕,所以宾馆必须建在空中,但是这样就必须建立宾馆之间的连接通道.机智 ...
- BZOJ2135 刷题计划(贪心+二分)
相邻数作差后容易转化成将这些数最多再切m刀能获得的最小偏差值.大胆猜想化一波式子可以发现将一个数平均分是最优的.并且划分次数越多能获得的偏差值增量越小.那么就可以贪心了:将所有差扔进堆里,每次取出增量 ...
- Python 面向对象 - 内置类方法
内置方法 内置方法 说明 __init__(self,...) 初始化对象,在创建新对象时调用 __del__(self) 释放对象,在对象被删除之前调用 __new__(cls,*ar ...
- 自学Linux Shell11.1-shell概述
点击返回 自学Linux命令行与Shell脚本之路 11.1-shell概述 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计 ...