我正在尝试使用sqoop将数据导入hive。当我从一个用户尝试过这个脚本时,它起了作用,但是从另一个用户那里,它失败了。
我的脚本如下:
import
--connect
jdbc:oracle:thin:@host:port/sid
--compression-codec
org.apache.hadoop.io.compress.SnappyCodec
--username
user
--password
pas
--query
query
--map-column-java
col=String
-hive-import
--hive-overwrite
--hive-drop-import-delims
--hive-database
db
--hive-table
table
--as-parquetfile
--split-by
col
--delete-target-dir
--target-dir
table
-m
1
据我了解,此脚本中没有任何地方执行数据库创建。我试过它,有没有hive表已经存在。
为什么会抛出此错误(如标题中所述)?
答案 0 :(得分:0)
此脚本中没有任何地方执行数据库创建
它发生了。在您的以下脚本行中:
--hive-database
db
参考Sqoop documentation。 特别是这一行:
将通过在运行Sqoop的机器上调用已安装的配置单元来执行该脚本
内部Sqoop会调用hive来执行导入。将使用hive的默认认证机制。这说明为什么它适用于在hive中具有A
权限的用户create database
,但在可能没有该权限的用户B
调用时失败。
通过调用hive命令行进行验证,并尝试运行CREATE DATABASE
语句。