从dataproc集群将数据加载到bigquery表时出错

超纪

我有一个在dataproc中运行的spark作业,我想将结果加载到BigQuery,我知道我必须添加spark-bigquery连接器以将数据保存到bigquery

  name := "spl_prj"

  version := "0.1"

  scalaVersion := "2.11.12"

  val sparkVersion = "2.3.0"

  conflictManager := ConflictManager.latestRevision

  libraryDependencies ++= Seq(
  "org.apache.spark" %%"spark-core" % sparkVersion % Provided,
  "org.apache.spark" %% "spark-sql" % sparkVersion % Provided ,
  "com.google.cloud.spark" %% "spark-bigquery-with-dependencies" % "0.17.3"
  )

当我建立罐子并提交作业时,会出现此错误:

  Exception in thread "main" java.lang.ClassNotFoundException: Failed to find data source: bigquery. Please find packages at http://spark.apache.org/third-party-projects.html
at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:639)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:190)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:164)
at com.renault.datalake.spl_prj.Main$.main(Main.scala:58)
at com.renault.datalake.spl_prj.Main.main(Main.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:890)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:192)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:217)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:137)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

造成原因:java.lang.ClassNotFoundException:bigquery.DefaultSource

在此示例中,在提交作业lik时,我没有添加jar的权限。我认为,当sbt构建jar时,没有在编译过程中添加连接器,我想运行的最简洁的代码scala引发了:

   val spark = SparkSession.builder.config(conf).getOrCreate()
   val bucket = "doc_spk"
   spark.conf.set("temporaryGcsBucket", bucket)
   val sc =spark.sparkContext
   val rddRowString = sc.binaryRecords("gs://bucket/GAR", 120).map(x=>(x.slice(0,17),x.slice(17,20),x.slice(20,120)))
   val df=spark.createDataFrame(rddRowString).toDF("v","data","val_data")
   df.write.format("bigquery")
  .option("table","db.table")
  .save()
斯里尼瓦斯

使用以下buil.sbt文件构建fatjar文件。

build.sbt

name := "spl_prj"
version := "0.1"
scalaVersion := "2.11.12"
val sparkVersion = "2.3.0"
conflictManager := ConflictManager.latestRevision

libraryDependencies ++= Seq(
  "org.apache.spark" %%"spark-core" % sparkVersion % Provided,
  "org.apache.spark" %% "spark-sql" % sparkVersion % Provided ,
  "com.google.cloud.spark" %% "spark-bigquery-with-dependencies" % "0.17.3"
)
assemblyMergeStrategy in assembly := {
  case PathList("META-INF","services",xs @ _*) => MergeStrategy.filterDistinctLines
  case PathList("META-INF",xs @ _*) => MergeStrategy.discard
  case _ => MergeStrategy.first
}

assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
assemblyJarName in assembly := s"${name.value}-${version.value}.jar"

创建project/plugins.sbt文件并添加以下内容。

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.15.0")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.9.0")

运行以下命令创建“ fat”罐子。

sbt clean compile assembly

注意:您可以根据项目要求调整版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将数据从BigQuery表加载到Dataproc集群时出错

将XML数据加载到配置单元表时出错

将CSV数据加载到Hive表时出错

将数据加载到WKInterfaceTable时出错

使用 Python 将数据本地 CSV 加载到 BigQuery 时出错

使用Pandas DataFrame将数据从CSV加载到表时出错

将 JSON 文件从 GCS 加载到 Bigquery 表时的数据类型问题

将 JSON 数据加载到 BigQuery 中的多个表

将数据从 Talend Studio 加载到 Mysql 时出错

尝试将 ODBC 连接加载到数据集时出错

尝试从磁盘将数据加载到Google Collab时出错

尝试将数据从OData源编辑器加载到SQL数据库表时出错

将 CSV 加载到表格时出错

将大数据从bigquery加载到python

从bigquery WebUI将JSON加载到bigquery表时,在架构中定义数组

将数据插入Google Cloud中的bigquery表时出错?

尝试将数据从Ignite加载到Spark数据帧时出错

将JSON文件加载到BigQuery表中时如何管理/处理架构更改

将数据加载到BigQuery表中的最佳做法是什么?

如何使用python从云函数将数据帧加载到BigQuery分区表中

使用angular将数据加载到表

将数据从MySQL水平加载到表

从文件将数据加载到表中

Vertica 将数据从文件加载到表

使用自定义按钮将行数据从DataTable加载到localStorage时出错

从mysql数据库将图片加载到图片框时出错。NullReferenceException

将数据从Google存储空间加载到BigQuery时如何执行UPSERT?

InternalError,意外。将JSON数据加载到BigQuery时,请重试

BigQuery:将数据从GCS加载到EU数据集中