hive读取关系型数据库数据

以oracle作为数据源

在oracle中建测试表并插入数据:

create table tmp.tmp
(
id varchar2(10),
name varchar2(20)
);

insert into tmp.tmp values('1','zhang');
commit;

在本地oracle客户端安装目录找到...\jdbc\lib\ojdbc6.jar,将此jar包加载到hdfs中:

hadoop fs -put ojdbc6.jar /tmp/
//赋权
hadoop fs -chmod 777 /tmp/ojdbc6.jar

登录hive cli,加载jar包:

add jar hdfs:///tmp/ojdbc6.jar

在hive中新建外部表,读取oracle表的数据:

CREATE EXTERNAL TABLE oracle_tmp
--hive表需比oracle表多一列,用来排序
(id STRING,name string,rownum string)
--序列化方式
STORED BY 'com.qubitproducts.hive.storage.jdbc.JdbcStorageHandler'
TBLPROPERTIES (
--关系型数据库类型
"qubit.sql.database.type" = "ORACLE",
--通过JDBC连接关系型数据库的url(不同数据库有不同的url格式)
"qubit.sql.jdbc.url" = "jdbc:oracle:thin:@//127.0.0.1:1521/orcl",
--关系型数据库驱动类名
"qubit.sql.jdbc.driver" = "oracle.jdbc.OracleDriver",
--在关系型数据库查询的sql语句,结果将返回hive表
"qubit.sql.query" = "select id,name from tmp",
--hive表的列与关系型数据库表的列进行匹配(可忽略)
"qubit.sql.column.mapping" = "id=id,name=name",
--关系型数据库用户
"qubit.sql.dbcp.username" = "tmp",
--关系型数据库密码
"qubit.sql.dbcp.password" = "tmp");

读取hive外部表数据结果如下:

至此hive能通过外部表读取oracle数据了。

在记录该方法时,测试环境hive仅支持DB2和oracle两个关系型数据库。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值