我无法通过 shell 脚本查询 Spark 中的表。但是如果我通过命令行运行,我能够得到结果。当我将这些命令插入 shell 并尝试运行时出现问题。
创建了一个 shell 脚本:
vi test.sh
插入到火花外壳命令下方
火花壳
val results =sqlContext.sql("SELECT * from table_name ")
results.show()
它正在进入火花外壳,但没有运行以下两个命令
val results =sqlContext.sql("SELECT * from table_name ")
results.show()
您可以使用 Except 在 bash 脚本中获取火花外壳。
或者使用 .scala 创建一个文件,并在那里复制所有 Spark 命令。
val results =sqlContext.sql("SELECT * from table_name ")
results.show()
System.exit(0)
使用'spark-shell -i script_name.scala'在bash中运行脚本或直接在Linux终端上运行脚本。
系统退出(0(-----摆脱火花壳
我假设您可以使用hive查询数据。你需要做配置,以便Spark sql可以与HDFS和Hive一起工作。执行以下步骤以在 Spark 和 Hive 之间建立连接。
在位置 $SPARK_HOME/conf/hive-site.xml 创建文件 hive-site.xml。在此文件中执行以下条目(将值更改为指向 Hive 安装的元存储服务器(:
<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 连接到远程 Hive 服务器
https://acadgild.com/blog/how-to-access-hive-tables-to-spark-sql
您可以编写为 scala 文件并运行 scala 文件,而不是作为 shell 脚本编写。
文件.scala
val results =sqlContext.sql("SELECT * from table_name ")
results.show()
Spark-shell -i file.scala