【问题标题】:Shell Script: passing variable to spark-shell sessionShell 脚本:将变量传递给 spark-shell 会话
【发布时间】:2018-10-02 22:33:21
【问题描述】:

我正在尝试将变量传递给 spark-shell 会话。本质上,我的目标是创建一个代码,该代码将逐行读取文本文件并逐个执行文本文件中存在的 SQL 查询。为此,我需要能够将“p”的值传递到 spark 会话中。但我不能这样做:

#!/bin/bash
export p="SELECT distinct year, period FROM calendar "
export SPARK_MAJOR_VERSION=2
spark-shell << 'EOF'
spark.sql(${p}).show(100, false)
:quit
EOF

上面的代码给我以下错误:

scala> spark.sql(${p}).show(100, false)
<console>:24: error: not found: value $
       spark.sql(${p}).show(100, false)
                 ^
<console>:24: error: not found: value p
       spark.sql(${p}).show(100, false)
                   ^

scala> :quit

非常感谢您的帮助!

【问题讨论】:

    标签: bash shell apache-spark apache-spark-sql sh


    【解决方案1】:

    当您编写:spark-shell &lt;&lt; 'EOF' 时,您明确告诉 shell 不要在 heredoc 中插入变量。去掉引号并写:

    spark-shell << EOF
    

    【讨论】: