Sqoop 数据迁移工具
Sqoop 数据迁移工具
sqoop : SQL to hadOOP
两个功能:
1、 RDB 向HDFS导入
2、 HDFS向RDB导入
注:拷贝mysql-connector.jar 和 json.jar 到sqoop/lib目录下
HDFS导入使用
命令很长,一般写成shell脚本。(运行需要启动 HDFS 、Yarn[mapreduce作业必须]、SQL)
COLUMN 、WHERE限定
sqoop import \
#import指从sql导入到hdfs
--connect jdbc:mysql://localhost:3306/test \
# 可选 --driver com.mysql.jdbc.Driver
#test是目标数据库名
--table customers \
#目标表名
--columns "fname,lname" \
#可以使用columns指定字段
--where "order_date>'2019-1-1'" \
#可以使用where筛选原数据
--username root \
#数据库登陆用户名
--password rw \
#密码
--target-dir /sqoop/test_rdb/customers \
#hdfs 的目标路径,不指定的话会放在/user/【username】/【tbl_name】下
--delete-target-dir \
#覆盖到hdfs(即删除原目录),慎选
-m 3
#map工作者数目,决定最终文件数
#导入的结果是csv格式的文件
注意:斜杠符需要前空格
自由Query查询导入
sqoop import \
#import指从sql导入到hdfs
--connect jdbc:mysql://localhost:3306/test \
#test是目标数据库名
#自由查询不需要指定--table,会冲突
#目标表名
--query "select * from userinfos where host!='127.0.0.1' and \$CONDITIONS" \
# '\$CONDITIONS' 查询必须以该语句结尾
--split-by 'username' \ #指定按照那个字段分区(split到各个mapper)
--username root \
--password rw \
--target-dir /sqoop/test_rdb/customers \ #自由查询必须要指定,因为无法根据--table 自动生成目录名
-m 3
增量导入
--incremental append|lastmodified #指定增量方式,append追加记录,lastmodified更新
--check-column fieldname \ #指定增量列,排序列
--last-value 'xxxx' \ #上一次导入时,check-column的最大值,从这个值开始升序导入
注:lastmodified 要求排序列必须是时间戳(int)或者日期格式(yyyy-MM-dd)
HDFS导入总结:
必要参数:
sqoop import \
--connect jdbc:mysql://ip:3306/dbname
--username name \
--password passwd \
--table tbl_name \
可选参数:
-m 3 #指定mapper工作者数量
-as-sequencefile|textfile|parquetfile|avrodatafile #存储类型
自由查询:
--query "select ... and \$CONDITIONS" \
--target-dir /path/ \ #必须
--split-by 'filedName' #可选
一般限定:
--columns "field1,field2" \ #可选
--where "field<=value" \ #可选
--target-dir /path/ \ #可选
HIVE导入使用
sqoop import \
--connect jdbc....
--table orders \ #也可以使用query
--username root \
--password rw \
--hive-import \
--create-hive-table \ #自动建表,表元数据同sql,名已存在会报错,一般不用。--hive-overwrite是自动覆盖旧表。
--hive-database dbname \ #目标hive数据库和表
--hive-table orders \ #也可以使用库名.表名的方式
-m 3
指定分区
--hive-partition-key "field_name" \
--hive-partition-value "value" \
#通过字段和值,指定要存储的分区。
可能的运行错误:
——————————————————————————————————
Q: ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
A:往/etc/profile最后加入
export HADOOP_CLASSPATH=HADOOP_CLASSPATH:$HIVE_HOME/lib/*
export HIVE_CONF_DIR=/opt/hive/conf
A2:复制hive/lib目录下的hive-common*包到sqoop/lib目录下
——————————————————————————————————
Q:ERROR Could not register mbeans java.security.AccessControlException: access denied
("javax.management.MBeanTrustPermission" "register")
A:将hive-site.xml复制到${SQOOP_HOME}/conf下即可.
A2:添加以下代码到${JDK_HOME}/jre/lib/security/java.policy
grant {
permission javax.management.MBeanTrustPermission "register";
};
——————————————————————————————————
Q:ERROR exec.DDLTask: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.readerFor(Ljava/lang/Class;)Lcom/fasterxml/jackson/databind/ObjectReader;
A:jackson jar包版本冲突,将sqoop/lib下的jackson.jar备份(mv移动到另一个目录下), 然后将hive/lib包下的jackson.*拷贝到sqoop/lib下。
——————————————————————————————————
Q:IOException throw in HIVE
A:复制hive/lib/log4j-slf4j-impl* 包到sqoop/lib 目录下,或者export HADOOP_CLASSPATH=HADOOP_CLASSPATH:$HIVE_HOME/lib/*
HBase导入使用
sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password rw \
--table customers \
--columns "customer_id,custmoer_firstname,customer_lastname" \
--hbase-table customerinfo \
--column-family CustomerName \
--hbase-row-key customernum \
-m 1
HDFS导出到mysql
sqoop export \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password rw \
--table customers \ #这是目标sql库中的表,表必须已存在
--export-dir /data/sqoop/emp \ #源文件路径
-m 1
#其他的同导入,运行时反过来就可以了
#!/bin/bash
sqoop export \
--connect jdbc:mysql://localhost:3306/mytest \
--username root \
--password rw \
--table customers \ #这是目标sql库中的表,表必须已存在
--fields-terminated-by "\001" \ #默认字段分隔符是\001,如果DDL时指定了则使用指定的分隔符
--export-dir /user/hive/warehouse/customers \ #这是hive中表内容的存储目录,desc formatted tbl
-m 1
Sqoop 数据迁移工具的更多相关文章
- Sqoop数据迁移工具的使用
文章作者:foochane 原文链接:https://foochane.cn/article/2019063001.html Sqoop数据迁移工具的使用 sqoop简单介绍 sqoop数据到HDF ...
- Sqoop数据迁移工具
一.概述 sqoop 是 apache 旗下一款“ Hadoop 和关系数据库服务器之间传送数据”的工具. 导入数据: MySQL, Oracle 导入数据到 Hadoop 的 HDFS. HIVE. ...
- 数据迁移工具sqoop
有问题........数据迁移工具sqoop sqoop安装 [root@sqoop data]# wget wget http://apache.fayea.com/sqoop/1.4.6/sqo ...
- sqoop 数据迁移
sqoop 数据迁移 1 概述 sqoop是apache旗下一款“Hadoop和关系数据库服务器之间传送数据”的工具. 导入数据:MySQL,Oracle导入数据到Hadoop的HDFS.HIVE.H ...
- sqoop数据校验
sqoop数据校验 # check data oracle_cnt=$(sqoop eval \ -Dmapred.job.queue.name=${queue} \ --connect ${conn ...
- 撸了个 django 数据迁移工具 django-supertube
撸了个 django 数据迁移工具 django-supertube 支持字段映射和动态字段转化. 欢迎 star,issue https://github.com/FingerLiu/django- ...
- 【Hadoop离线基础总结】Sqoop数据迁移
目录 Sqoop介绍 概述 版本 Sqoop安装及使用 Sqoop安装 Sqoop数据导入 导入关系表到Hive已有表中 导入关系表到Hive(自动创建Hive表) 将关系表子集导入到HDFS中 sq ...
- 数据迁移工具Sqoop和DataX功能比较
本文转载自: http://www.cnblogs.com/panfeng412/archive/2013/04/29/data-migration-tool-sqoop-and-datax.html ...
- sqoop数据导出导入命令
1. 将mysql中的数据导入到hive中 sqoop import --connect jdbc:mysql://localhost:3306/sqoop --direct --username r ...
随机推荐
- SpringMVC系列(一)核心:处理请求流程
http://blog.csdn.net/zhaolijing2012/article/details/41596803
- JDK-7新特性,更优雅的关闭流-java try-with-resource语句使用
前言 公司最近代码质量整改,需要对大方法进行调整,降低到50行以下,对方法的深度进行降低,然后有些文件涉及到流操作,很多try/catch/finally语句,导致行数超出规范值,使用这个语法可以很好 ...
- H - 看病要排队
看病要排队这个是地球人都知道的常识.不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病.而看病的人病情有轻重,所以不能根据简单的先来先服务 ...
- P3195 [HNOI2008] 玩具装箱(斜率优化DP)
题目链接 设\(d[i]\)为将前 \(i\) 个玩具装入箱中所需得最小费用 容易得到动态转移方程: \[d[i] = min(d[j] + (s[i]-s[j]+i-j-1-L)^2), (j< ...
- windows10与linux进行ftp遇到550 Failed to change directory及553 Could not creat file
第一个原因: 没有权限,可以使用带有l参数的ls命令来看文件或者目录的权限 ls -l 解决:给本地用户添加一个可写权限 chmod +w /home/student ##给对应的本地用户添加一个可写 ...
- 阅读笔记:Very Deep Convolutional Networks for Large-Scale Image Recognition
摘要: 在这篇论文我们主要研究卷积神级网络的深度对大范围图像识别效果的影响,我们发现增加神经网络层数增加到16-19层时我们的实验结果有很大的提高.这使得我们在2014年的ImageNet Chall ...
- MySQL中为避免索引失效所需注意的问题
一.索引介绍 二.索引的优势与劣势 1.优势 类似于书籍的目录索引,提高数据检索的效率,降低数据库的IO成本. 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗. 2.劣势 实际上索引也 ...
- Docker之Dockerfile文件
Dockerfile是一堆指令,每一条指令构建一层,因此每一条指令的内容就是描述该层应当如何构建,在docker build的时候,按照该指令进行操作,最终生成我们期望的镜像文件 Dockerfile ...
- spring再学习之配置详解
applicationContext.xml文件配置: bean元素: <?xml version="1.0" encoding="UTF-8"?> ...
- bzoj1013球形空间产生器sphere 高斯消元(有系统差的写法
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...