最近在用sqoop1.99.6做数据抽取,期间遇到了很多问题,特此在这里记录一下,方便以后的回顾与整理

1.首先配置的时候,需要配置hdfs的lib目录到catalina.properties

common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/../lib/*.jar,/usr/lib/hadoop/*.jar,/usr/lib/hadoop/lib/*.jar,/usr/lib/hadoop-hdfs/*.jar,/usr/lib/hadoop-hdfs/lib/*.jar,/usr/lib/hadoop-mapreduce/*.jar,/usr/lib/hadoop-mapreduce/lib/*.jar,/usr/lib/hadoop-yarn/*.jar,/usr/lib/hadoop-yarn/lib/*.jar,/usr/lib/hive/lib/*.jar

在sqoop.properties中配置logs目录与db的目录

2.配置完后即可启动sqoop(应先启动hadoop)

3.创建一个sqoop任务需要先创建link,在1.99.6中需创建一个

fromlink,和tolink。

create link -cid 1
create link -cid 3

这两行命令是分别创建一个jdbclink 和一个hdfs link

jdbclink 需要填写一些参数:一定需要填写的参数为connectString,database user database password

hdfs link需要填写的参数为:hdfs的url :hdfs://namenode:9000/

在设置好这些参数以后就可以进行连接了。

本人测试过mysql连接和oracle连接。

oracle连接的连接参数可以用sid进行连接:jdbc:oracle:thin:@IP:Port:orcl

在构建了link 后就可以构建job了。

create job -f 1 -t 2

需填写的参数为

Name:可不填

From database configuration

Schema name:

Table name:

Table SQL statement:

Table Columns name:

...

To HDFS configuration

...

output format:

compression format:

...

Output directory:

...

在这里要着重写一下几个参数的意义。特别是在数据库一端的设置。

(Schema name,Table name)和Table SQL statement 不能同时设置,这是为了防止表名不同一造成的问题。

Table Columns name可以设置要抽取的列名。基本格式为:COL1,COL2,COL3  .因为Table Columns name的长度有一个变态的设置,就是这个字符串长度不能超过50.所以基本上设置不了几列。在这里,我通过查找源码发现了Table SQL statement的用法,其实可以说他的存在就是为了解决上面的问题。首先我们可以看到源码里sql的size为2000.所以有足够的长度。但是之前试了好多种sql的写法,发现总是不成功。于是对sqoop各种吐槽。。。

后来终于发现它的基本写法是这样子滴:SELECT ID,COL1,COL2,COL3 FROM SCHEMA.TABLE WHERE ${CONDITIONS}

那个${CONDITIONS}只是个占位符,没有什么用处,它在源码里会被替换成1=1

这样子就解决了COLUMNS设置的问题。

再来讲解一下

Partition column name 一般可设置为ID,它的作用就是为了并行处理做准备的。sqoop通过获取Partition column的最大值和最小值对数据库表进行切割,分块读取数据(这样很有可能导致任务之间的不平衡)。

为了解决这个问题,可以用Boundary Query来解决分块的问题,这部分我还没有研究。

最后一个问题,sqoop现在列之间的分隔符用的是“,”而不是“\t”,而且在外部已经不能手动去改了,它在代码里写死了。要改的话可以通过重新编译源代码的方式进行修改。

那个类是org.apache.sqoop.connector.hdfs.HdfsConstants

对于sqoop的学习暂且先记到这里。

转载于:https://www.cnblogs.com/yulijunzj/p/5341534.html

针对sqoop1.99.6 从jdbc向hdfs中抽取数据的几点感想相关推荐

  1. HBase建表高级属性,hbase应用案例看行键设计,HBase和mapreduce结合,从Hbase中读取数据、分析,写入hdfs,从hdfs中读取数据写入Hbase,协处理器和二级索引

    1. Hbase高级应用 1.1建表高级属性 下面几个shell 命令在hbase操作中可以起到很到的作用,且主要体现在建表的过程中,看下面几个create 属性 1. BLOOMFILTER 默认是 ...

  2. JDBC实现从Hive抽取数据导入Oracle

    环境:浙江移动华为云平台 云平台大数据采用了 Kerberos 认证. 开发历程: 1.在宁波大数据实验环境测试通过了JDBC实现从Hive抽取数据导入Oracle功能. 2.通过查看其它项目的数据库 ...

  3. 基于JDBC从数据库中读取数据,在百度地图批量标注地点

    基于JDBC从数据库中读取数据,在百度地图批量标注地点 一.相关技术 JSP,JDBC,JSON,JS,百度地图API 二.基于JDBC从数据库读取数据 见"JSP基于JDBC操作MSSQL ...

  4. 十八、通过Sqoop2-Shell将HDFS中的数据导出到MySQL

    一.Sqoop2提供了能够使用REST接口与Sqoop 2服务器通信的命令行shell.客户端可以在两种模式下运行--交互模式和批处理模式.批处理模式目前不支持create.update和clone命 ...

  5. jdk12连接mysql_使用基于JDK12版本的JDBC读取数据库中的数据在网页(jsp)表示出来...

    JDBC,数据库访问技术,就是通过Java访问数据库. 对于JDK1.8以后的版本,安装包不再有jre文件包了,这里总结一下我走过的坑. 一.JDBC所需的jar包:其中包含了SQL Server f ...

  6. 《sqoop实现hdfs中的数据导出至mysql数据库》

    报错Access denied for user 'root'@'localhost' (using password: YES)  参考一  参考二 登陆mysql时,root密码的修改 参考帖子h ...

  7. 是用JDBC从数据库中获取数据并以java对象返回

    /*** * @param c* for example Person.class* @param primaryKeys* primaryKeys为主键,参数顺序和表中保持一致 如果id, name ...

  8. [JDBC连接] 使用JDBC操作数据库中的数据

    目录

  9. 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据

    通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据\ 下文将重点说明通过Sqoop实现Mysql与HDFS互导数据,Mysql与Hbase,Oracle与Hbase的互 ...

最新文章

  1. linux 笔记 一
  2. 虚拟函数-2、实现机制
  3. Android学习计划制定
  4. AcWing - 246. 区间最大公约数(树状数组+线段树)
  5. 通过服务器端日志分析WebSocket的server和client交互
  6. 获取.properties后缀的数据
  7. 二阶龙格库塔公式推导_二阶常系数齐次线性方程通解推导(涉及常数变易法和欧拉公式)...
  8. DataGridView 禁用自动生成列
  9. try catch中getRequestDispatcher跳转
  10. 夜神安卓模拟器安装xposed框架
  11. 【linux程序设计】使用POSIX API的文件I/O操作方法仿写cp命令
  12. Cocos2d-x学习:vs2010使用vld检测内存泄露
  13. 阿里云Blink介绍
  14. 桌面图标文字有蓝底怎么办
  15. STM32工具使用---STM32 ST-Link Utility
  16. Impala metrics之statestore-subscriber
  17. Git-储藏(Stashing)
  18. linux系统怎么设置ftp账号密码错误,linux系统FTP设置账号密码
  19. CMDN Club #19: Windows 8 Dev BootCamp - Win8开发知识与产品实践
  20. ABB机器人的程序结构与模块属性

热门文章

  1. Markdown用法
  2. ElastieSearch安装以及与Mongodb的概念对照关系
  3. QuorumPeerMain数量可否和HRegionServer节点数量不一致?
  4. CT流程与CT图像的windowing操作(转载+整理)
  5. 海量特征按照缺失值null/NAN数量异同进行分组归类
  6. baidu aistudio使用小结
  7. 统计dataframe中所有列的null数量与填充null注意事项
  8. SVM推导过程及SMO详细求解过程(转载+自己笔记)
  9. 深度学习(十六)——Faster R-CNN, YOLO
  10. 线性代数导论2——矩阵消元