【发布时间】:2017-12-20 16:23:34
【问题描述】:
我需要将一些数据从 Oracle 移动到 Hive,我发现 Sqoop 可能是一个有用的工具。 问题是我需要处理查询并将结果插入目标数据库的表中。
Oracle 函数结果 --> HiveDB.myTable
我找到了这个命令:
sqoop import --connect jdbc:oracle:thin:@******:1522/** --username myUsername --password pwd --query '...' --hive-import --split-by "myID" --hive-table "hive-table" --hive-database "hive-database"
但我需要指定 --target-dir 强制,并且我在 HDFS 中没有写入权限。
仅当我使用 --query 时才如此,因为如果我使用 --table,则不需要 --target-dir。
有人知道是否有办法使用查询来避免 "--target-dir" 属性?
【问题讨论】:
-
您无法避免使用 target-dir 作为查询选项。当您说您没有写入 HDFS 的权限时,这不可能是真的,因为在表选项中,如果您选择忽略目标目录,SQOOP 仍将写入 HDFS,但在默认位置下。默认位置在 /user/hive/warehouse/
/ 下。试试这个位置作为目标目录。我确信数据会写在那里。 -
另一个选项是使用“--where”选项,它不需要--target-dir。如果您从单个表中导入,则此选项有效。
-
@Ramesh 我试图指定 --target-dir /user/hive/warehouse/
/ ,但我无法在文件夹 /user 中读/写/hive/仓库。 -
您能否将您运行的 SQOOP 命令添加到问题中。实际的命令,而不是您已经给出的示例。另外,您能否发布您收到的确切错误消息。
-
您可以访问 Hive 吗?