程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了通过 Spark 提交作业 (scala) 写入 Google Cloud Storage大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决通过 Spark 提交作业 (scala) 写入 Google Cloud Storage?

开发过程中遇到通过 Spark 提交作业 (scala) 写入 Google Cloud Storage的问题如何解决?下面主要结合日常开发的经验,给出你关于通过 Spark 提交作业 (scala) 写入 Google Cloud Storage的解决方法建议,希望对你解决通过 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,请注明来意。