我给出以下 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: This driver is not configured for integrated authentication.
java.lang.UnsatisfiedLinkError: no sqljdbc_auth in java.library.path
编辑
上述错误的解决方案是将 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 Server 上的数据库和表。到目前为止一切都很好。
但是,我收到了 Kerberos 身份验证错误!!!
Caused by: java.security.PrivilegedActionException: GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)
给我一杯啤酒!!!
最佳答案
我认为这是防火墙问题。
原因:如果您使用此端口号“1433”,则必须在 Windows 防火墙中启用此端口访问。
解决方案:
运行此 sqoop 作业时关闭 Windows 防火墙 [或者] 启用此端口“1433”的防火墙规则
希望这对您确实有帮助。
关于java - Kerberos 身份验证错误 - Sqoop 通过 Hive 从 SQL 导入 HDFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290700/