【发布时间】:2021-11-22 03:10:18
【问题描述】:
当使用没有 delta 的 com.crealytics:spark-excel_2.12:0.14.0 时:
spark = SparkSession.builder.appName("Word Count")
.config("spark.jars.packages", "com.crealytics:spark-excel_2.12:0.14.0")
.getOrCreate()
df = spark.read.format("com.crealytics.spark.excel")
.option("header", "true")
.load(path2)
它工作正常,我可以很好地读取 excel 文件。但是使用 configure_spark_with_delta_pip 创建会话:
builder = SparkSession.builder.appName("transaction")
.config("spark.jars.packages", "com.crealytics:spark-excel_2.12:0.14.0")
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
.config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
spark = configure_spark_with_delta_pip(builder).getOrCreate()
给我以下错误:
Py4JJavaError:调用 o139.load 时出错。 : java.lang.ClassNotFoundException:找不到数据源: com.crealytics.spark.excel。请在以下位置找到包裹 http://spark.apache.org/third-party-projects.html 在 org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:692) 在 org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSourceV2(DataSource.scala:746) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:265) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:239) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) 在 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) 在 py4j.Gateway.invoke(Gateway.java:282) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j.GatewayConnection.run(GatewayConnection.java:238) 在 java.base/java.lang.Thread.run(Thread.java:829) 原因: java.lang.ClassNotFoundException: com.crealytics.spark.excel.DefaultSource 在 java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) 在 org.apache.spark.sql.execution.datasources.DataSource$.$anonfun$lookupDataSource$5(DataSource.scala:666) 在 scala.util.Try$.apply(Try.scala:213) 在 org.apache.spark.sql.execution.datasources.DataSource$.$anonfun$lookupDataSource$4(DataSource.scala:666) 在 scala.util.Failure.orElse(Try.scala:224) 在 org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:666) ... 14 更多
为什么?我该如何避免这种情况?
【问题讨论】:
标签: apache-spark pyspark delta-lake