Ошибка получения токена доступа с сервера метаданных по адресу: 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» должен быть каталогом, в котором в настоящее время находится ваш ключ.
Кроме того, убедитесь, что вы используете сегмент, который существует в вашем проекте, иначе вы получите такие ошибки, как «сегмент не существует» или «доступ запрещен».
ОБНОВИТЬ
ОП обновил вопрос, см. Эту ссылку . Возможно, что