java - 从java中的SparkSession读取对象文件

标签 java apache-spark rdd

我使用 JavaSparkContext 将 JavaRDD 编写为对象文件:

JavaSparkContext sc = new JavaSparkContext(conf); //where conf is a SparkConf
JavaRDD<MyClass> something;
something.saveAsObjectFile("path");

我可以使用以下方法轻松加载此文件:

JavaRDD<MyClass> loaded = sc.objectFile("path);

现在,在同一个程序中,我想加载对象文件并使用 SparkSession,以便从另一个文件创建 DataFrame,所以我使用:

SparkSession spark = SparkSession.builer()
.appName("someName")
.master("local")
.getOrCreate();

有没有办法使用spark而不是JavaSparkContext来加载对象文件?

我尝试在同一程序中创建 JavaSparkContext 实例,但收到错误:

SparkException: Only one SparkContext may be running in this JVM (see SPARK-2243).

我知道 SparkSession 封装了 SparkContext,但是我怎样才能做我想做的事(在 Java 中)?有没有办法从 SparkSession 获取 JavaSparkContext?我可以使用另一种方式使用 SparkSession 而不是 JavaSparkContext 来编写对象文件(我想将其保存为压缩文件而不是原始文本)吗?

最佳答案

SparkSession 结合了 SparkContext 和 SqlContext,因此在同一个应用程序中,如果您在创建 SparkContext 后尝试初始化 SparkSession,它将抛出异常。所以最好只使用SparkSession。在任何情况下,您都可以在 SparkSession 初始化之前停止 SparkContext 并继续使用 SqlContext + SparkContext。

关于java - 从java中的SparkSession读取对象文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066777/

相关文章:

JavaFX 折线图性能

javascript - HTML/CSS : How to make multiple 'versions' of an 'article' for different types of articles

java - Spark App 参数编码

hadoop - 在 Spark Streaming 中更改输出文件名

java - 任务未读取 Spark 累加器值

java - 具有给定 PKCS12 的 Netty websocket 客户端示例

java - 检查二维数组是否包含此字段或者它是否未定义

scala - 折叠 Spark 数据帧

scala - RDD中是否有任何 Action 保持顺序?

performance - Spark Stage 性能,发现只有少数任务的 GC 时间非常高