【问题标题】:Storing Oracle data into hadoop layer without using Scoop在不使用 Scoop 的情况下将 Oracle 数据存储到 hadoop 层
【发布时间】:2015-12-08 11:17:30
【问题描述】:

通过以下脚本,我尝试将 oracle 输出保存到 hadoop 空间中的文本文件中。

#!/bin/bash
DBUSER='scott'
DBUSERPASSWORD='tiger'
DB='oracle'

sqlplus -s <<EOF
${DBUSER}/${DBUSERPASSWORD}@${MYDB}
set linesize 32767
set feedback off
set heading off

select * from dual;

EOF

hive -f HiveQueries.hql

脚本是从 Hive 命令提示符调用的,有没有办法将上述查询的输出保存在 hive 目录中作为文件,我知道我的 oracle 服务器不同,需要更改编码。 但是我不想使用 sqoop,而是想将输出文件保存到 hadoop

【问题讨论】:

  • 1. 设置 SQL*Plus 以将文本转换为 UTF-8 并使用特定的列分隔符,例如TAB 和 spool 输出到本地文件(参见 Oracle 文档...)2. hdfs dfs -moveFromLocal [spool.out] [some HDFS directory] 3. 创建一个 EXTERNAL Hive位于该目录上的表,使用带有适当分隔符的 Text SerDe,并可选择跳过每个文件上的 N 条标头记录 4. 享受!

标签: oracle hadoop hive sqoop


【解决方案1】:

当您可以使用 JDBC 连接将 Oracle 数据直接“泵送”到 Hive 表中时,为什么要使用命令行实用程序(顺便说一下,这是一个需要许可费的胖 Oracle 客户端)和文本文件??

https://github.com/qubole/Hive-JDBC-Storage-Handler

【讨论】:

  • 似乎是一个不错的选择,但我来自测试团队,所以没有太多的实现访问权限......而且是 java 和脚本的新手......所以有什么方法可以从命令中实现这一点行吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 2013-05-31
  • 2021-08-22
  • 2018-03-08
  • 2012-01-19
  • 2011-02-05
相关资源
最近更新 更多