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

标签 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: 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/

相关文章:

hadoop - 从另一个目录启动时 Hive 不显示表

java - 使用正则表达式提取特定模式

sql-server - mssql表多外键级联

java - 为什么这个赋值不需要显式转换?

sql - String_Split 多列

sql-server - FREETEXT 搜索 - 根据匹配程度对结果进行排序

java - Spark DataFrame 和 HiveSQL - 删除列不起作用?

hadoop - Oozie Hive 操作使用 -i init 脚本

java - Apache axis2 wsdl2java异常: unknown protocol: d

java - 流中收集器中的比较器导致类型推断问题?