【问题标题】:How to query spark sql from a python app?如何从 python 应用程序查询 spark sql?
【发布时间】:2016-04-11 00:47:45
【问题描述】:

我已经设置了一个测试 Cassandra + Spark 集群。如果我执行以下操作,我可以成功地从 spark 查询 Cassandra:

import org.apache.spark.sql.cassandra.CassandraSQLContext
import import sqlContext.implicits._
val cc = new CassandraSQLContext(sc)
val dataframe = cc.sql("select * from my_cassandra_table") 
dataframe.first 

我现在想从 python we app 中查询数据。网络上的所有文档似乎都展示了如何使用 spark 的 python shell(其中隐式提供了上下文“sc”)。

我需要能够从一个独立的 python 脚本运行 spark SQL,也许是一个提供网页服务的脚本。

我没有找到任何文档,在 apache-spark irc 频道上没有任何帮助。我只是在想这个错误吗?是否有其他工具可以为技术含量较低的用户提供 Spark SQL?我对 spark 完全陌生。

【问题讨论】:

  • Quick Start documentation 怎么样? :)
  • @zero323 快速入门文档展示了如何编写 Python 脚本,然后将其“提交”到 pyspark。我想要类似于有人可能使用 pgsql 或 mysql 驱动程序来运行普通的 python web 应用程序的方式。 Python 脚本以“main”方法开始,导入所有库,并每隔一段时间执行 spark-sql 查询
  • spark-submit 只是一个方便的包装器。只要所有设置都正确,它就不是真正需要的。您在文档中看到的是一个有效的独立应用程序。

标签: apache-spark pyspark apache-spark-sql


【解决方案1】:

来自Spark Programming Guide

Spark 程序必须做的第一件事是创建一个 SparkContext 对象,它告诉 Spark 如何访问集群。要创建 SparkContext,您首先需要构建一个包含应用程序信息的 SparkConf 对象。

conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)

appName 参数是您的应用程序在集群 UI 上显示的名称。 master 是 Spark、Mesos 或 YARN 集群 URL,或者是在本地模式下运行的特殊“本地”字符串。实际上,在集群上运行时,您不会希望在程序中对 master 进行硬编码,而是使用 spark-submit 启动应用程序并在那里接收它。但是,对于本地测试和单元测试,您可以传递“本地”以在进程内运行 Spark。


然后您可以使用spark-submit 测试您的程序。

【讨论】:

    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多