为什么我们不能使用Spark会话创建RDD

Sud*_*dha 8 apache-spark rdd

我们看到了,

Spark context available as 'sc'.
Spark session available as 'spark'.
Run Code Online (Sandbox Code Playgroud)

我读过spark会话包括spark上下文,流上下文,hive上下文...如果是这样,那么为什么我们不能通过使用spark会话而不是spark上下文来创建rdd.

scala> val a = sc.textFile("Sample.txt")
17/02/17 16:16:14 WARN util.SizeEstimator: Failed to check whether UseCompressedOops is set; assuming yes
a: org.apache.spark.rdd.RDD[String] = Sample.txt MapPartitionsRDD[1] at textFile at <console>:24

scala> val a = spark.textFile("Sample.txt")
<console>:23: error: value textFile is not a member of org.apache.spark.sql.SparkSession
       val a = spark.textFile("Sample.txt")
Run Code Online (Sandbox Code Playgroud)

如上所示,sc.textFile成功创建了RDD但没有spark.textFile.

wat*_*nic 9

在Spark 2+中,Spark Context可通过Spark Session获得,因此您需要做的就是:

spark.sparkContext().textFile(yourFileOrURL)
Run Code Online (Sandbox Code Playgroud)

请在此处查看有关此访问方法的文档.

请注意,在PySpark中,这将成为:

spark.sparkContext.textFile(yourFileOrURL)
Run Code Online (Sandbox Code Playgroud)

请参阅此处的文档.


bob*_*bob 5

在更早版本的spark中,spark上下文是Spark的入口点。由于RDD是主要API,因此它是使用上下文API创建和操纵的。

对于其他所有API,我们需要使用不同的上下文。对于流技术,我们需要StreamingContextSQL sqlContext和hive HiveContext

但是随着DataSet and Dataframe API’s成为新的标准API,Spark需要为其构建入口点。因此,在Spark 2.0中,Spark有一个DataSet and Dataframe API’s名为Spark Session的新入口点。

SparkSession本质上是的组合SQLContext, HiveContext and future StreamingContext

在这些上下文中可用的所有API都可以在spark会话中使用。Spark会话内部具有用于实际计算的 Spark 上下文

sparkContext仍然包含其先前版本中的方法。

sparkSession的方法可以在这里找到