【发布时间】: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. 享受!