如何解决如何从docker上运行的Cassandra读取数据到Pyspark?
我在Docker上使用以下命令在同一网络(网络名称:test-cs)上运行Cassandra和Pyspark容器:
docker run --name cassandra -v $HOME/Documents/datastax/cassandra:/var/lib/cassandra --network test-cs -d datastax/cassandra:4:0
docker run --name pyspark -p 8888:8888 -p 4040:4040 -p 4041:4041 -p 4042:4042 -e CHOWN_HOME=yes -e GRANT_SUDO=yse -e NB_GID=1000 -e NB_GID=100 -v $HOME/Documents/spark:/home/jovyan/work --network test-cs jupyter/pyspark-notebook
我想从cassandra表中存在的表中读取数据,因此我使用Jupyter笔记本上的这些pyspark代码将spark连接到Cassandra:
# Configuratins related to Cassandra connector & Cluster
import os
os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.datastax.spark:spark-cassandra-connector_2.11:2.3.0 --conf spark.cassandra.connection.host=cassandra pyspark-shell'
请注意,我将这些代码的“ spark.cassandra.connection.host”参数使用cassandra(cassandra容器名称)值而不是Ip(127.0.0.1)。
# Creating PySpark Context
from pyspark import SparkContext
sc = SparkContext("local","movie lens app")
# Creating PySpark SQL Context
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
# Loads and returns data frame for a table including key space given
def load_and_get_table_df(keys_space_name,table_name):
table_df = sqlContext.read\
.format("org.apache.spark.sql.cassandra")\
.options(table=table_name,keyspace=keys_space_name)\
.load()
return table_df
# Loading movies & ratings table data frames
movies = load_and_get_table_df("movie_lens","movies")
ratings = load_and_get_table_df("movie_lens","ratings")
运行上面的代码后,我看到错误,并且无法从Cassandra读取数据并连接到它。请帮助我,因为我是初学者,可以交流Pyspark和cassandra。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。