我正在提供以下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:No 提供的有效凭据(机制级别:无法找到任何凭据 Kerberos tgt)
给我一个喝啤酒的人!!!
答案 0 :(得分:3)
我认为这是防火墙问题。
原因:如果您使用此端口号'1433',则必须在Windows防火墙中启用此端口访问。
解决方案:
运行此sqoop作业时,只需关闭Windows防火墙作业[或]为此端口启用防火墙规则'1433'
希望这对你有用。