В этом случае корзина не имеет ничего общего с BigQuery, а скорее с Google Cloud Storage.Соединитель Spark на самом деле сначала передает данные в GCS в качестве промежуточной области (следовательно, поэтому требуется корзина), а , а затем в BigQuery.
Таким образом работает ряд соединителей, поскольку вы можетепрямой запрос из CSV в облачном хранилище через так называемый внешний источник данных в BigQuery.Это позволяет обрабатывать файл в облачном хранилище как таблицу и запрашивать его с помощью вычислений BigQuery, включая возможность автоматического определения схемы, и, как правило, является более быстрым способом получения данных ELT / ETL по сравнению с более сложными интеграциями с API BigQuery.
Чтобы устранить причину ошибки, которую вы видите, вам нужно назначить своей служебной учетной записи соответствующую роль разрешения в консоли в разделе IAM & Admin (наиболее вероятно Storage Object Viewer
).
Обновление: Вы также можете проверить разрешения для корзины, а также для самого объекта (файла), поскольку они могут переопределять разрешения роли IAM по умолчанию.Это можно сделать на вкладке разрешений в верхней части браузера Cloud Storage для корзины, а также в меню kabob (три точки) рядом с отдельными файлами, затем выберите параметр «Редактировать разрешения».Обратите внимание, что эти разрешения на уровне объектов на самом деле не являются частью IAM, а скорее Списки контроля доступа (ACL) - поэтому вначале они могут быть немного запутанными.
Еще одна вещьЯ пропустил ранее - сообщение об ошибке, которое вы включили, обычно содержит только имя корзины, но содержит полный путь.Я бы удостоверился, что вызов sqlContext.setBigQueryGcsBucket()
содержит только указанное в кавычках имя сегмента , а не , включая путь к файлу.
Как только вы преодолеете проблему с разрешениями для файла, вы можетенеобходимо добавить вызов к sqlContext.setBigQueryDatasetLocation("[your region code here]")
, где код региона - это правильный Азиатско-Тихоокеанский регион из этого списка (примечание: Азиатско-Тихоокеанский регион немного отличается; большинство инструментов используют многорегиональные строки "США"или "EU", но также примут более длинные имена для одного региона.