web-dev-qa-db-ja.com

既存のSparkContextからSparkSessionを作成する方法

Spark Spark 2.0の新しいAPIをSparkSessionで使用するアプリケーション。 SparkContextを使用して、SparkContextをアプリケーションに渡し、既存のSparkSessionを使用してSparkContextを初期化します。

しかし、私はそれを行う方法を見つけることができませんでした。 SparkSessionを持つSparkContextコンストラクターはプライベートなので、そのように初期化できず、ビルダーはsetSparkContextメソッドを提供しません。回避策があると思いますか?

17
Stefan Repcek

どうやら、既存のSparkSessionからSparkContextを初期化する方法はありません。

15
Stefan Repcek

上記の例のように、SparkSessionのコンストラクタはプライベートであるため作成できません。代わりに、SQLContextを使用してSparkContextを作成し、後でこのようなsqlcontextからsparksessionを取得できます

val sqlContext=new SQLContext(sparkContext);
val spark=sqlContext.sparkSession

お役に立てれば

15
Partha Sarathy
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;
}
5
Mostwanted Mani

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()

お役に立てば幸いです!

4
Rishabh
val sparkSession = SparkSession.builder.config(sc.getConf).getOrCreate()
3
lostsoul29

SparkSessionとSparkContextを使用していることにお気づきでしょうが、これはエラーではありません。 Spark歴史の歴史を再考してみましょう。これらの接続オブジェクトについてはしばらくの間聞くので、どこから来たのかを理解することが重要です。

Spark 2.0.0以前は、3つの主要な接続オブジェクトはSparkContext、SqlContext、およびHiveContextでした。SparkContextオブジェクトはSpark=実行環境とRDDなどを作成し、SQLContextはSparkContextのバックグラウンドでSparkSQLと連携し、HiveContextはHiveストアと対話しました。

Spark 2.0.0では、メインの分散データ抽象化インターフェイスとしてDatasets/DataFramesが導入され、SparkSessionオブジェクトがSpark実行環境へのエントリポイントとして導入されました。適切には、SparkSessionオブジェクトは名前空間org .Apache.spark.sql.SparkSession(Scala)、またはpyspark.sql.sparkSession。注意すべきいくつかのポイントは次のとおりです。

ScalaおよびJavaでは、データセットは型付きデータとしてメインデータの抽象化を形成しますが、PythonおよびR(コンパイル時の型チェックはありません)、データ...

https://www.packtpub.com/mapt/book/big_data_and_business_intelligence/9781785889271/4/ch04lvl1sec31/sparksession-versus-sparkcontext

1
Raider Yang