使用 Crealytics 包读取 Excel 文件时出错

Error while using Crealytics package to read Excel file

我正在尝试使用 Crealytics 包从 HDFS 位置读取 Excel 文件,但不断收到错误消息(原因:java.lang.ClassNotFoundException:org.apache.spark.sql.connector.catalog.TableProvider)。我的代码如下。有小费吗?当 运行 下面的代码时,spark 会话启动正常并且 Crealytics 包加载没有错误。只有当 运行 "spark.read" 代码时才会出现错误。我使用的文件位置是准确的。

def spark_session(spark_conf):

    conf = SparkConf()
    for (key, val) in spark_conf.items():
        conf.set(key, val)

    spark = SparkSession \
        .builder \
        .enableHiveSupport() \
        .config(conf=conf) \
        .getOrCreate()
    return spark

spark_conf = {"spark.executor.memory": "16g", 
              "spark.yarn.executor.memoryOverhead": "3g",
              "spark.dynamicAllocation.initialExecutors": 2,
              "spark.driver.memory": "16g", 
              "spark.kryoserializer.buffer.max": "1g",
              "spark.driver.cores": 32,
              "spark.executor.cores": 8,
              "spark.yarn.queue": "adhoc",
              "spark.app.name": "CDSW_basic",
              "spark.dynamicAllocation.maxExecutors": 32,
              "spark.jars.packages": "com.crealytics:spark-excel_2.12:0.14.0"
             }


df = spark.read.format("com.crealytics.spark.excel") \
          .option("useHeader", "true") \
          .load("/user/data/Block_list.xlsx")

我也尝试使用下面的代码在会话函数之外加载它,在我尝试读取文件时产生相同的错误。

crealytics_driver_loc = "com.crealytics:spark-excel_2.12:0.14.0"
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages ' + crealytics_driver_loc + ' pyspark-shell'

看来我是在回答我自己的问题。经过大量摆弄之后,我发现使用旧版本的 crealytics 适用于我的设置,但我不确定为什么。有效的软件包是版本 13(“com.crealytics:spark-excel_2.12:0.13.0”),尽管最新版本是版本 15.