Azure Databricks写入BigQuery报错:GoogleHadoopFileSystem未找到
解决Azure Databricks写入BigQuery时的GoogleHadoopFileSystem找不到问题
1. 安装集群依赖组件
报错核心是缺少GCS Hadoop连接器的JAR包——Spark写入BigQuery时会先将数据临时存到GCS再导入,必须依赖该组件。你可以通过两种方式安装:
- 集群初始化脚本:在集群创建阶段添加初始化脚本,或在笔记本中执行以下命令(仅当前会话生效,集群重启后需重新执行):
注意选择与Databricks集群Hadoop版本匹配的连接器版本,Databricks 10.x及以上版本通常适配Hadoop3系列连接器。%sh wget -P /databricks/jars https://storage.googleapis.com/hadoop-lib/gcs/gcs-connector-hadoop3-2.2.5.jar - Maven库安装:直接在Databricks集群的「库」页面添加Maven坐标:
com.google.cloud.bigdataoss:gcs-connector:hadoop3-2.2.5,集群会自动下载并管理该依赖。
2. 配置SparkSession参数
在笔记本开头添加Spark会话配置,指定GCS文件系统实现类和认证信息:
from pyspark.sql import SparkSession spark = SparkSession.builder \ .config("spark.hadoop.fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem") \ .config("spark.hadoop.fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS") \ .config("google.cloud.auth.service.account.json.keyfile", "/dbfs/path/to/your/service-account-key.json") \ .getOrCreate()
确保服务账号密钥文件已上传到DBFS,且该账号拥有BigQuery写入权限和临时GCS桶的读写权限。
3. 写入BigQuery时补充必要参数
执行写入操作时必须指定临时GCS桶(用于中转数据),示例代码如下:
df.write.format("bigquery") \ .option("table", "your-project-id.your-dataset-id.your-table-id") \ .option("temporaryGcsBucket", "your-temporary-gcs-bucket-name") \ .mode("append") # 可按需替换为"overwrite"/"ignore"/"errorifexists" .save()
临时GCS桶需要提前在Google Cloud中创建,且服务账号对该桶有读写权限。
内容的提问来源于stack exchange,提问作者jakeis
相关产品推荐
相关产品推荐

