我们看到了,
Spark context available as 'sc'.
Spark session available as 'spark'.
我读过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")
如上所示,sc.textFile
成功创建了RDD,但没有创建spark.textFile
。
答案 0 :(得分:8)
在Spark 2+中,Spark Context可通过Spark Session获得,因此您需要做的就是:
spark.sparkContext().textFile(yourFileOrURL)
请参阅此访问方法here的文档。
请注意,在PySpark中,这将成为:
spark.sparkContext.textFile(yourFileOrURL)
请参阅文档here。
答案 1 :(得分:4)
在早期版本的spark中, spark context 是Spark的切入点。由于RDD是主要的API,它是使用上下文API创建和操作的。
对于其他每个API,我们都需要使用不同的上下文。对于流式传输,我们需要StreamingContext
,SQL 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的方法here
答案 2 :(得分:1)
可以通过以下方式创建 -
val a = spark.read.text(&#34; wc.txt&#34;) 这将创建一个数据帧,如果要将其转换为RDD,则使用 - a.rdd请参考以下链接,关于数据集API- http://cdn2.hubspot.net/hubfs/438089/notebooks/spark2.0/Dataset.html