在同一主机下的Java和R应用程序之间共享SparkContext
这里是设置 目前我已经初始化了两个Spark应用程序。我需要在它们之间传递数据(最好是通过共享的sparkcontext/sqlcontext,这样我就可以查询临时表)。我目前使用拼花文件进行数据帧传输,但是否有其他方法 MasterURL指向同一个SparkMaster 通过端子启动火花:在同一主机下的Java和R应用程序之间共享SparkContext,java,r,apache-spark,dataframe,apache-spark-sql,Java,R,Apache Spark,Dataframe,Apache Spark Sql,这里是设置 目前我已经初始化了两个Spark应用程序。我需要在它们之间传递数据(最好是通过共享的sparkcontext/sqlcontext,这样我就可以查询临时表)。我目前使用拼花文件进行数据帧传输,但是否有其他方法 MasterURL指向同一个SparkMaster 通过端子启动火花: /opt/spark/sbin/start-master.sh; /opt/spark/sbin/start-slave.sh spark://`hostname`:7077 Java应用程序设置: J
/opt/spark/sbin/start-master.sh;
/opt/spark/sbin/start-slave.sh spark://`hostname`:7077
Java应用程序设置:
JavaSparkContext context = new JavaSparkContext(conf);
//conf = setMaster(MasterURL), 6G memory, and 4 cores.
SQLContext sqlContext = new SQLContext(parentContext.sc());
然后我注册一个现有的帧
//existing dataframe to temptable
df.registerTempTable("table");
及
斯巴克
sc <- sparkR.init(master='MasterURL', sparkEnvir=list(spark.executor.memory='6G', spark.cores.max='4')
sqlContext <- sparkRSQL.init(sc)
# attempt to get temptable
df <- sql(sqlContext, "SELECT * FROM table"); # throws the error
sc据我所知,考虑到您当前的配置,这是不可能的。使用registerEmptable创建的表绑定到特定的SQLContext
,该上下文已用于创建相应的DataFrame
。即使您的Java和SparkR应用程序使用相同的主应用程序,它们的驱动程序也运行在不同的JVM上,不能共享单个SQLContext
有一些工具,比如ApacheZeppelin,它们采用不同的方法,使用一个暴露于各个后端的SQLContext
(和SparkContext
)。通过这种方式,您可以使用Scala等注册表并从Python中读取它。有。你可以检查它是如何工作的