使用Spark BigQuery Connector读取数据遇org/conscrypt/CryptoUpcalls类缺失求助
解决Spark BigQuery Connector读取时缺失
org/conscrypt/CryptoUpcalls类的问题 这个错误源于读取BigQuery数据的流程依赖Conscrypt加密库,但该库未被正确加载,而写入流程未触发该依赖所以能正常执行。以下是具体解决步骤:
直接补充Conscrypt依赖包
下载与你的Spark、Connector版本兼容的Conscrypt Uber jar包(例如conscrypt-openjdk-uber-2.5.2.jar),提交Spark任务时通过--jars参数将其加入classpath:spark-submit --jars spark-bigquery-with-dependencies_2.12-0.23.2.jar,conscrypt-openjdk-uber-2.5.2.jar your-spark-job.jar若用Maven/Gradle管理项目,直接添加依赖:
Maven:<dependency> <groupId>org.conscrypt</groupId> <artifactId>conscrypt-openjdk-uber</artifactId> <version>2.5.2</version> </dependency>Gradle:
implementation 'org.conscrypt:conscrypt-openjdk-uber:2.5.2'排查依赖冲突
部分场景下,Spark环境中其他加密类依赖会与Conscrypt冲突,导致类加载失败:- 执行
spark-submit --verbose查看任务依赖加载日志,定位与conscrypt相关的冲突项 - Maven项目可运行
mvn dependency:tree生成依赖树,排除冲突的依赖模块
- 执行
确认Connector与Spark版本兼容性
即使更换过jar包,仍需确保版本匹配:- 0.23.x版本Connector适配Spark 3.1.x
- 若使用Spark 3.2+,建议升级至0.24.x或更高版本Connector,新版本可能已修复依赖缺失问题
Dataproc环境适配(若在GCP Dataproc运行)
若在Dataproc集群执行任务,确保集群已安装bigquery-connector组件,或通过初始化动作安装最新版本的Connector及依赖。也可在集群创建时指定:--properties spark.jars.packages=com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.23.2,org.conscrypt:conscrypt-openjdk-uber:2.5.2让集群自动拉取所需依赖
内容的提问来源于stack exchange,提问作者praneethh
相关产品推荐
相关产品推荐

