如何从现有的 SparkContext 创建 SparkSession
How to create SparkSession from existing SparkContext
我有一个 Spark 应用程序,它使用 Spark 2.0 new API 和 SparkSession
。
我正在使用 SparkContext
的另一个应用程序之上构建此应用程序。我想将 SparkContext
传递给我的应用程序并使用现有的 SparkContext
初始化 SparkSession
。
但是我找不到如何做到这一点的方法。我发现带有 SparkContext
的 SparkSession
构造函数是私有的,所以我不能以这种方式初始化它,并且构建器不提供任何 setSparkContext
方法。你认为有一些解决方法吗?
显然无法从现有 SparkContext
.
初始化 SparkSession
public JavaSparkContext getSparkContext()
{
SparkConf conf = new SparkConf()
.setAppName("appName")
.setMaster("local[*]");
JavaSparkContext jsc = new JavaSparkContext(conf);
return jsc;
}
public SparkSession getSparkSession()
{
sparkSession= new SparkSession(getSparkContext().sc());
return sparkSession;
}
you can also try using builder
public SparkSession getSparkSession()
{
SparkConf conf = new SparkConf()
.setAppName("appName")
.setMaster("local");
SparkSession sparkSession = SparkSession
.builder()
.config(conf)
.getOrCreate();
return sparkSession;
}
像上面的例子一样你不能创建因为SparkSession
的构造函数是私有的
相反,您可以使用 SparkContext
创建一个 SQLContext
,然后像这样
从 sqlcontext 获取 sparksession
val sqlContext=new SQLContext(sparkContext);
val spark=sqlContext.sparkSession
希望对您有所帮助
val sparkSession = SparkSession.builder.config(sc.getConf).getOrCreate()
从 SparkContext
甚至 SparkConf
中导出 SparkSession
对象很容易。只是您可能会发现 API 有点复杂。这是一个示例(我正在使用 Spark 2.4
但这应该也适用于较旧的 2.x
版本):
// If you already have SparkContext stored in `sc`
val spark = SparkSession.builder.config(sc.getConf).getOrCreate()
// Another example which builds a SparkConf, SparkContext and SparkSession
val conf = new SparkConf().setAppName("spark-test").setMaster("local[2]")
val sc = new SparkContext(conf)
val spark = SparkSession.builder.config(sc.getConf).getOrCreate()
希望对您有所帮助!
我有一个 Spark 应用程序,它使用 Spark 2.0 new API 和 SparkSession
。
我正在使用 SparkContext
的另一个应用程序之上构建此应用程序。我想将 SparkContext
传递给我的应用程序并使用现有的 SparkContext
初始化 SparkSession
。
但是我找不到如何做到这一点的方法。我发现带有 SparkContext
的 SparkSession
构造函数是私有的,所以我不能以这种方式初始化它,并且构建器不提供任何 setSparkContext
方法。你认为有一些解决方法吗?
显然无法从现有 SparkContext
.
SparkSession
public JavaSparkContext getSparkContext()
{
SparkConf conf = new SparkConf()
.setAppName("appName")
.setMaster("local[*]");
JavaSparkContext jsc = new JavaSparkContext(conf);
return jsc;
}
public SparkSession getSparkSession()
{
sparkSession= new SparkSession(getSparkContext().sc());
return sparkSession;
}
you can also try using builder
public SparkSession getSparkSession()
{
SparkConf conf = new SparkConf()
.setAppName("appName")
.setMaster("local");
SparkSession sparkSession = SparkSession
.builder()
.config(conf)
.getOrCreate();
return sparkSession;
}
像上面的例子一样你不能创建因为SparkSession
的构造函数是私有的
相反,您可以使用 SparkContext
创建一个 SQLContext
,然后像这样
val sqlContext=new SQLContext(sparkContext);
val spark=sqlContext.sparkSession
希望对您有所帮助
val sparkSession = SparkSession.builder.config(sc.getConf).getOrCreate()
从 SparkContext
甚至 SparkConf
中导出 SparkSession
对象很容易。只是您可能会发现 API 有点复杂。这是一个示例(我正在使用 Spark 2.4
但这应该也适用于较旧的 2.x
版本):
// If you already have SparkContext stored in `sc`
val spark = SparkSession.builder.config(sc.getConf).getOrCreate()
// Another example which builds a SparkConf, SparkContext and SparkSession
val conf = new SparkConf().setAppName("spark-test").setMaster("local[2]")
val sc = new SparkContext(conf)
val spark = SparkSession.builder.config(sc.getConf).getOrCreate()
希望对您有所帮助!