亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在執行“org.apache.spark.sql.DataSet.collectAsList()

如何在執行“org.apache.spark.sql.DataSet.collectAsList()

人到中年有點甜 2022-11-02 10:38:28
我正在創建一個 Java RESTAPI Spring Boot 應用程序,它使用 spark 從服務器獲取一些數據。當我嘗試從數據集轉換為列表時,它失敗了。我已經嘗試使用 jdk8 和 jdk11 來編譯和執行代碼,但我得到相同的“java.lang.IllegalArgumentException:不支持的類文件主要版本 55”,過去,我通過更新 Java 版本解決了這個問題,但它是不為此工作。我在用著:JDK 11.0.2春季啟動 2.1.4火花 2.4.2這是我正在執行的代碼:Dataset<Row> dataFrame = sparkSession.read().json("/home/data/*.json");        dataFrame.createOrReplaceTempView("events");        Dataset<Row> resultDataFrame = sparkSession.sql("SELECT * FROM events WHERE " + predicate);         Dataset<Event> eventDataSet = resultDataFrame.as(Encoders.bean(Event.class));        return eventDataSet.collectAsList();查詢有效,實際上在調試時您可以在 resultDataFrame 和 eventDataSet 中看到信息。我希望輸出是正確的事件列表,但我得到了例外:[http-nio-8080-exec-2] ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 55] with root causejava.lang.IllegalArgumentException: Unsupported class file major version 55    at org.apache.xbean.asm6.ClassReader.<init>(ClassReader.java:166)    at org.apache.xbean.asm6.ClassReader.<init>(ClassReader.java:148)    at org.apache.xbean.asm6.ClassReader.<init>(ClassReader.java:136)    at org.apache.xbean.asm6.ClassReader.<init>(ClassReader.java:237)    at org.apache.spark.util.ClosureCleaner$.getClassReader(ClosureCleaner.scala:49)    at org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:517)    at org.apache.spark.util.FieldAccessFinder$$anon$3$$anonfun$visitMethodInsn$2.apply(ClosureCleaner.scala:500)    at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733).....評論更新:對于 Java 8,我將 pom 更改為針對 java 8:<java.version>1.8</java.version>然后更新項目,maven clean,maven install 然后運行。獲得相同的版本 55 錯誤
查看完整描述

3 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

從 spark-core 依賴項中排除默認的 XBean 工件并添加最新版本的 XBean 工件,它對我有用。


<dependencies>

    <dependency>

        <groupId>org.apache.xbean</groupId>

        <artifactId>xbean-asm6-shaded</artifactId>

        <version>4.10</version>

    </dependency>

    <dependency>

        <groupId>org.apache.spark</groupId>

        <artifactId>spark-core_2.11</artifactId>

        <version>2.4.1</version>

        <exclusions>

            <exclusion>

                <groupId>org.apache.xbean</groupId>

                <artifactId>xbean-asm6-shaded</artifactId>

            </exclusion>

        </exclusions>

    </dependency>

</dependencies>


查看完整回答
反對 回復 2022-11-02
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

問題的根本原因是我瞄準了錯誤的 JDK 的符號鏈接,這就是它不起作用的原因。JAVA_HOME 的目標是 jdk11 并且 eclipse 正在運行它。



查看完整回答
反對 回復 2022-11-02
?
MM們

TA貢獻1886條經驗 獲得超2個贊

由于大多數python開發人員為該項目生成了virutalenv,因此您可以使用以下代碼段來檢查pyspark工作所需的不同組件的版本。錯誤的原因是java版本不兼容。pyspark期望java version 1.8+而不是jdk-11。Major version 55對應于jdk-11您在此處看到的


僅檢查官方 spark 文檔以了解版本兼容性。


import subprocess


# subprocess to find the java , scala and python version

cmd1 = "java -version"

cmd2 = "scala -version"

cmd3 = "python --version"

cmd4 = "whoami"


arr = [cmd1, cmd2, cmd3, cmd4]


for cmd in arr:

    process = subprocess.Popen(cmd.split(" "), stdout=subprocess.PIPE,stderr=subprocess.PIPE )

    stdout,stderr=process.communicate()

    logging.info(stdout.decode("utf-8") + " | "  + stderr.decode("utf-8"))


logging.info(os.getenv("JAVA_HOME"))

logging.info(os.getenv("HOME"))

您將獲得以下輸出:


INFO:root: | openjdk version "1.8.0_252"

OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~18.04-b09)

OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)


INFO:root: | Scala code runner version 2.12.2 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.


INFO:root:Python 3.6.9


INFO:root:training


查看完整回答
反對 回復 2022-11-02
  • 3 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號