使用sqoop往hdfs中导入数据供hive使用
sqoop import -fs hdfs://x.x.x.x:8020 -jt local --connect "jdbc:oracle:thin:@x.x.x.x:1521:testdb" --username user2 --password user2 --verbose --as-textfile --delete-target-dir -m 1 --query "select * from test_tb
where \$CONDITIONS" --target-dir /tmp/test --null-string '\\N' --null-non-string '\\N' --fields-terminated-by '\001' --lines-terminated-by '\012' --hive-drop-import-delims
此语句将从oracle数据库中查出的内容放到指定的hdfs路径下,此时手动设置列换行符和行换行符,而不是使用 --hive-import 参数,是因为指定该参数之后它还会让你指定 --hive-table参数。而指定 --hive-import 和 --hive-table 之后,sqoop在将查询结果导入到hdfs中之后,会尝试调用执行sqoop的这台机器上的hive命令,然后执行建表语句以及 load data inpath 的语句将导入到hdfs中的内容移动到 hive对应的表的目录下。
但是如果hive开启了kerberos 认证,hive命令是没有权限操作hive的(记得是这样)。所以我们用以上语句只是将数据导入到hdfs中,后续的load data inpath 可以使用beeline等命令执行。而之所以指定 --hive-drop-import-delims,是因为从oracle中查出的值中可能包含hive默认的列分隔符和行分隔符,所以只能做出妥协,使用该参数将值中的列分隔符和行分隔符直接去掉。
列分隔符还好,列分隔符的ascii码是 001(八进制),含义是SOH(start of headline),是个不可见字符,平时文本处理时基本不会用到这个字符。但是行分隔符的ascii码是012(八进制),含义是 line feed/new line,这个在平时处理文本时会经常遇到。
我们设想一种处理方式,那就是模仿csv文件,列分隔符就继续使用 \001,行分隔符继续使用 \012,如果值中有换行,就enclosed by double quote。但似乎看起来 hive的load data inpath 不支持这么高级的解析方式。关于csv的格式定义和hive的load data inpath 详细的处理方式待去查询对应的文档,此处只是提一下。
使用sqoop往hdfs中导入数据供hive使用的更多相关文章
- sqoop从hdfs 中导出数据到mysql
bin/sqoop export \ --connect "jdbc:mysql://mini1:3306/study?useUnicode=true&characterEncodi ...
- 第3节 sqoop:4、sqoop的数据导入之导入数据到hdfs和导入数据到hive表
注意: (1)\001 是hive当中默认使用的分隔符,这个玩意儿是一个asc 码值,键盘上面打不出来 (2)linux中一行写不下,可以末尾加上 一些空格和 “ \ ”,换行继续写余下的命令: bi ...
- 《sqoop实现hdfs中的数据导出至mysql数据库》
报错Access denied for user 'root'@'localhost' (using password: YES) 参考一 参考二 登陆mysql时,root密码的修改 参考帖子h ...
- 向Hive中导入数据的方式
一.Hive客户端:根据数据源不同划分 1.从本地文件系统中导入数据到hive表中: load data local inpath "path" [OVERWRITE] into ...
- sqoop工具从oracle导入数据2
sqoop工具从oracle导入数据 sqoop工具是hadoop下连接关系型数据库和Hadoop的桥梁,支持关系型数据库和hive.hdfs,hbase之间数据的相互导入,可以使用全表导入和增量导入 ...
- 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟
使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 Sqoop 大数据 Hive HBase ETL 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 ...
- sqoop导入数据到hive
1.1hive-import参数 使用--hive-import就可以将数据导入到hive中,但是下面这个命令执行后会报错,报错信息如下: sqoop import --connect jdbc:my ...
- 使用sqoop从mysql导入数据到hive
目录 前言 一.使用的导入命令 二.遇到的问题及解决 1. 用文本字段进行分区的问题 2. Hadoop历史服务器Hadoop JobHistory没开启的问题 3. 连接元数据存储数据库报错 4 ...
- (MySQL里的数据)通过Sqoop Import HDFS 里 和 通过Sqoop Export HDFS 里的数据到(MySQL)(五)
下面我们结合 HDFS,介绍 Sqoop 从关系型数据库的导入和导出 一.MySQL里的数据通过Sqoop import HDFS 它的功能是将数据从关系型数据库导入 HDFS 中,其流程图如下所示. ...
随机推荐
- arcengine右键实现new group layer的功能
没有找到相关方法,但是有对图层组进行操作的资料. https://gis.stackexchange.com/questions/43620/how-do-i-reach-a-layer-inside ...
- Chap4:区块链的应用技术[《区块链中文词典》维京&甲子]
- Xcode工程编译错误:“Cannot assign to 'self' outside of a method in the init family”
#import <Foundation/Foundation.h> @interface EOCRectangle : NSObject<NSCoding> @property ...
- [X][xrandr][archlinux] 手动调整显示器分辨率
有一些时候,电脑并不能正确的识别出显示器的最大分辨率,这有可能是软件的原因,硬件的原因,显示器的原因,VGA线的原因等其他原因. 我遇到的情况,是开机时候连着VGA的话,就可以正确识别.如果使用中间进 ...
- Flash builder 、flash cs6、 as 3.0研究
1.Flash/Actionscript3 载入资源文件方法考 http://zengrong.net/post/1107.htm 2.使用Flash Professional CS5和Flash B ...
- Java ServiceLoader(SPI)学习
1. 几个不错的关于ServiceLoader的文章,大家可以先参考一下 1) http://www.myexception.cn/program/1355384.html 这篇的后面的问题分析不错 ...
- MovieLens电影数据分析
下载数据包 链接:https://grouplens.org/datasets/movielens/1m/ 解压: 四个文件分别是数据介绍,电影数据表,电影评分表,用户表 进行电影数据分析 进入ipy ...
- vue中watch的详细用法
在vue中,使用watch来响应数据的变化.watch的用法大致有三种.下面代码是watch的一种简单的用法: <input type="text" v-model=&quo ...
- ActiveMQ整合spring、同步索引库
1. Activemq整合spring 1.1. 使用方法 第一步:引用相关的jar包. <dependency> <groupId>org.springframework ...
- 预见2019吴晓波年终秀演讲PPT整理
在2018年倒数的第二天12月30日晚上7点在广东珠海横琴拉开帷幕,吴晓波以一场“预见2019”的年终盛典,和大家一起回望即将告别的跌宕一年,细数过去的焦虑和改变,瞭望未来的激越和走向.下面我们一起来 ...