首页 > 解决方案 > Shell 脚本 - 退出 spark-shell 会话

问题描述

我正在尝试编写一个 shell 脚本,它将执行以下操作: 1. 启动 spark shell 2. 运行 SQL 查询 3. 退出 spark 会话 4. 执行 bash 脚本的其余部分 但是,我有一个问题后两部分。该脚本不会退出 spark 会话,并且最后一行中的 echo 语句在 spark 会话中执行并给出错误。

这是我的代码:

#!/bin/bash
   export SPARK_MAJOR_VERSION=2
   spark-shell <<- 'EOF'
   spark.sql("SELECT distinct year, months FROM calendar").show(100, false)
   :quit
   EOF 
echo "Testing: Inline session has ended"

这是我得到的输出:

scala>            spark.sql("SELECT distinct year, months FROM calendar").show(100, false)
+----+------+
|year|months|
+----+------+
|2017|3     |
|2017|8     |
|2017|10    |
|2018|1     |
|2018|3     |
|2017|7     |
|2018|5     |
|2017|12    |
|2017|9     |
|2017|4     |
|2018|7     |
|2018|6     |
|2017|2     |
|2017|11    |
|2017|5     |
|2018|2     |
|2017|6     |
|2017|1     |
|2018|4     |
+----+------+


scala>    :quit
<console>:1: error: illegal start of definition
   :quit
   ^

scala>    EOF
<console>:24: error: not found: value EOF
          EOF
          ^

scala>

scala>

scala> echo "Testing: Inline session has ended"
<console>:1: error: ';' expected but string literal found.
echo "Testing: Inline session has ended"
     ^

scala> :quit

如您所见,它永远不会退出 spark 会话。谁能帮我解决这个问题?我真的很感激。提前谢谢了 :)。

标签: bashshellapache-sparkapache-spark-sqlsh

解决方案


推荐阅读