大佬教程收集整理的这篇文章主要介绍了通过 Spark 提交作业 (scala) 写入 Google Cloud Storage,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
还有其他文章描述了如何为 spark 类设置配置(spark 和 hadoop)以便能够写入 GCS 存储桶。
如果我从 IntelliJ 运行以下代码
package com.test.migration;
import java.io.file
import java.util
import org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.{DataFrame,SaveMode,SparkSession}
object DFToGcslite {
def main(args: ArraY[String]): Unit = {
val spark = SparkSession
.builder
.master("local[*]")
.appname("DFToGcslite")
.config("spark.hadoop.Google.cloud.auth.service.account.enable",truE)
.config("spark.hadoop.Google.cloud.auth.service.account.Json.keyfile","src/main/resources/test-storage-318320-d3aa6f895415.Json")
.getorCreate()
import spark.implicits._
val sc = spark.sparkContext
sc.hadoopConfiguration.set("fs.defaultFS","gs://test-csv-write/")
(0 to 100)
.toDF
.write
.mode(SaveMode.Append)
.parquet("outputs01")
}
}
@H_801_8@
它完美地写入了我的 GCS 存储桶。
但是当我编译 jar 并在集群上运行它时:
/usr/local/bin/spark-submit --class com.test.migration.CSVToGCS --master local /Users/adam.mac/Desktop/csv_to_gcs/target/scala-2.11/CSVToGCS-assembly-0.0.1.jar
@H_801_8@
将 @H_567_7@master.("local[*]")@H_801_8@ 改为 @H_567_7@master.("yarn")@H_801_8@
它失败了
Exception in thread "main" org.apache.hadoop.fS.Unsupportedfilesystemexception: No fileSystem for scheR_344_11845@e "gs"
@H_801_8@
built.sbt:
name := "CSVToGCS"
version := "0.0.1"
scalaVersion := "2.11.8"
val sparkVersion = "2.4.0"
libraryDependencIEs ++= Seq(
"com.typesafe" % "config" % "1.3.1","org.apache.spark" %% "spark-core" % sparkVersion,"org.apache.spark" %% "spark-sql" % sparkVersion,"org.apache.spark" %% "spark-yarn" % "2.4.0" % "provIDed","org.apache.hadoop" % "hadoop-common" % "2.7.3","com.Google.cloud.bigdataoss" % "gcs-connector" % "hadoop3-2.0.0"
)
@H_801_8@
我也尝试过设置这些配置:
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")
@H_801_8@
但我得到了相同的结果。我觉得我的配置在某处不正确,但是当我只从 IntelliJ 运行类文件时,代码如何工作?
这是我在讨论这个 github 问题 https://github.com/GoogleCloudDataproc/hadoop-connectors/issues/323#issuecomment-597353458 的帮助下解决错误的方法。由于我们使用的是 hadoop 2.6 版,因此我们需要使用此 gcs-connector-hadoop2-2.0.1.jar@H_801_8@ 可用 here
一旦我将 jar 放在 $SPARK_HOME/jars/ 中,代码就运行得很好!
以上是大佬教程为你收集整理的通过 Spark 提交作业 (scala) 写入 Google Cloud Storage全部内容,希望文章能够帮你解决通过 Spark 提交作业 (scala) 写入 Google Cloud Storage所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。