我无法通过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()
答案 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)-----摆脱火花壳