【发布时间】:2021-09-18 11:29:53
【问题描述】:
还有其他帖子描述了如何为 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")
}
}
它完美地写入我的 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
将master.("local[*]") 更改为master.("yarn")
密钥文件位置也在共享挂载上
失败了
Exception in thread "main" org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "gs"
内置.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"
)
我也尝试过设置这些配置:
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")
但我得到了相同的结果。我觉得我的配置在某处不正确,但是当我只从 IntelliJ 运行类文件时,代码是如何工作的?
【问题讨论】:
-
您能检查一下您的罐子是否组装正确吗?
jar tvf CSVToGCS-assembly-0.0.1.jar | grep gcs?
标签: apache-spark hadoop google-cloud-storage hadoop-yarn