2017-02-17 24 views
3

我们看到,为什么我们不能创造一个RDD使用星火会议

Spark context available as 'sc'. 
Spark session available as 'spark'. 

我读火花会话包括火花背景下,流背景下,蜂巢背景......如果是这样,那么我们为什么不能够通过使用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") 

如上所示,sc.textFile成功地创建RDD但不spark.textFile

回答

1

在早期版本的火花中,火花上下文是Spark的入口点。由于RDD是主要的API,它是使用上下文API创建和操作的。

对于其他所有API,我们需要使用不同的上下文。对于流式传输,我们需要StreamingContext,对于SQL sqlContext和配置单元HiveContext

但是随着DataSet and Dataframe API’s正在成为新的标准API的Spark需要为他们建立一个入口点。因此,在Spark 2.0中,Spark有一个新的入口点DataSet and Dataframe API’s,称为Spark会话

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

这些上下文中提供的所有API也可用于spark会话。 Spark会话内部有一个实际计算的火花上下文

sparkContext仍然包含它在之前的 版本中的方法。 sparkSession的

方法可以发现here

2

火花2+,星火上下文是通过星火会话中使用,因此,所有你需要做的是:

spark.sparkContext().textFile(yourFileOrURL) 

看到这个文件访问方法here

注意,在此PySpark将成为:

spark.sparkContext.textFile(yourFileOrURL) 

看到的文档here

+0

这是正确的答案。 – chhantyal