SparkContext,
JavaSparkContext,
SQLContext
およびSparkSession
?SparkSession
を使用してコンテキストを変換または作成する方法はありますか?SparkSession
を使用して、すべてのコンテキストを完全に置き換えることはできますか?SQLContext
、SparkContext
、およびJavaSparkContext
のすべての関数もSparkSession
にありますか?parallelize
のような一部の関数は、SparkContext
とJavaSparkContext
で異なる動作をします。 SparkSession
でどのように動作しますか?SparkSession
を使用して以下を作成するにはどうすればよいですか?
RDD
JavaRDD
JavaPairRDD
Dataset
JavaPairRDD
をDataset
に、またはDataset
をJavaPairRDD
に変換する方法はありますか?
sparkContext
はScala=実装エントリポイントであり、JavaSparkContext
はJava sparkContext
のラッパーです。
SQLContext
はsparkContext
から受信できるSparkSQLのエントリポイントです。2.xxより前、RDD、DataFrameおよびData-setは3つの異なるデータ抽象化でした。SinceSpark 2.xx、3つのデータ抽象化はすべて統合され、SparkSession
はSparkの統合エントリポイントです。
追加の注意事項は、RDDは非構造化データ、厳密には型指定されたデータ、DataFrameは構造化された緩やかに型指定されたデータを意味します。 チェック
Sparksessionを使用してコンテキストを変換または作成する方法はありますか?
はい。そのsparkSession.sparkContext()
およびSQLの場合、sparkSession.sqlContext()
単一のエントリSparkSessionを使用してすべてのコンテキストを完全に置き換えることはできますか?
はい。 sparkSessionからそれぞれのコンテキストを取得できます。
SQLContext、SparkContext、JavaSparkContextなどのすべての関数はSparkSessionに追加されますか?
直接ではありません。それぞれのコンテキストを取得し、それを利用する必要がありました。後方互換性のようなもの
SparkSessionでそのような関数を使用する方法は?
それぞれのコンテキストを取得して利用します。
SparkSessionを使用して以下を作成する方法は?
sparkSession.sparkContext.parallelize(???)
から作成できますsparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
Branch-2.1のsparkソースコードからの説明
SparkContext: Spark機能のメインエントリポイント。 SparkContextはSparkクラスターへの接続を表し、そのクラスターでRDD、アキュムレーター、およびブロードキャスト変数を作成するために使用できます。
JVMごとにアクティブにできるSparkContextは1つだけです。新しいものを作成する前に、アクティブなSparkContextをstop()
する必要があります。この制限は最終的に削除される可能性があります。詳細については、SPARK-2243を参照してください。
JavaSparkContext: [[org.Apache.spark.SparkContext]]のJava対応バージョンで、[[org.Apache.spark.api.Java.JavaRDD]]を返し、Java Scalaコレクションではなくコレクション。
JVMごとにアクティブにできるSparkContextは1つだけです。新しいものを作成する前に、アクティブなSparkContextをstop()
する必要があります。この制限は最終的に削除される可能性があります。詳細については、SPARK-2243を参照してください。
SQLContext: Spark 1.xの構造化データ(行と列)を操作するためのエントリポイント。
Spark 2.0以降、これは[[SparkSession]]に置き換えられます。ただし、下位互換性のためにここにクラスを保持しています。
SparkSession: DatasetおよびDataFrame APIを使用したプログラミングSparkへのエントリポイント。
Spark ContextはSpark APIのクラス sparkアプリケーションを構築する最初の段階です。 sparkコンテキストの機能は、RAMにメモリを作成することです。これをドライバーメモリと呼びます。実行者とコアの数の割り当ては、要するにクラスター管理に関するものです。 Sparkコンテキストを使用して、RDDおよび共有変数を作成できます。これにアクセスするには、そのオブジェクトを作成する必要があります。
この方法でSparkコンテキストを作成できます:: var sc = new SparkContext()
Sparkセッション、これはspark 2.x以降に追加された新しいオブジェクトですこれは、SQLコンテキストとHiveコンテキストの置き換えです。以前は、Dataframeでsql操作を実行する方法であるSql Contextと、Hive接続関連のものを管理し、Hiveテーブルとの間でデータをフェッチ/挿入するHive Contextという2つのオプションがありました。
2.xが登場したため、DataframeでのSQL操作用にSparkSessionを作成できます。Hive関連の作業がある場合は、メソッドenablehivesupport()を呼び出すだけで、DataframeおよびHive関連のSQL操作の両方でSparkSessionを使用できます。
このようにして、DataframeでSQL操作用のSparkSessionを作成できます
val sparksession = SparkSession.builder()。getOrCreate();
2番目の方法は、Hive操作と同様に、DataframeでSQL操作用のSparkSessionを作成することです。
val sparkSession = SparkSession.builder()。enableHiveSupport()。getOrCreate()
Sparkバージョン2.xのみについて説明します。
SparkSession:これは、sparkアプリケーションのメインエントリポイントです。スパークでコードを実行するには、最初に作成する必要があります。
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local").appName("Word Count")\
.config("spark.some.config.option", "some-value")\
.getOrCreate()
SparkContext:これは、SparkSessionの内部オブジェクト(プロパティ)です。 Low-Level API
を介してSparkContext
とやり取りするために使用され、RDD
、accumlator
、_Broadcast variables
を作成できます。
ほとんどの場合、SparkContext
は必要ありません。 SparkContext
からSparkSession
を取得できます
val sc = spark.sparkContext