Ste*_*cek 22 scala apache-spark apache-spark-2.0
我有一个使用Spark 2.0新API的Spark应用程序SparkSession.我正在使用另一个应用程序之上构建此应用程序SparkContext.我想传递SparkContext给我的应用程序并SparkSession使用现有的初始化SparkContext.
但是我找不到怎么做的方法.我发现SparkSession构造函数SparkContext是私有的,所以我不能以这种方式初始化它,构建器不提供任何setSparkContext方法.你认为有一些解决方法吗?
小智 17
就像在上面的例子中你不能创建因为SparkSession构造函数是私有的而是你可以创建一个SQLContext使用SparkContext,然后从sqlcontext获取sparksession就像这样
val sqlContext=new SQLContext(sparkContext);
val spark=sqlContext.sparkSession
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
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;
}
Run Code Online (Sandbox Code Playgroud)
从SparkSession对象中导出对象SparkContext甚至SparkConf很容易。只是您可能会发现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()
Run Code Online (Sandbox Code Playgroud)
希望有帮助!
val sparkSession = SparkSession.builder.config(sc.getConf).getOrCreate()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26827 次 |
| 最近记录: |