【发布时间】:2015-09-15 17:04:07
【问题描述】:
我正在尝试将 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
我试图在互联网上寻找类似的指南,但似乎没有?有人可以建议我如何完成它吗?
谢谢。
【问题讨论】:
标签: scala apache-spark google-cloud-storage apache-spark-sql parquet