ans*_*hed 3 azure apache-spark pyspark azure-postgresql azure-databricks
我正在尝试将 pyspark 数据帧写入 Azure Postgres Citus(超大规模)。我正在使用最新的 Postgres JDBC 驱动程序,并尝试在 Databricks Runtime 7、6、5 上编写。
df.write.format("jdbc").option("url","jdbc:postgresql://<HOST>:5432/citus?user=citus&password=<PWD>&sslmode=require" ).option("dbTable", table_name).mode(method).save()
这是运行上述命令后得到的结果
org.postgresql.util.PSQLException: SSL error: Received fatal alert: handshake_failure
我已经尝试过 URL 中的不同参数,也尝试过该选项,但到目前为止还没有运气。但是,我可以使用本地计算机连接到此实例,并使用 psycopg2 在 databricks 驱动程序/笔记本上连接到此实例。Azure Postgres Citus 和 Databricks 都位于同一区域,并且 Azure Postgres Citus 是公共的。
它通过覆盖驱动程序和执行程序的 java 安全属性来工作
\nspark.driver.extraJavaOptions -Djava.security.properties= \nspark.executor.extraJavaOptions -Djava.security.properties=
解释:
\n实际情况是,JVM 的 \xe2\x80\x9csecurity\xe2\x80\x9d 变量默认读取以下文件(/databricks/spark/dbconf/java/extra.security),并且在此文件中默认情况下禁用一些 TLS 算法。这意味着,如果我编辑此文件并将适用于 PostGres citus 的 TLS 密码替换为也应该适用的空字符串。
\n当我将此变量设置为执行器 (spark.executor.extraJavaOptions) 时,它不会更改 JVM 中的默认变量。对于覆盖的驱动程序来说,不会发生同样的情况,因此它开始工作。
\n注意:我们需要在读取变量之前编辑此文件,因此初始化脚本是实现此目的的唯一方法。
\n| 归档时间: |
|
| 查看次数: |
6117 次 |
| 最近记录: |