excel文件的google dataproc集群中的NoSuchMethodError



在dataproc集群中使用Excel文件时,得到错误java.lang.NoSuchMethodError

注意:正在打印模式,但未打印实际数据。

错误:

py4j.protocol.Py4JJava错误:调用时出错o74.showString.:java.lang.NoSuchMethodError:scala。预定义$.refArrayOps([Ljava/lang/Object;(Lscala/collection/mutable/ArrayOps;在com.crealytics.spark.excel.ExcelRelation.buildScan(ExcelRelation.scala:74(

代码:

from pyspark.sql import SparkSession
from pyspark import SparkConf, SparkContext
from google.cloud import storage
from google.cloud import bigquery
import pyspark
client = storage.Client()
bucket_name = "test_bucket"
path=f"gs://{bucket_name}/test_file.xlsx"
def make_spark_session(app_name, jars=[]): 
configuration = (SparkConf()     
.set("spark.jars", ','.join(jars)))
spark = SparkSession.builder.appName(app_name) 
.config(conf=configuration).getOrCreate()
return spark
app_name = 'test_app'
jars = ['gs://bucket/spark-excel_2.11_uber-0.12.0.jar']
spark = make_spark_session(app_name,jars)
df = spark.read.format("com.crealytics.spark.excel") 
.option("useHeader","true") 
.load(path)
df.show(1)

这似乎是作业jar和集群之间的Scala版本不匹配。Dataproc 1.5和2.0都带有Scala 2.12。代码中的gs://bucket/spark-excel_2.11_uber-0.12.0.jar似乎是基于Scala 2.11的,您可能需要使用spark-excel_2.12_...。除此之外,请确保您的Spark应用程序也是使用Scala2.12构建的。

最新更新