pyspark

问题描述

我是一个崭新的世界,我与数据库建立了非常成功的联系。我可以连接到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

瞧,我下载了所有罐子并为其缓存信息。

问题终于解决了。