0

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

创建了一个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()

4

3 回答 3

0

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

在 $SPARK_HOME/conf/hive-site.xml 位置创建文件 hive-site.xml。在此文件中创建以下条目(将值更改为指向您的 hive 安装的 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>

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

如何从 spark 连接到远程配置单元服务器

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

于 2019-09-06T05:00:07.507 回答
0

您可以编写为 scala 文件并运行 scala 文件,而不是编写为 shell 脚本。

文件.scala

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

results.show()

火花壳 -i 文件.scala

于 2019-09-06T11:48:08.507 回答
0

您可以使用except让 spark-shell 在 bash 脚本中工作。

或者用 .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)----- 从 spark-shell 中退出

于 2019-09-06T12:57:41.787 回答