Как пересобрать apache Livy с помощью scala 2.12

Я использую Spark 3.1.1, который использует Scala 2.12, и предварительно созданный Livy, загруженный с здесь использует Scala 2.11 (после распаковки можно было найти папку с именем repl_2.11-jars/).

Ссылаясь на комментарий Александра Сасновских, Ливи необходимо перестроить, иначе будет выдана ошибка. {'msg': 'requirement failed: Cannot find Livy REPL jars.'} даже в сеансе POST.

В README.md упоминается:

По умолчанию Livy построен на Apache Spark 2.4.5.

Если я хочу перестроить Livy, как я могу изменить версию Spark, на которой он построен?

Заранее спасибо.


person Jeff Shih    schedule 14.04.2021    source источник


Ответы (3)


Вы можете перестроить Livy, передавая профиль spark-3.0 в maven, чтобы создать собственную сборку для Spark 3, например:

git clone https://github.com/apache/incubator-livy.git && \
cd incubator-livy && \
mvn clean package -B -V -e \
        -Pspark-3.0 \
        -Pthriftserver \
        -DskipTests \
        -DskipITs \
        -Dmaven.javadoc.skip=true

Этот профиль определен в pom.xml, по умолчанию устанавливается Spark 3.0.0. Вы можете изменить его, чтобы использовать другую версию искры.

<profile>
      <id>spark-3.0</id>
      <activation>
        <property>
          <name>spark-3.0</name>
        </property>
      </activation>
      <properties>
        <spark.scala-2.12.version>3.0.0</spark.scala-2.12.version>
        <spark.scala-2.11.version>2.4.5</spark.scala-2.11.version>
        <spark.version>${spark.scala-2.11.version}</spark.version>
        <netty.spark-2.12.version>4.1.47.Final</netty.spark-2.12.version>
        <netty.spark-2.11.version>4.1.47.Final</netty.spark-2.11.version>
        <netty.version>${netty.spark-2.11.version}</netty.version>
        <java.version>1.8</java.version>
        <py4j.version>0.10.9</py4j.version>
        <json4s.spark-2.11.version>3.5.3</json4s.spark-2.11.version>
        <json4s.spark-2.12.version>3.6.6</json4s.spark-2.12.version>
        <json4s.version>${json4s.spark-2.11.version}</json4s.version>
        <spark.bin.download.url>
          https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop2.7.tgz
        </spark.bin.download.url>
        <spark.bin.name>spark-3.0.0-bin-hadoop2.7</spark.bin.name>
      </properties>
    </profile>

Насколько мне известно, Ливи поддерживает Spark 3.0.x. Но стоит протестировать с 3.1.1 и дайте нам знать :)

person rmakoto    schedule 29.04.2021

Я попытался собрать Livy для Spark 3.1.1 на основе ответа rmakoto, и это сработало! Я много повозился и не мог точно вспомнить, что редактировал в pom.xml, поэтому просто прикреплю свою главную ссылку здесь.

Мне также пришлось отредактировать файл python-api/pom.xml, чтобы использовать Python3 для сборки, поскольку при сборке с использованием файла pom.xml по умолчанию возникают некоторые проблемы с синтаксической ошибкой. Вот pom.xml суть для python-api.

После этого просто создайте с помощью

mvn clean package -B -V -e \
        -Pspark-3.0 \
        -Pthriftserver \
        -DskipTests \
        -DskipITs \
        -Dmaven.javadoc.skip=true
person gamberooni    schedule 29.06.2021
comment
Пожалуйста, добавьте коды из основной ссылки в ответ. - person Anirban Saha; 29.06.2021
comment
Я попытался добавить его в ответ, но это более 30000 символов, поэтому я не смог :) - person gamberooni; 29.06.2021

Основываясь на изменениях @gamberooni (но с использованием 3.1.2 вместо 3.1.1 для версии Spark и Hadoop 3.2.0 вместо 3.2.1), вот разница:

diff --git a/pom.xml b/pom.xml
index d2e535a..5c28ee6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,12 +79,12 @@
 
   <properties>
     <asynchttpclient.version>2.10.1</asynchttpclient.version>
-    <hadoop.version>2.7.3</hadoop.version>
+    <hadoop.version>3.2.0</hadoop.version>
     <hadoop.scope>compile</hadoop.scope>
     <spark.scala-2.11.version>2.4.5</spark.scala-2.11.version>
-    <spark.scala-2.12.version>2.4.5</spark.scala-2.12.version>
-    <spark.version>${spark.scala-2.11.version}</spark.version>
-    <hive.version>3.0.0</hive.version>
+    <spark.scala-2.12.version>3.1.2</spark.scala-2.12.version>
+    <spark.version>${spark.scala-2.12.version}</spark.version>
+    <hive.version>3.1.2</hive.version>
     <commons-codec.version>1.9</commons-codec.version>
     <httpclient.version>4.5.3</httpclient.version>
     <httpcore.version>4.4.4</httpcore.version>
@@ -1060,7 +1060,7 @@
         </property>
       </activation>
       <properties>
-        <spark.scala-2.12.version>3.0.0</spark.scala-2.12.version>
+        <spark.scala-2.12.version>3.1.2</spark.scala-2.12.version>
         <spark.scala-2.11.version>2.4.5</spark.scala-2.11.version>
         <spark.version>${spark.scala-2.11.version}</spark.version>
         <netty.spark-2.12.version>4.1.47.Final</netty.spark-2.12.version>
@@ -1072,9 +1072,9 @@
         <json4s.spark-2.12.version>3.6.6</json4s.spark-2.12.version>
         <json4s.version>${json4s.spark-2.11.version}</json4s.version>
         <spark.bin.download.url>
-          https://archive.apache.org/dist/spark/spark-3.0.0/spark-3.0.0-bin-hadoop2.7.tgz
+          https://archive.apache.org/dist/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz
         </spark.bin.download.url>
-        <spark.bin.name>spark-3.0.0-bin-hadoop2.7</spark.bin.name>
+        <spark.bin.name>spark-3.1.2-bin-hadoop3.2</spark.bin.name>
       </properties>
     </profile>
 
diff --git a/python-api/pom.xml b/python-api/pom.xml
index 8e5cdab..a8fb042 100644
--- a/python-api/pom.xml
+++ b/python-api/pom.xml
@@ -46,7 +46,7 @@
               <goal>exec</goal>
             </goals>
             <configuration>
-            <executable>python</executable>
+            <executable>python3</executable>
               <arguments>
                 <argument>setup.py</argument>
                 <argument>sdist</argument>
@@ -60,7 +60,7 @@
               <goal>exec</goal>
             </goals>
             <configuration>
-              <executable>python</executable>
+              <executable>python3</executable>
               <skip>${skipTests}</skip>
               <arguments>
                 <argument>setup.py</argument>
person Herrmann    schedule 30.06.2021