Kerberos身份验证错误 - Sqoop通过Hive从SQL导入HDFS

时间:2016-05-18 05:04:48

标签: java sql-server hive kerberos sqoop

我正在提供以下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)

给我一​​个喝啤酒的人!!!

1 个答案:

答案 0 :(得分:3)

我认为这是防火墙问题。

原因:如果您使用此端口号'1433',则必须在Windows防火墙中启用此端口访问。

解决方案:

运行此sqoop作业时,只需关闭Windows防火墙作业[或]为此端口启用防火墙规则'1433'

希望这对你有用。