如何在spark的aws emr集群上处理存储在google存储中的数据?假设我有一些数据存储在 gs://my-buckey/my-parquet-data ,如何从emr集群中读取数据,而不必事先将数据复制到s3或下载到本地存储?
gs://my-buckey/my-parquet-data
p3rjfoxz1#
首先获取google hmac凭据,并访问要处理的gs bucket/对象然后使用s3a文件系统(已经与aws hadoop发行版捆绑在一起)和以下hadoop配置值:
val conf = spark.sparkContext.hadoopConfiguration conf.set("fs.s3a.access.key", "<hmac key>") conf.set("fs.s3a.secret.key", "<hmac secret>") conf.setBoolean("fs.s3a.path.style.access", true) conf.set("fs.s3a.endpoint", "storage.googleapis.com") conf.setInt("fs.s3a.list.version", 1)
然后你可以使用 s3a 路径如下:
s3a
spark.read.parquet("s3a://<google storage bucket name>/<path>)
1条答案
按热度按时间p3rjfoxz1#
首先获取google hmac凭据,并访问要处理的gs bucket/对象
然后使用s3a文件系统(已经与aws hadoop发行版捆绑在一起)和以下hadoop配置值:
然后你可以使用
s3a
路径如下: