pyspark - 从 pyspark 读取时,Google Cloud Storage 需要 storage.objects.create 权限

标签 pyspark google-cloud-platform apache-spark-sql google-cloud-storage airflow

我正在尝试从 Google Cloud Storage 读取 pyspark DataFrame,但我不断收到错误消息,指出服务帐户没有 storage.objects.create 权限。该帐户没有 WRITER 权限,但它只是读取 parquet 文件:

spark_session.read.parquet(input_path)

18/12/25 13:12:00 INFO com.google.cloud.hadoop.repackaged.gcs.com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl: Repairing batch of 1 missing directories.
18/12/25 13:12:01 ERROR com.google.cloud.hadoop.repackaged.gcs.com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl: Failed to repair some missing directories.
com.google.cloud.hadoop.repackaged.gcs.com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "***.gserviceaccount.com does not have storage.objects.create access to ***.",
    "reason" : "forbidden"
  } ],
  "message" : "***.gserviceaccount.com does not have storage.objects.create access to ***."
}

最佳答案

我们发现了问题。这是由于 GCS 连接器中的隐式自动修复功能。我们通过设置 fs.gs.implicit.dir.repair.enable 禁用了此行为至 false .

关于pyspark - 从 pyspark 读取时,Google Cloud Storage 需要 storage.objects.create 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53922777/

相关文章:

dataframe - 重命名 PySpark DataFrame 聚合的列

java - 连接 2 个 Spark 数据帧,以列表形式获取结果

google-app-engine - 为具有自定义域 DNS 的 Google App Engine 应用程序配置 SSL 证书

apache-spark - 尝试在 PySpark DataFrame 中创建具有最大时间戳的列

python - 如何在 PySpark 中创建 merge_asof 功能?

apache-spark - PySpark "explode"列中的字典

google-cloud-platform - 为什么我的Container Builder构建失败并显示“执行构建步骤后找不到一个或多个图像”

asp.net - GCloud - 将 App Engine Flex 连接到其他项目中的 Cloud SQL

apache-spark - 用户定义的函数要应用于 PySpark 中的 Window?

python - 为什么我的简单Spark应用程序运行这么慢?