【发布时间】:2016-05-18 05:04:48
【问题描述】:
我给出以下 Sqoop 命令:
sqoop import \
--connect "jdbc:sqlserver://ServerName:1433;databaseName=TESTDB;integratedSecurity=true" \
--driver com.microsoft.sqlserver.jdbc.SQLServerDriver \
--table dbo.test_table \
--username hduser \
-P \
--hive-import \
--create-hive-table \
--hive-table test_table
并得到以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException:此驱动程序不是 配置为集成身份验证。
java.lang.UnsatisfiedLinkError: java.library.path 中没有 sqljdbc_auth
编辑
上述错误的解决方法是在连接字符串中添加authenticationScheme=JavaKerberos。
例如:
sqoop import \
--connect "jdbc:sqlserver://server_name:1433;database=db_name;integratedSecurity=true;authenticationScheme=JavaKerberos" \
--driver com.microsoft.sqlserver.jdbc.SQLServerDriver \
--table Table_Name \
--username username \
-P \
--target-dir /path/to/destination \
--columns "col1, col2, col3" \
--split-by col1 -m 4
现在我可以列出 SQL 服务器上的数据库和表了。到目前为止一切顺利。
但是,我收到了 Kerberos 身份验证错误!!!
引起:java.security.PrivilegedActionException:GSSException:否 提供的有效凭据(机制级别:未能找到任何 Kerberos tgt)
伙计们,给我来杯啤酒!!!
【问题讨论】:
-
这是一个 Linux 服务器。在连接字符串中添加了 authenticationScheme=JavaKerberos。现在收到新错误,例如:检测到有缺陷的令牌。(机制级别:AP_REP 令牌 ID 不匹配!)
标签: java sql-server hive kerberos sqoop