【问题标题】:How to rebuild apache Livy with scala 2.12如何使用 scala 2.12 重建 apache Livy
【发布时间】:2021-07-09 03:55:26
【问题描述】:

我使用的是使用 Scala 2.12 的 Spark 3.1.1,而从 here 下载的预构建 Livy 使用的是 Scala 2.11(解压缩后可以找到名为 repl_2.11-jars/ 的文件夹)。

参考 Aliaksandr Sasnouskikh 制作的comment,Livy 需要重新构建,否则即使在 POST Session 中也会抛出错误{'msg': 'requirement failed: Cannot find Livy REPL jars.'}

README.md中提到:

默认情况下,Livy 是针对 Apache Spark 2.4.5 构建的

如果我想重建 Livy,如何更改构建它的 spark 版本?

提前致谢。

【问题讨论】:

    标签: apache-spark livy


    【解决方案1】:

    您可以在 maven 中重建 Livy 传递 spark-3.0 配置文件以创建用于 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。您可以更改它以使用不同的 spark 版本。

    <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>
    

    据我所知,Livy 支持 spark 3.0.x。但值得用 3.1.1 进行测试,让我们知道:)

    【讨论】:

    • 如何更改这些值来为 spark 3.1.2、hadoop 3.2.0、scala 2.12.10 构建 livy?
    【解决方案2】:

    基于 @gamberooni 的更改(但 Spark 版本使用 3.1.2 而不是 3.1.1 和 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>
    

    【讨论】:

      【解决方案3】:

      我尝试根据 rmakoto 的回答为 Spark 3.1.1 构建 Livy,它成功了!我修改了很多,我不记得我在pom.xml 中编辑了什么,所以我只是附上我的要点链接here

      我还必须编辑 python-api/pom.xml 文件以使用 Python3 进行构建,因为使用默认 pom.xml 文件构建时存在一些语法错误问题。这是python-api的pom.xmlgist

      之后只需构建

      mvn clean package -B -V -e \
              -Pspark-3.0 \
              -Pthriftserver \
              -DskipTests \
              -DskipITs \
              -Dmaven.javadoc.skip=true
      

      【讨论】:

      • 请在答案中添加要点链接中的代码。
      • 我试图将它添加到答案中,但它超过 30000 个字符,所以我不能:)
      • 我试过你的指南,但我不知道构建后输出存储在哪里。如何在主页livy上打包相同的zip包?
      • 需要将这些配置更改为 scala 2.12 2.11${scala-2.11.version}。版本> ${spark.scala-2.11.version}
      • 我尝试为 spark 3.1.2、hadoop 3.2.0、scala 2.12.10 构建
      【解决方案4】:

      我将在此处添加其他选项:Lighter。这是受到 Livy 极大启发的 Spark REST API,它与最新的 Spark 版本兼容并构建。 More info.

      免责声明:我参与了它的开发。

      【讨论】:

        猜你喜欢
        • 2020-12-14
        • 2021-11-18
        • 1970-01-01
        • 1970-01-01
        • 2017-03-30
        • 1970-01-01
        • 1970-01-01
        • 2020-12-15
        • 1970-01-01
        相关资源
        最近更新 更多