问题描述
我是一个崭新的世界,我与数据库建立了非常成功的联系。我可以连接到datastax远程数据库,但是当我想从中检索信息时出现问题,我使用:
data = sparkSession.read.format("org.apache.spark.sql.cassandra").options(table="tbthesis",keyspace="test").load()
因为问题是我没有cassandra连接器,所以解决方案是:
pyspark --packages com.datastax.spark:spark-cassandra-connector_2.11:2.5.1
但是由于某种原因,我得到了错误:Java gateway process exited before sending its port number
我还看到了类似问题的其他一些建议,下面在此显示我尝试过的事情,但结果相同,错误为:Java gateway process exited before sending its port number
所以,我的原始代码是:
import os
from pyspark import SparkContext,SparkFiles,sqlContext,SparkFiles
from pyspark.sql import sqlContext,SparkSession
from pyspark.sql.functions import col
secure_bundle_file=os.getcwd()+'\\secure-connect-dbtest.zip'
sparkSession = SparkSession.builder.appName('SparkCassandraApp').config('spark.cassandra.connection.config.cloud.path',secure_bundle_file).config('spark.cassandra.auth.username','test').config('spark.cassandra.auth.password','testquart').config('spark.dse.continuousPagingEnabled',False).master('local[2]').getorCreate()
#Until here is fine,the "reading" is failing
data = sparkSession.read.format("org.apache.spark.sql.cassandra").options(table="tbthesis",keyspace="test").load()
这样,错误是:Java gateway process exited before sending its port number
Solution 1 : environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.datastax.spark:spark-cassandra-connector_2.11:2.5.1 --master spark://127.0.0.1 pyspark'
Solution 2 : environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.datastax.spark:spark-cassandra-connector_2.11:2.5.1 --master local[2] pyspark'
他们都没有为我工作,我遇到了同样的错误。除此之外,我还在系统中正确设置了JAVA_HOME,SPARK_HOME,HADOOP_HOME。
那么,这是怎么回事?
谢谢!
解决方法
我的问题解决了。
问题不是java,hadoop或spark,不是连接器的下载过程,但我无法下载任何内容,因为我用于此jar的缓存文件夹上有东西。
我的spark下载外部jar的文件夹是C:\ Users \ UlysesRico.ivy2 \ jars 其缓存为C:\ Users \ UlysesRico.ivy2 \ cache
我只是删除了缓存和罐子折叠,然后我做到了:
pyspark --packages com.datastax.spark:spark-cassandra-connector_2.11:2.5.1
瞧,我下载了所有罐子并为其缓存信息。
问题终于解决了。