1

我对这个故事中的不同参与者有点困惑:PySpark、SparkSQL、Cassandra 和 pyspark-cassandra 连接器。

据我了解,Spark 发展了很多,SparkSQL 现在是一个关键组件(带有“数据帧”)。显然,没有 SparkSQL 绝对没有理由工作,尤其是在连接到 Cassandra 时。

所以我的问题是:需要什么组件以及如何以最简单的方式将它们连接在一起?

spark-shellScala 中,我可以简单地做

./bin/spark-shell --jars spark-cassandra-connector-java-assembly-1.6.0-M1-SNAPSHOT.jar

接着

import org.apache.spark.sql.cassandra.CassandraSQLContext
val cc = new CassandraSQLContext(sc)
cc.setKeyspace("mykeyspace")
val dataframe = cc.sql("SELECT count(*) FROM mytable group by beamstamp")

我该怎么做pyspark

这里有几个子问题以及我收集的部分答案(如果我错了,请纠正)。

  • 是否需要 pyspark-casmandra(我不这么认为——我不明白一开始在做什么)

  • 我需要使用pyspark还是可以使用我的常规jupyter notebook并自己导入必要的东西?

4

2 回答 2

3

Pyspark 应该使用Spark Cassandra 连接器python 文档spark-cassandra-connector中描述的包启动。

./bin/pyspark 
  --packages com.datastax.spark:spark-cassandra-connector_$SPARK_SCALA_VERSION:$SPARK_VERSION

加载后,您将能够在 C* 数据帧上使用 Spark 中已经存在的任何数据帧操作。有关使用 C* 数据帧的选项的更多详细信息

要将其设置为运行,jupyter notebook只需使用以下属性设置您的环境。

export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS=notebook

调用pyspark将启动正确配置的笔记本。

pyspark-cassandra除非您对在 python 中使用 RDDs 感兴趣,否则没有必要使用它,因为它有一些性能缺陷。

于 2016-02-28T16:53:48.717 回答
2

在 Python 连接器中公开了DataFrameAPI。只要spark-cassandra-connector可用并且SparkConf包含所需的配置,就不需要额外的包。您可以简单地指定格式和选项:

df = (sqlContext
    .read
    .format("org.apache.spark.sql.cassandra")
    .options(table="mytable", keyspace="mykeyspace")
    .load())

如果你想使用纯 SQL,你可以注册DataFrame如下:

df.registerTempTable("mytable")

## Optionally cache
sqlContext.cacheTable("mytable")

sqlContext.sql("SELECT count(*) FROM mytable group by beamstamp")

连接器的高级特性,比如CassandraRDD没有暴露给 Python,所以如果你需要一些超出DataFrame功能的东西,那么它pyspark-cassandra可能会很有用。

于 2016-02-28T16:28:15.980 回答