所以这里是设置。在Java和R应用程序之间使用同一个主机共享SparkContext
目前我有两个Spark应用程序初始化。我需要在它们之间传递数据(最好通过共享的sparkcontext/sqlcontext,这样我就可以查询临时表)。我目前使用Parquet文件进行数据帧传输,但有可能采用其他方式吗?通过终端
MasterURL指向同SparkMaster
开始星火:
/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");
和
SparkR
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