我正在尝试编写将执行以下操作的Shell脚本: 1.启动火花壳 2.运行SQL查询 3.退出火花会话 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会话。谁能帮我解决这个问题?我真的很感激。提前谢谢了 :)。