我已经尝试过p12密钥文件,它成功地工作了,并且我能够从gcs存储桶中获取数据。但是使用json keyfile时,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()发布于 2020-12-17 13:31:27
您需要对您的配置进行改进。从您提供的图像看,您的服务帐户电子邮件和服务帐户密钥不正确。请确保您在IAM上使用的是具有云存储管理员角色的correct service account电子邮件,例如:
serviceaccount@project-id.iam.gserviceaccount.com你的service account key的路径应该是你的配置可以看到的目录,“json的路径”应该是你的密钥当前所在的目录。
此外,请确保您使用的存储桶存在于您的项目中,否则您将收到错误,如“存储桶不存在”或“访问被拒绝”。
更新
OP更新了问题,请参阅此link。可能是GOOGLE_APPLICATION_CREDENTIALS指向了错误的位置,或者没有正确的IAM权限。
发布于 2021-11-01 06:41:50
设置凭证文件时出现问题,密钥文件vin数据块,所以我使用
libraryDependencies += "com.github.samelamin“%% "spark-bigquery”% "0.2.6“在scala的一个笔记本中设置
import com.samelamin.spark.bigquery._
// Set up GCP credentials
sqlContext.setGcpJsonKeyFile("<JSON_KEY_FILE>")
// Set up BigQuery project and bucket
sqlContext.setBigQueryProjectId("<BILLING_PROJECT>")
sqlContext.setBigQueryGcsBucket("<GCS_BUCKET>")
并且我们能够通过python与其他笔记本电脑正确连接到google
https://stackoverflow.com/questions/65332035
复制相似问题