Spark Spark 2.0の新しいAPIをSparkSession
で使用するアプリケーション。 SparkContext
を使用して、SparkContext
をアプリケーションに渡し、既存のSparkSession
を使用してSparkContext
を初期化します。
しかし、私はそれを行う方法を見つけることができませんでした。 SparkSession
を持つSparkContext
コンストラクターはプライベートなので、そのように初期化できず、ビルダーはsetSparkContext
メソッドを提供しません。回避策があると思いますか?
どうやら、既存のSparkSession
からSparkContext
を初期化する方法はありません。
上記の例のように、SparkSession
のコンストラクタはプライベートであるため作成できません。代わりに、SQLContext
を使用してSparkContext
を作成し、後でこのようなsqlcontextからsparksessionを取得できます
val sqlContext=new SQLContext(sparkContext);
val spark=sqlContext.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
から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()
お役に立てば幸いです!
val sparkSession = SparkSession.builder.config(sc.getConf).getOrCreate()
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(コンパイル時の型チェックはありません)、データ...