SQOOP Load Data from Oracle to Hive Table
sqoop import -D oraoop.disabled=true \ --connect "jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=HOSTNAME)(port=PORT))(connect_data=(service_name=SERVICE_NAME)))" \ --username USERNAME --table TABLE_NAME --null-string '\\N' --null-non-string '\\N' \ --hive-import --hive-table HIVEDB.HIVETALBENAME \ --num-mappers --verbose --password PWD --hive-drop-import-delims --hive-overwrite --fetch-size
-D is not the parameter for sqoop, it is used for hadoop.
oraoop.disabled=true
If not set this parameter, the command report a issue: table or view does not exists.
Oraoop is a special plugin for sqoop that provides faster access to Oracle's RDBMS by using custom protocols that are not available publicly. Quest software partnered with Oracle to get those protocols, implemented them and created Oraoop.
In our test environment, without this parameter setting, it works fine. For another environment, encounter this issue, before this, I see one log message is : it can't be recognized a valid thin url. Maybe the driver issue .
Another thing need to take care is , you 'd better write TABLE_NAME(VIEW) AND username in UPPER CASE. Or else you may encounter same issue: table or view not exists.
--hive-drop-import-delims
This parameter used to address the known issue, when your fields in the RDBMS table has new line (\r \n or special char such as \001) in the content.
It will break the hive rule. Hive use \001 as default field separator and \n as the row terminator in default.
But if you specify the fields separator or row terminator by yourself, hive will report a error. Hive now just support \n as the row terminator. So you can replace or drop the special char or \r\n in the fields.
--hive-overwrite
This will overwrite the data in the hive table
--fetch-size
This parameter 's default value is 1000.
One time, when we load a width view, has about 80 columns. The sqoop command report a error: out of memory .
The java file not generated now. I don't know why, but this error occurs before the fetch size setting, so I change this.
The root cause may need get more information from source code .
--null-string '\\N' --null-non-string '\\N'
For this parameter, the hive will parse NULL in RDBMS to string 'null', with this parameter, it will keep null in hive table.
If the sqoop command will generate the hadoop jar file in temp path, and then execute the mapreduce job.
First , it will load data to HDFS, then create table for hive, then use load command load data from HDFS to datawarehouse folder.
If the command execute successfully, it will clean the staging file.
If it fails when load data to hive or create hive table. The hdfs folder and file will keep in the HDFS.
If you rerun the same command again, it will fail, report the output directory has exists. So just drop it or load the data by self.
If you use --query (-e) , use free query to load data.
Demo : --query "select *from table where \$conditions", in double quote , you should add \, in single quote, not needed for this.
And you should add parameter --target-dir /hdfspath , if you use --query.
when load data from rdbms to hive, if you let the sqoop create the table for you. you will find the integer type will convert to double.
so you need do something for this. please take care.
SQOOP Load Data from Oracle to Hive Table的更多相关文章
- 使用sqoop从mysql导入数据到hive
目录 前言 一.使用的导入命令 二.遇到的问题及解决 1. 用文本字段进行分区的问题 2. Hadoop历史服务器Hadoop JobHistory没开启的问题 3. 连接元数据存储数据库报错 4 ...
- mysql load data infile的使用 和 SELECT into outfile备份数据库数据
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE t ...
- LOAD DATA INFILE – performance case study
转: http://venublog.com/2007/11/07/load-data-infile-performance/ I often noticed that people complain ...
- LOAD DATA INFILE Syntax--官方
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_n ...
- mysql 的load data infile要使用
LOAD DATA INFILE从文本文件中读出的声明以极高的速度到表. 1.基本语法 LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'fi ...
- mysql导入数据load data infile用法整理
有时候我们需要将大量数据批量写入数据库,直接使用程序语言和Sql写入往往很耗时间,其中有一种方案就是使用MySql Load data infile导入文件的形式导入数据,这样可大大缩短数据导入时间. ...
- mysql 开发进阶篇系列 50 表的数据导入(load data infile,mysqlimport )
一.概述 上篇讲到的表的数据导出(select .. into outfile 或者mysqldump),这篇继续讲表的数据导入,导入也同样有二个方法,分别是load data infile... 和 ...
- load data妙用
load变量和用户变量的巧妙结合,实现灵活导入字段列(NO.1) LOAD DATA INFILE 'file.csv' INTO TABLE dados_meteo (@var1, @var2) S ...
- MySQL基础之---mysqlimport工具和LOAD DATA命令导入文本文件
1.mysqlimport工具的使用 看一下命令的使用方法: shell > mysqlimport -u root -p [--LOCAL] DBname File [option] --f ...
随机推荐
- 在Hdsi2.0 SQL的注入部分抓包分析语句
在Hdsi2.0 SQL的注入部分抓包分析语句 恢复cmd ;insert tb1 exec master..xp_cmdshell''net user ''-- ;exec master.dbo.s ...
- GWYAlertSelectView 选择收货地址和选择联系人
iOS 开发在app内(特别是在类似购物和旅游类)经常会用到选择,添加联系人和收货地址,而且经常都是在跳转界面,很是麻烦,今天我就自己封装了一个类似弹出视图的代码,方便了很多!demo地址: http ...
- 小白初学ABP框架,着实累啊
这几天在学习ABP相关的知识AutoMapper ,AngularJS,Less,DI(dependencyInjection),EntityFramework code first以及相关NuGet ...
- .NET Core Roadmap
This post was written by Scott Hunter. It has been about two weeks since we shipped .NET Core / ASP. ...
- Follow me to learn what is Unit of Work pattern
Introduction A Unit of Work is a combination of several actions that will be grouped into a transact ...
- 管理系统的前端解决方案:Pagurian V1.3发布
Pagurian 一个管理系统的前端解决方案, 致力于让前端设计,开发,测试,发布更简单. 功能简介 Pagurian 适用于Web管理级的项目 基于Sea.js遵循CMD规范,友好的模块定义,使业务 ...
- SAP内存/ABAP内存/共享内存区别
(1).读取和使用方法不同SAP内存使用SET/GET parameters方法:SET PARAMETER ID 'MAT' field p_matnr.GET PARAMETER ID 'MAT' ...
- Android项目实战(十一):moveTaskToBack(boolean ) 方法的使用
当你开发的程序被按后退键退出的时候, 你肯定不想让他就这么被finish()吧,那么就想把程序退置到后台就可. (类似于PC端,你关闭一个浏览器和你最小化一个浏览器的区别) 参看方法:public b ...
- [linux]CentOS无法使用epel源
[linux]CentOS无法使用epel源 问题的产生与解决 作者作为Android应用开发者,对linux的接触一直是ubuntu为主,但是有一个用于科学上网的vps,由于内存只有64M,所以使用 ...
- Android-adb 常用命令 和 sqlite
Android开发环境中,ADB是我们进行Android开发经常要用的调试工具,它的使用当然是我们Android开发者必须要掌握的. ADB概述 Android Debug Bridge,Androi ...