Sqoop 遇到的问题
1. 想用 sqoop 增量的方式导入到 hive。运行下面的命令:
sqoop import --connect jdbc:mysql://192.168.7.159:3306/test
--username root --password 123456
--query "select name, age, dept, update_dt from emp WHERE \$CONDITIONS"
--hive-import --hive-database default --hive-table emp_tmp
--target-dir /warehouse/tablespace/managed/hive/emp_tmp
--fields-terminated-by '\001' --incremental lastmodified
--check-column update_dt --last-value '2018-03-21' --append -m 1
错误提示: --incremental lastmodified option for hive imports is not supported
我晕, --incremental lastmodified 和 --hive-import 竟然不能同时使用。把 lastmodified 改成 append 后就可以运行了。看了 sqoop 的官方文档,append 通常用于自增的 id 列,lastmodified 用于更新的日期列,日期同样也可以比较大小啊,有点不明白为什么 lastmodified 不可以。
2. 上面命令中,如果去掉 “--hive-import --hive-database default --hive-table emp_tmp” 后,同样可以导入数据,在 hive 中运行 select * from emp_tmp 可以看到有数据,但是运行 select count(1) from emp_tmp 出来的结果是 0
3. 上面命令中 “-m” 指定有多少个 map 任务,如果任务数大于 1,则需要额外指定 --split-by <分割列>
4. 用下面的命令可以创建一个 job。
sqoop job --create emp_job -- import
--connect jdbc:mysql://192.168.7.159:3306/test
--username root --password 123456
--query "select name, id, age, dept, update_tm from emp where \$CONDITIONS"
--target-dir /warehouse/tablespace/managed/hive/emp
--fields-terminated-by '\001' --hive-delims-replacement ' '
--null-string "" --null-non-string ""
--hive-import --hive-database default --hive-table emp
--incremental lastmodified --check-column update_tm --last-value '1980-01-01 00:00:00' --append -m 1
使用 sqoop job --exec emp_job 就可以进行一次导入了,sqoop 会自动记录上一次的更新时间,用于替换以后跑这个 job 时 last-value 的值
5. 怎么查询 sqoop 的 job 每次用到的 last-value 的值?
找到 metastore.db.script 这个文件所在的位置,打开它,搜索 incremental.last.value ,每个 job 都会对应一个。
find / -name metastore.db.script
2. 查询表中的记录时,出现 ORC split generation failed with exception: org.apache.orc.FileFormatException: Malformed ORC file 的异常

原因:HDP 的 hive 中设置了默认存储格式为 ORC, 用 sqoop 增量方式导入 emp 表时,使用的是 textfile 的格式。所以查询时就出现这个问题。很奇怪,sqoop 可以指定 avro,parquet 等格式,唯独没有 ORC 格式。
Sqoop 遇到的问题的更多相关文章
- sqoop:Failed to download file from http://hdp01:8080/resources//oracle-jdbc-driver.jar due to HTTP error: HTTP Error 404: Not Found
环境:ambari2.3,centos7,sqoop1.4.6 问题描述:通过ambari安装了sqoop,又添加了oracle驱动配置,如下: 保存配置后,重启sqoop报错:http://hdp0 ...
- 安装sqoop
安装sqoop 1.默认已经安装好java+hadoop 2.下载对应hadoop版本的sqoop版本 3.解压安装包 tar zxvf sqoop-1.4.6.bin__hadoop-2.0.4-a ...
- Hadoop学习笔记—18.Sqoop框架学习
一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...
- Oozie分布式任务的工作流——Sqoop篇
Sqoop的使用应该是Oozie里面最常用的了,因为很多BI数据分析都是基于业务数据库来做的,因此需要把mysql或者oracle的数据导入到hdfs中再利用mapreduce或者spark进行ETL ...
- [大数据之Sqoop] —— Sqoop初探
Sqoop是一款用于把关系型数据库中的数据导入到hdfs中或者hive中的工具,当然也支持把数据从hdfs或者hive导入到关系型数据库中. Sqoop也是基于Mapreduce来做的数据导入. 关于 ...
- [大数据之Sqoop] —— 什么是Sqoop?
介绍 sqoop是一款用于hadoop和关系型数据库之间数据导入导出的工具.你可以通过sqoop把数据从数据库(比如mysql,oracle)导入到hdfs中:也可以把数据从hdfs中导出到关系型数据 ...
- Sqoop切分数据的思想概况
Sqoop通过--split-by指定切分的字段,--m设置mapper的数量.通过这两个参数分解生成m个where子句,进行分段查询.因此sqoop的split可以理解为where子句的切分. 第一 ...
- sqoop数据导出导入命令
1. 将mysql中的数据导入到hive中 sqoop import --connect jdbc:mysql://localhost:3306/sqoop --direct --username r ...
- Apache Sqoop - Overview——Sqoop 概述
Apache Sqoop - Overview Apache Sqoop 概述 使用Hadoop来分析和处理数据需要将数据加载到集群中并且将它和企业生产数据库中的其他数据进行结合处理.从生产系统加载大 ...
- sqoop使用中的小问题
1.数据库连接异常 执行数据导出 sqoop export --connect jdbc:mysql://192.168.208.129:3306/test --username hive --P - ...
随机推荐
- JS,JQUERY 常用笔记
JSON.parse() 转成数组对象 JSON.stringify() 转成JSON字符串
- DRF之REST规范介绍及View请求流程分析
编程是数据结构和算法的结合,而在Web类型的App中,我们对于数据的操作请求是通过url来承载的,本文详细介绍了REST规范和CBV请求流程. 编程是数据结构和算法的结合,小程序如简单的计算器,我们输 ...
- Python __getattribute__ vs __getattr__
# 例子在原来的基础上简化了一下,排除依赖和干扰,详细参见原项目 class UrlGenerator(object): def __init__(self, root_url): self.url ...
- leetcode811
class Solution { public: void SplitString(const string& s, vector<string>& v, const st ...
- Linux字符设备驱动实现
Linux字符设备驱动实现 要求 编写一个字符设备驱动,并利用对字符设备的同步操作,设计实现一个聊天程序.可以有一个读,一个写进程共享该字符设备,进行聊天:也可以由多个读和多个写进程共享该字符设备,进 ...
- C#使用windows服务定时调用api接口
使用VS创建windows服务项目: 创建好项目 会出现一个设计界面 右键弹出对话框 选择添加安装程序 名字什么的自己可以改: 项目目录: 打开项目中的ProjectInstaller.Design ...
- 2-1 gradle安装
因为Gradle是基于JVM的,所以一定要确保本机已经安装了JDK,我们可以通过java -version来验证一下是否已经安装了JDK. bin目录里面是两个可执行文件,一个是Windows下面的 ...
- 【HDU4303】Hourai Jeweled
题意 有一棵n个结点的树,每个结点都有一个值,没一条边都有一个颜色.如果某条路径上,相邻的边颜色不同,那么把这路径上所有的点的值加起来. 输出所有符合条件的路径上值的和. n<=300000. ...
- mfs实际操作教程
9. 实际操作案例 9.1 默认的垃圾回收时间是86400,存在一种可能性是垃圾还没回收完,你的存储容量就暴掉了.(案例提供者shinelian) 方案1:设置垃圾回收时间,积极监控存储容量. ...
- 使用python创建生成动态链接库dll
如今,随着深度学习的发展,python已经成为了深度学习研究中第一语言.绝大部分的深度学习工具包都有python的版本,很多重要算法都有python版本的实现.为了将这些算法应用到具体工程中,这些工具 ...