代码之家  ›  专栏  ›  技术社区  ›  Arunima Barik

在Ignite DataFrame上执行sql时,错误:java.lang.NoClassDefFoundError:org/apache/spark/sqlcatalyst/expressions/IfNull

  •  0
  • Arunima Barik  · 技术社区  · 1 年前

    我有一个spark数据帧,我已经将其写入Ignite格式

    `spark_df.write.format("ignite")\
            .mode("overwrite")\
            .option("table", "processed_logs")\
            .option("primaryKeyFields","player_id")\
            .option("config",config_file).save()`
    

    接下来,我将其读取到数据帧中

    `ignite_df = spark.read.format("ignite")\
        .option("table", "processed_logs")\
        .option("config", config_file)\
        .load()`
    

    我在上面创建了一个表视图

    `ignite_df.createOrReplaceTempView("ignite_table")`
    

    当我对ignlight_table运行SQL查询时,我会得到以下错误

    查询-> spark.sql("Select * from ignite_table where logins > 2").show()

    错误-> Py4JJavaError: An error occurred while calling o197.showString. : java.lang.NoClassDefFoundError: org/apache/spark/sql/catalyst/expressions/IfNull at org.apache.ignite.spark.impl.optimization.SystemExpressions$.apply(SystemExpressions.scala:35) at org.apache.ignite.spark.impl.optimization.package$.$anonfun$exprsAllowed$2(package.scala:100)

    完全错误-> https://pastebin.pl/view/f33b2e80

    如果我使用python瘦客户端,则查询有效,但我只需要此实现。 请帮我解决这个问题。

    PS:Spark版本->3.3.2 Ignite版本->2.15.0

    0 回复  |  直到 1 年前
        1
  •  0
  •   Mohana B C    1 年前

    来自Apache Ignite documentation ,

    Apache Ignite提供了两个支持不同版本的模块 Apache Spark的:

    ignite-spark-ext 1.0.0 — integration with Spark 2.3
    
    ignite-spark-ext 2.0.0 — integration with Spark 2.4
    

    看起来火花3.x甚至和最新的点火版本都不兼容。

        2
  •  0
  •   Andrei Aleksandrov    1 年前

    支持Spark 3.0,但没有文档记录:

    https://downloads.apache.org/ignite/ignite-extensions/ignite-spark-ext/3.0.0/

    请为您的Spark版本尝试此版本。