Ошибка получения токена доступа с сервера метаданных по адресу: 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", "service-account@shaped-radius-297301.iam.gserviceaccount.com")
    .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()

2 ответа

Возникла проблема при настройке файла учетных данных, блоков данных vin файла ключа, поэтому я использовал

libraryDependencies += "com.github.samelamin" %% "spark-bigquery"% "0.2.6" для настройки в одном блокноте в scala

и мы можем правильно подключиться к Google с другим ноутбуком через python

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

      serviceaccount@project-id.iam.gserviceaccount.com

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

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

ОБНОВИТЬ

ОП обновил вопрос, см. Эту ссылку . Возможно, что указывает на неправильное местоположение или может не иметь правильных разрешений IAM.

Другие вопросы по тегам