apache-spark - Spark 到 JDBC:Py4JJavaError - 连接已启动,但没有一个提供者
问题描述
我正在解决通过 JDBC 连接使用 Kerberos 身份验证在 PySpark 中写入数据帧时收到的错误,该连接使用 keytab 和 principal 在数据库属性参数中。
连接是通过 JDBC 使用 Kerberos 凭据成功启动的,因为我没有收到告诉 GSS 启动失败的错误,但我得到:
Illegal Argument Exception: requirement failed: JDBC connection initiated but not exactly one provider found which can handle it. Found active providers:
我运行的代码是:
df_spark.write.jdbc(url=db_props[‘url’], table=‘schema.table’, mode=‘overwrite’, properties=db_props)
仔细检查后,非法参数异常是 Py4JJavaError 源自 py4j 中的 java_gateway.py 模块。我找不到有关该错误的更多信息。感谢您的帮助,如果有人看到它或可以辨别正在发生的事情!
解决方案
这是一个普遍的问题,所以这是一个普遍的答案:
- 好,但旧文章:https ://datamountaineer.com/2016/01/15/spark-jdbc-sql-server-kerberos/
- 对于 Spark 3.1 - https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html
- 甚至是关于 JDBC 中 Kerberos 的拉取请求:https ://github.com/apache/spark/pull/24421
请尝试学习一些东西,尝试一些东西,然后提出更具体的问题。
推荐阅读
- r - 唯一 ID 的 NA 值
- swift - 如何在文件夹中快速获取所有文件的完整路径
- python - 如何从 POST 请求中获取 auth 参数?
- java - 从 ArrayList 访问数据
- javascript - 打破每个循环javascript
- python - Python,count字符串以'r'开头,不管有多少总是1
- performance - 为什么 _mm_pause() 可以显着提高性能?
- cloud - 将 HTTP 标头传递给 Cloud Foundry 应用程序
- python - For循环不多次调用函数
- python - 用于 MSAL 的简单 HTML Python CGI