无法通过Shell脚本运行Spark SQL

时间:2019-09-06 03:47:58

标签: shell spark-shell

我无法通过shell脚本在spark中查询表。但是,如果我通过命令行运行,则可以得到结果。当我将这些命令插入外壳并尝试运行时,就会出现问题。

创建了一个shell脚本:

vi test.sh

在spark shell命令下面插入

火花壳

val results =sqlContext.sql("SELECT * from table_name ")

results.show()

它正在进入Spark Shell,但没有运行以下两个命令

val results =sqlContext.sql("SELECT * from table_name ")

results.show()

3 个答案:

答案 0 :(得分:0)

我假设您能够使用配置单元查询数据。您需要进行配置,以使spark sql可以与HDFS和hive一起使用。执行以下步骤以在spark和蜂巢之间建立连接。

在$ SPARK_HOME / conf / hive-site.xml位置创建文件hive-site.xml。在此文件中进行以下输入(更改值以指向您的配置单元安装的metastore服务器):

<configuration>
  <property>
    <name>hive.metastore.uris</name>
    <!--Make sure that <value> points to the Hive Metastore URI in your cluster -->
    <value>thrift://sandbox.hortonworks.com:9083</value>
    <description>URI for client to contact metastore server</description>
  </property>
</configuration>

以下链接对此提供了更多详细信息:

How to connect to remote hive server from spark

https://acadgild.com/blog/how-to-access-hive-tables-to-spark-sql

答案 1 :(得分:0)

您可以将其编写为scala文件并运行该scala文件,而不必将其编写为Shell脚本。

file.scala

val results =sqlContext.sql("SELECT * from table_name ")

results.show()

spark-shell -i file.scala

答案 2 :(得分:0)

您可以使用Except使bash脚本中的spark-shell正常工作。

或使用.scala创建文件,然后在其中复制所有spark命令。

val results =sqlContext.sql("SELECT * from table_name ")

results.show()

System.exit(0)

使用'spark-shell -i script_name.scala'在bash中或直接在linux终端上运行脚本。

System.exit(0)-----摆脱火花壳