如何在spark-bigquery-connector中配置读取超时参数?
Spark BigQuery连接器读取超时配置方案
spark-bigquery-connector已原生暴露超时、重试相关的配置参数,无需手动构造BigQueryClient,可通过以下两种方式配置:
1. 全局生效(SparkConf层级配置)
直接在原有SparkConf配置中新增以下参数即可,对所有BigQuery读取任务生效:
// 新增超时、重试配置 sparkConf.set("spark.datasource.bigquery.timeout", "300000") // 总超时5分钟,单位为毫秒 sparkConf.set("spark.datasource.bigquery.retry.max-attempts", "10") // 最大重试次数 sparkConf.set("spark.datasource.bigquery.retry.delay-multiplier", "1.5") // 重试延迟乘数 // 原有配置保持不变 sparkConf.set("viewsEnabled", true) sparkConf.set("parentProject", "<parentProject>") sparkConf.set("materializationProject", "<materializationProject>") sparkConf.set("materializationDataset", "<materializationDataset>") sparkConf.set("credentials", "<>")
2. 单任务生效(读取时动态配置)
如果不需要全局修改配置,仅需要调整单个任务的超时参数,可在调用load方法前通过option指定配置:
sparkSession.read .format("com.google.cloud.spark.bigquery") .option("timeout", "300000") .option("retry.max-attempts", "10") .option("retry.delay-multiplier", "1.5") .load("data-set") .select("col1", "col 2") .show(20)
老版本连接器兼容方案
如果你使用的是0.24.0之前的旧版本连接器,不支持上述datasource级配置,可在Spark提交命令中添加JVM级别的网络超时参数:
spark-submit \ --conf spark.driver.extraJavaOptions="-Dsun.net.client.defaultConnectTimeout=300000 -Dsun.net.client.defaultReadTimeout=300000" \ --conf spark.executor.extraJavaOptions="-Dsun.net.client.defaultConnectTimeout=300000 -Dsun.net.client.defaultReadTimeout=300000" \ # 其余提交参数保持不变
以上配置对元数据读取、数据读取两个阶段的超时都生效,可覆盖你异常栈中getTable阶段触发的超时场景。
内容的提问来源于stack exchange,提问作者Anoop Deshpande
相关产品推荐
相关产品推荐

