Я пытаюсь записать искровой фрейм данных в облачное хранилище Google. Этот фрейм данных имеет некоторые обновления, поэтому мне нужна стратегия разбиения. Так что мне нужно записать его в точный файл в GCS.
Я создал сеанс зажигания следующим образом
.config("fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem")\
.config("fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS")\
.config("fs.gs.project.id", project_id)\
.config("fs.gs.auth.service.account.enable", "true")\
.config("fs.gs.auth.service.account.project.id",project_id)\
.config("fs.gs.auth.service.account.private.key.id",private_key_id)\
.config("fs.gs.auth.service.account.private.key",private_key)\
.config("fs.gs.auth.service.account.client.email",client_email)\
.config("fs.gs.auth.service.account.email",client_email)\
.config("fs.gs.auth.service.account.client.id",client_id)\
.config("fs.gs.auth.service.account.auth.uri",auth_uri)\
.config("fs.gs.auth.service.account.token.uri",token_uri)\
.config("fs.gs.auth.service.account.auth.provider.x509.cert.url",auth_provider_x509_cert_url)\
.config("fs.gs.auth.service.account.client_x509_cert_url",client_x509_cert_url)\
.config("spark.sql.avro.compression.codec", "deflate")\
.config("spark.sql.avro.deflate.level", "5")\
.getOrCreate())
и я пишу в GCS, используя
df.write.format(file_format).save('gs://'+bucket_name+path+'/'+table_name+'/file_name.avro')
теперь я вижу, что файл, написанный на GCP, находится в пути
gs: //bucket_name/table_name/file_name.avro/--auto назначенное имя -. Avro
я ожидаю, что файл будет записан как в hadoop, а конечный результат файла данных будет
гс: //bucket_name/table_name/file_name.avro
Может ли кто-нибудь помочь мне достичь этого?