gpt4 book ai didi

scala - 将 Spark 数据帧保存为 Google Cloud Storage 中的 parquet 文件

转载 作者:行者123 更新时间:2023-12-03 01:58:46 28 4
gpt4 key购买 nike

我正在尝试将 Spark 数据帧保存到 Google Cloud Storage。我们可以将 parquet 格式的数据帧保存到 S3,但由于我们的服务器是 Google Compute Engine,因此到 S3 的数据传输成本会很高。我想知道谷歌云存储是否可以有类似的功能?以下是我在 S3 中所做的操作:

将依赖项添加到 build.sbt:

"net.java.dev.jets3t" % "jets3t" % "0.9.4",
"com.amazonaws" % "aws-java-sdk" % "1.10.16"

在主代码中使用它:

val sc = new SparkContext(sparkConf)
sc.hadoopConfiguration.set("fs.s3a.awsAccessKeyId", conf.getString("s3.awsAccessKeyId"))
sc.hadoopConfiguration.set("fs.s3a.awsSecretAccessKey", conf.getString("s3.awsSecretAccessKey"))

val df = sqlContext.read.parquet("s3a://.../*") //read file
df.write.mode(SaveMode.Append).parquet(s3FileName) //write file

最后,将其与 Spark-submit 一起使用

spark-submit --conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3native.NativeS3FileSystem 
--conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3.S3FileSystem

我试图在互联网上寻找类似的指南,但似乎没有?任何人都可以建议我如何完成它吗?

谢谢。

最佳答案

如果有人想做同样的事情,我的工作方式如下:

将库依赖项添加到 SBT:

"com.google.cloud.bigdataoss" % "gcs-connector" % "1.4.2-hadoop2"

设置 Hadoop 配置:

sc.hadoopConfiguration.set("fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem")
sc.hadoopConfiguration.set("fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS")
sc.hadoopConfiguration.set("fs.gs.project.id", conf.getString("gcs.projectId"))
sc.hadoopConfiguration.set("google.cloud.auth.service.account.enable", "true")
sc.hadoopConfiguration.set("google.cloud.auth.service.account.email", conf.getString("gcs.serviceAccountEmail"))
sc.hadoopConfiguration.set("google.cloud.auth.service.account.keyfile", conf.getString("gcs.serviceAccountKeyFile"))

然后您可以像 S3 一样保存和读取文件。唯一的问题是,我测试时它无法与 Spark 1.4 配合使用,因此您可能需要将其更新到 Spark 1.5+。

关于scala - 将 Spark 数据帧保存为 Google Cloud Storage 中的 parquet 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591745/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com