Ошибка получения токена доступа с сервера метаданных по адресу: http://metadata/computeMetadata/v1/instance/service-accounts/default/token

Я пробовал использовать ключевой файл p12, он успешно работает, и мне удалось получить данные из корзины gcs. Но с ключевым файлом json sparksession не получает значения конфигурации json. Вместо этого он использует метаданные по умолчанию. Я использую maven и IntelliJ для разработки. Ниже приведен фрагмент кода

def main(args: Array[String]): Unit = {
System.out.println("hello gcp connect")
System.setProperty("hadoop.home.dir", "C:/hadoop/")
val sparkSession =
  SparkSession.builder()
    .appName("my first project")
    .master("local[*]")
    .config("spark.hadoop.fs.gs.project.id", "shaped-radius-297301")
    .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("spark.hadoop.google.cloud.project.id", "shaped-radius-297301")
    .config("spark.hadoop.google.cloud.auth.service.account.enable", "true")
    .config("spark.hadoop.google.cloud.auth.service.account.email", "[email protected]")
    .config("spark.hadoop.google.cloud.service.account.json.keyfile", "C:/Users/shaped-radius-297301-5bf673d7f0d2.json")
    .getOrCreate()
    sparkSession.sparkContext.addFile("gs://test_bucket/sample1.csv")
    sparkSession.read.csv(SparkFiles.get("sample1.csv")).show()

person Leeladhar ponnagani    schedule 16.12.2020    source источник
comment
Привет, пожалуйста, отредактируйте свой вопрос и поместите текстовую версию фрагмента кода вместо изображения. Лучше всего публиковать фрагменты в виде текста, чтобы сообщество могло легко прочитать вашу конфигурацию.   -  person Dondi    schedule 17.12.2020


Ответы (1)


Вам нужно работать над настройками. Судя по предоставленному вами изображению, адрес электронной почты вашей учетной записи службы и ключ учетной записи службы неверны. Убедитесь, что вы используете правильный сервисный аккаунт электронная почта с ролью Администратора облачного хранилища в IAM, например:

[email protected]

И путь к вашему ключу сервисного аккаунта. должен быть каталогом, который может быть виден вашей конфигурации, путь к json должен быть каталогом, в котором в данный момент находится ваш ключ.

Кроме того, убедитесь, что вы используете ведро, существующее в вашем проекте, иначе вы получите ошибки, такие как ведро не существует или доступ запрещен.

ОБНОВЛЕНИЕ

OP обновил вопрос, перейдите по этой ссылке. Возможно, GOOGLE_APPLICATION_CREDENTIALS указывает на неправильное местоположение или не имеет правильных разрешений IAM.

person Dondi    schedule 17.12.2020
comment
Спасибо, Дональд, но я запускаю IntelliJ со своего локального компьютера с Windows. Я установил системное свойство, подобное этому System.setProperty(GOOGLE_APPLICATION_CREDENTIALS,C:/Users/shape-radius-297301-5bf673d7f0d2.json), но, похоже, оно не работает. - person Leeladhar ponnagani; 17.12.2020
comment
Попробуйте добавить среду переменная в вашей IDE - person Dondi; 18.12.2020
comment
Я пытался настроить переменные среды по-разному, но все равно. - person Leeladhar ponnagani; 18.12.2020
comment
Я понимаю, откуда вы пришли, но если вы по-прежнему сталкиваетесь с ошибками без действенного описания и вам нужна помощь в устранении неполадок, я предлагаю связаться с Техническая поддержка GCP, чтобы мы могли должным образом изучить ваш проект. - person Dondi; 24.12.2020