Google Cloud Storage требует разрешения storage.objects.create при чтении из pyspark - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь прочитать pyspark DataFrame из Google Cloud Storage, но постоянно получаю сообщение об ошибке, что у учетной записи службы нет прав на storage.objects.create.Учетная запись не имеет прав записи, но она просто читает файлы паркет:

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 ***."
}

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Мы нашли проблему.Это связано с неявной функцией автоматического восстановления в разъеме GCS.Мы отключили это поведение, установив fs.gs.implicit.dir.repair.enable в false.

0 голосов
/ 28 декабря 2018

Пожалуйста, посмотрите этот вопрос: Почему Spark, работающий в Google Dataproc, сохраняет временные файлы на внешнем хранилище (GCS) вместо локального диска или HDFS при использовании saveAsTextFile?

Spark создаст временныйфайлы при выполнении некоторых действий.Я столкнулся с этим при извлечении данных из файлов GCS и преобразовании в определенный пользователем объект.Это также можно сделать при загрузке в BQ, поскольку запись в хранилище и последующая загрузка из GCS более эффективны.Вы можете увидеть изменения, которые сделали это здесь .

К сожалению, я не могу дать вам конкретной ссылки, потому что, насколько я знаю, проблема не задокументирована.Я постараюсь найти один для вас и обновлю свой ответ, если мне это удастся.

...