sqoop学习笔记
来源:互联网 发布:济南java工资线 编辑:程序博客网 时间:2024/05/17 00:54
学习sqoop主要从以下几点入手
一 为啥要用sqoop
二 Sqoop到底是啥
三 Sqoop怎么安装
四 Sqoop如何使用
一、为啥要用sqoop,业务场景分析
二、Sqoop到底是啥
1、Hadoop生态系统中sqoop的位置
2、概念
Sqoop是hadoop家族技能成员中重要的组成部分,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Sqoop专为大数据批量传输设计,能够分割数据集并创建Hadoop任务来处理每个区块。
“这么牛掰的东西、瞬间感觉春天到了”
3、Sqoop架构
三、Sqoop安装
java –version
hadoop -version
http://sqoop.apache.org/
cd /app/hadoop
tar -zxvf sqoop-1.4.6.tar.gz
export SQOOP_HOME=/app/hadoop/sqoop-1.4.6
export PATH=$PATH:$SQOOP_HOME/bin
mysql-connector-java-5.1.44.jar
ojdbc14-10.2.0.4.0.jar
export HADOOP_COMMON_HOME=/app/hadoop/hadoop-2.7.2
exportHADOOP_MAPRED_HOME=/app/hadoop/hadoop-2.7.2
exportHIVE_HOME=/app/hadoop/apache-hive-2.1.1
四、Sqoop使用
1、查看有哪些参数 >Sqoop help
2、sqoop常见参数说明
sqoop list-databases \
--connect jdbc:mysql://localhost:3306/ \
-username root \
-password root
sqoop list-tables --connect jdbc:mysql://127.0.0.1/operation --usernameroot --password 123
5、导入mysql表到hive
1)直接导入
sqoopimport --hive-import\
--connectjdbc:oracle:thin:@localhost:1521:DBNAME \
--usernameUSERNAME \
--passwordPASSWORD \
--verbose \
-m 1 \
--table TABLENAME \
--hive-database cashier
2)查询导入,可以自定义字段
sqoop import \
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE $CONDITIONS' \
--split-by a.id \
-m 4 \
--target-dir /user/foo/joinresults \
--hive-databases cashier \
--hive-tabletbl_cashier_number
3)导入指定字段并加入过滤条件
sqoop import \
--hive-import \
--connect jdbc:oracle:thin:@localhost:1521:DBNAME \
--username USERNAME \
--password PASSWORD \
--verbose -m 1 \
--table TABLENAME \
--columns “cashier_no,order_no” \
--where "start_date > '2010-01-01‘ \
--hive-database cashier \
--hive-table tbl_casher_number
sqoopcreate-hive-table \
--connectjdbc:oracle:thin:@//localhost:1521/ORCL\
--usernameDATACENTER\
--password clear\
--tabletablename
5)sqoop增量导入
sqoop import \
--hive-import \
--connectjdbc:oracle:thin:@xxxxx:31521/profile \
--username xxx --password xxx --verbose -m 1 \
--tableLIVE_CASHIER.TBL_PAY_SUPPLIER_INFO \
--hive-database cashier \
--hive-table TBL_PAY_SUPPLIER_INFO
--incrementallastmodified|append \两种模式
--check-column CREATE_TIME \CREATE_TIME必须是日期类型
--last-value ‘2012-06-02 00:00:00’\第一次导入的下界,从第二次开始,sqoop会自动更新该值为上一次导入的上界
由于我们表结果时间采用字符串格式、并且没有自增的ID,所以放弃使用,大家可以研究下
通过编写shell脚本、调用linux的crontab定时执行shell脚本,规则:每天凌晨3点执行导入上有一天的数据,所以达不到实时效果,后期可以研究下采用kafka,
0 3 * * * /app/hadoop/sqoop-task/view.sh
1:获取上次执行的时间,读取view.txt,如果不存在做全量更新,之后把最后执行时间写入
10)Hive实时数据同步研究方向
五、sqoop踩过的坑
1:This may happen if the user doesnot have DBA privileges. Please check privileges and try again
解决方案:没有导出权限,需DBA开通
2:Imported Failed: There is no columnfound in the target tabletbl_pay_supplier_info. Please ensure that your tablename is correct
解决方案:表名要大写,并要指定库
3:网络适配器无法建立连接:The Network Adapter could notestablish the connection
解决方案:把所有hadoop对应的集群服务器加入了数据库白名单就好了。
4:Can’t parse input data:’\N’
解决方案:添加参数-input-null-string '\\N' --input-null-non-string '\\N'
5:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directoryhdfs://CashierHadoop/app/hadoop/sqoop-task/tbl_cashier_refund already exists
解决方案:加入—delete-target_dir
6: When importing a query to Hive,you must specify --hive-table
解决方案:加入—hive-table指定表名
以上仅是自己在公司业务场景下用到的,其他的如果有什么问题,互相交流
- Sqoop学习笔记 --- Sqoop原理图
- sqoop学习笔记
- Sqoop学习笔记
- sqoop 学习笔记
- sqoop学习笔记
- sqoop学习笔记
- Sqoop学习笔记
- Sqoop学习笔记
- sqoop学习笔记
- sqoop 学习笔记
- sqoop学习笔记-sqoop安装部署
- Sqoop学习笔记 --- sqoop import with primary_key , or without primary_key
- Sqoop学习笔记 --- sqoop使用时候常见错误
- Sqoop学习笔记 --- python保存 Sqoop 打印的信息
- 大数据学习笔记(十四)-Sqoop
- Sqoop笔记
- sqoop笔记
- sqoop 笔记
- 浅谈移动端的自适应问题——响应式、rem/em、利用Js动态实现移动端自适应
- 【web前端开发】浏览器兼容性处理大全
- 车牌识别api接口—移动端安卓、iOS系统的OCR技术
- java异常语句的执行顺序
- python 常用关键字总结 壹
- sqoop学习笔记
- js事件冒泡
- 第六章 SpringCloud Zuul网关
- Spark的性能调优
- CAN接口芯片MCP2515的波特率和滤波器设置问题
- ToDoList(Vue示例)
- android给retrofit 的 添加okhttp的拦截器
- asp.net对json文件或者txt文件进行调用
- 生成UUID