You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Dataproc PySpark-BigQuery Connector写入10万行数据极慢问题排查

问题:Spark BigQuery Connector间接写入GCS性能异常缓慢

我尝试通过Spark BigQuery Connector将10万行数据写入BigQuery,每行包含:

  • 2个约200-250词的长字符串
  • 多个单词语符串
  • 少量深度最多为2的字典类型数据
    总计35个字段。数据处理过程几乎瞬间完成,但写入BigQuery时耗时长达50分钟。

我的Spark集群配置为5个工作节点,每个节点配备32GB内存、8核CPU和500GB SSD,总计160GB内存、40核CPU。经排查,由于采用间接写入方式,数据会先写入GCS再由BigQuery读取,其中BigQuery读取仅耗时约20秒,说明GCS写入操作占用了近50分钟。这种情况显然不正常,因为我用家用电脑通过pandas执行相同写入操作耗时远低于此。

我的Spark Session初始化代码如下:

spark = SparkSession \
    .builder \
    .appName('extract-skills') \
    .config('spark.jars.packages', 'com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.26.0,com.johnsnowlabs.nlp:spark-nlp_2.12:4.1.0') \
    .config('spark.executor.memory', '25g') \
    .config('spark.executor.cores', '8') \
    .config('spark.driver.memory', '12g') \
    .config('spark.executor.instances', '5') \
    .config("spark.driver.maxResultSize", "0") \
    .config("spark.kryoserializer.buffer.max", "2000M")\
    .getOrCreate()

写入代码如下:

result. \
    write.format('bigquery') \
        .mode("overwrite") \
        .option("writeMethod", "indirect") \
        .option("temporaryGcsBucket","my_bucket") \
        .option('table', 'my_project.my_dataset.my_table') \
        .save()

我是否遗漏了什么配置?目前无法找到性能瓶颈,且由于需要写入分区表,无法将writeMethod设置为direct。

内容的提问来源于stack exchange,提问作者FairPluto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:20:52