Delta IO结合spark-excel读取文件出现ClassNotFoundException如何解决
问题原因
configure_spark_with_delta_pip方法执行时会默认覆写spark.jars.packages配置项,用内置的Delta核心依赖坐标替换你预先在builder中配置的spark-excel依赖坐标,最终导致spark-excel的类没有被正确加载,抛出类不存在异常。
解决方案
推荐使用configure_spark_with_delta_pip提供的extra_packages参数传入额外依赖,避免配置被覆盖,示例代码如下:
from delta.pip_utils import configure_spark_with_delta_pip builder = SparkSession.builder.appName("transaction") \ .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \ .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") # 把spark-excel依赖通过extra_packages参数传入,和Delta依赖合并加载 spark = configure_spark_with_delta_pip(builder, extra_packages=["com.crealytics:spark-excel_2.12:0.14.0"]).getOrCreate() # 后续读取Excel的逻辑不变 df = spark.read.format("com.crealytics.spark.excel") \ .option("header", "true") \ .load(path2)
注意:spark-excel的版本要和你当前使用的Spark版本、Scala版本匹配,你当前使用的是2.12版本的Scala编译的依赖,确保Spark版本和该spark-excel版本兼容即可。
内容的提问来源于stack exchange,提问作者OMA
相关产品推荐
相关产品推荐

