2017-05-05 300 views
3

sparkContext javaSparkContext SQLContext SparkSession。有什麼區別?是否有任何方法使用Sparksession轉換或創建Context?我可以使用單個條目SparkSession完全替換所有上下文嗎?在SparkSession中是否添加了SQLContext,SparkContext,JavaSparkContext等中的所有函數?一些函數如「並行化」在SparkContext和JavaSparkContext中有不同的用法。如何在SparkSession中使用這樣的功能?如何使用SparkSession創建以下內容? 1. RDD 2. JavaRDD 3. JavaPairRDD 4.數據集sparkContext JavaSparkContext SQLContext SparkSession之間的區別?

是否有任何變換JavaPairRDD到數據集或數據集到JavaPairRDD方法?從火花源代碼

回答

7

sparkContext是一個Scala實現入口點,而JavaSparkContext是一個包裝爲sparkContext的java。

SQLContext是SparkSQL的入口點,其可以接收從sparkContext。之前2.xx的,RDD,數據幀和數據集進行了三個不同的數據abstractions.Since火花2.xx的,所有這三個數據抽象是統一的,SparkSession是Spark的統一切入點。

另外需要注意的是,RDD意味着非結構化數據,強類型數據和DataFrames適用於結構化和鬆散類型的數據。你可以check

是否有任何方法轉換或使用Sparksession創建上下文?

是的。其sparkSession.sparkContext()和SQL,sparkSession.sqlContext()

我可以使用一個單一的條目SparkSession完全替換所有上下文嗎?

是的。你可以從sparkSession中獲得相應的方面。

是否在SparkSession中添加了SQLContext,SparkContext,JavaSparkContext等中的所有函數?

不直接。你必須得到各自的背景和利用它。像向後compactablity

如何在SparkSession中使用這樣的功能?

得到相應的上下文並利用它。

如何使用SparkSession創建以下內容?

  1. RDD可以從sparkSession.sparkContext.parallelize(???)
  2. JavaRDD同樣適用於這一點,但在java中implementtaion
  3. JavaPairRDD sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
  4. 數據集什麼sparkSession回報是數據集,如果它是結構化數據被創建。
2

說明下分支-2.1

SparkContext: 主入口點火花功能。 SparkContext代表到Spark的連接,可用於在該羣集上創建RDD,累加器和廣播變量。

每個JVM只能有一個SparkContext處於活動狀態。您必須在 之前創建一個新的活動SparkContext stop()。這個限制最終可能會被刪除;有關更多詳細信息,請參閱SPARK-2243。

JavaSparkContext:中返回 [org.apache.spark.api.java.JavaRDD] S和與Java集合作品[org.apache.spark.SparkContext] 一個Java的版本而不是斯卡拉的。

每個JVM只能有一個SparkContext處於活動狀態。您必須在 之前創建一個新的活動SparkContext stop()。這個限制最終可能會被刪除;有關更多詳細信息,請參閱SPARK-2243。

SQLContext: 在Spark 1.x中使用結構化數據(行和列)的入口點。

從Spark 2.0開始,它被替換爲[[SparkSession]]。但是,爲了向後兼容,我們在此保留 類。

SparkSession: 使用數據集和DataFrame API編程Spark的入口點。