Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 如何使用PySpark、SparkSQL和Cassandra?_Apache Spark_Cassandra_Pyspark_Pyspark Sql - Fatal编程技术网

Apache spark 如何使用PySpark、SparkSQL和Cassandra?

Apache spark 如何使用PySpark、SparkSQL和Cassandra?,apache-spark,cassandra,pyspark,pyspark-sql,Apache Spark,Cassandra,Pyspark,Pyspark Sql,我对这个故事中的不同角色有点困惑:PySpark、SparkSQL、Cassandra和PySpark Cassandra连接器 据我所知,Spark发展了很多,SparkSQL现在是具有“数据帧”的关键组件。显然,没有SparkSQL绝对没有理由工作,尤其是连接到Cassandra时 所以我的问题是:需要什么组件,如何以最简单的方式将它们连接在一起 使用Scala中的spark shell,我可以简单地 ./bin/spark-shell --jars spark-cassandra-conn

我对这个故事中的不同角色有点困惑:PySpark、SparkSQL、Cassandra和PySpark Cassandra连接器

据我所知,Spark发展了很多,SparkSQL现在是具有“数据帧”的关键组件。显然,没有SparkSQL绝对没有理由工作,尤其是连接到Cassandra时

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

使用Scala中的spark shell,我可以简单地

./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")
我怎样才能用Pypark做到这一点

这里有几个子问题,以及我收集的部分答案,如果我错了,它们是正确的

需要pyspark casmandra吗?我不这么认为-我不明白一开始在做什么

我需要使用pyspark吗?或者我可以使用我的常规jupyter笔记本,自己导入必要的东西吗


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

df=sqlContext 阅读 .formatorg.apache.spark.sql.cassandra .options表=我的表,键空间=我的键空间 负载 如果希望使用普通SQL,则可以按如下方式注册数据帧:

df.RegisterEmptableMyTable 选择性缓存 sqlContext.cacheTablemytable sqlContext.sqlSELECT count*从mytable组按beamstamp排序
连接器的高级功能(如CassandraRDD)不向Python公开,因此如果您需要数据帧功能以外的功能,那么pyspark cassandra可能会很有用。

Python连接器中的数据帧API是公开的。只要spark cassandra连接器可用且SparkConf包含所需配置,就不需要额外的软件包。您只需指定格式和选项:

df=sqlContext 阅读 .formatorg.apache.spark.sql.cassandra .options表=我的表,键空间=我的键空间 负载 如果希望使用普通SQL,则可以按如下方式注册数据帧:

df.RegisterEmptableMyTable 选择性缓存 sqlContext.cacheTablemytable sqlContext.sqlSELECT count*从mytable组按beamstamp排序
连接器的高级功能(如CassandraRDD)不向Python公开,因此如果您需要数据帧功能以外的功能,则pyspark cassandra可能会很有用。

pyspark应使用spark cassandra连接器包启动,如spark cassandra连接器中所述

加载此文件后,您将能够使用Spark on C*数据帧中已经存在的任何数据帧操作

要将其设置为与jupyter笔记本一起运行,只需使用以下属性设置您的环境

export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS=notebook
调用pyspark将启动正确配置的笔记本电脑


没有必要使用pyspark cassandra,除非您在python中使用RDD时有一些性能缺陷。

pyspark应该使用spark cassandra连接器包启动,如spark cassandra连接器中所述

加载此文件后,您将能够使用Spark on C*数据帧中已经存在的任何数据帧操作

要将其设置为与jupyter笔记本一起运行,只需使用以下属性设置您的环境

export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS=notebook
调用pyspark将启动正确配置的笔记本电脑


没有必要使用pyspark cassandra,除非您在python中使用RDD,因为RDD存在一些性能缺陷。

好的,谢谢。在Scala中,是否可以通过SQL api直接访问表?据我所知,这是不可能的。您当然可以像往常一样注册清空。而且,没有卡桑德拉的等价物。稍后我会发布一些代码,以确保我得到了正确的答案。好的,谢谢。在Scala中,是否可以通过SQL api直接访问表?据我所知,这是不可能的。您当然可以像往常一样注册清空。而且,没有卡桑德拉的等价物。稍后我会发布一些代码,以确保我得到了正确的答案。