如何在Databricks中用PySpark配置Oracle原生网络加密连接
在Databricks中用PySpark通过JDBC连接Oracle并启用原生网络加密
要启用Oracle原生网络加密,你需要在JDBC连接中添加Oracle特定的加密参数,以下是两种修改方式:
方式一:将加密参数附加到JDBC URL中
修改你的Oracle URL,在末尾拼接加密相关参数,示例如下:
# 假设原URL为 jdbc:oracle:thin:@//your-oracle-host:1521/your-service-name encrypted_url = "jdbc:oracle:thin:@//your-oracle-host:1521/your-service-name?oracle.net.encryption_client=REQUIRED&oracle.net.encryption_types_client=(AES256)&oracle.net.crypto_checksum_client=REQUIRED&oracle.net.crypto_checksum_types_client=(SHA256)" spark.read \ .format("jdbc") \ .option("url", encrypted_url) \ .option("query", <My Query>) \ .option("fetchSize", "100000") \ .option("user", <My Oracle_User>) \ .option("password", <My Oracle_Password>) \ .option("driver", "oracle.jdbc.driver.OracleDriver") \ .option("timeout", timeout_seconds) \ .load()
方式二:通过单独的JDBC选项添加加密参数
在原代码中新增加密相关的.option配置:
spark.read \ .format("jdbc") \ .option("url", <My Oracle_Url>) \ .option("query", <My Query>) \ .option("fetchSize", "100000") \ .option("user", <My Oracle_User>) \ .option("password", <My Oracle_Password>) \ .option("driver", "oracle.jdbc.driver.OracleDriver") \ .option("timeout", timeout_seconds) \ # 强制启用网络加密 .option("oracle.net.encryption_client", "REQUIRED") \ # 指定加密算法(需与Oracle服务器配置一致) .option("oracle.net.encryption_types_client", "(AES256)") \ # 可选:强制启用校验和,增强数据完整性 .option("oracle.net.crypto_checksum_client", "REQUIRED") \ .option("oracle.net.crypto_checksum_types_client", "(SHA256)") \ .load()
关键注意事项
- 确保Oracle服务器端已配置匹配的加密策略,否则连接会失败
- 加密算法需与服务器端配置一致,比如服务器使用
AES128,客户端也要对应调整 - 建议使用Oracle 12c及以上版本的JDBC驱动,确保支持这些加密参数
- 如果Databricks集群未预装Oracle JDBC驱动,需先上传驱动jar包并配置为集群依赖
内容的提问来源于stack exchange,提问作者Tal
相关产品推荐
相关产品推荐

