关于SQLContext过期,SparkSession登场

mac2025-01-09  18

关于SQLContext过期问题。

 

源码中解释道:

spark2.0之后使用sparksession替代,不过仍然保留了SQLContext。

那么他们两个有不同吗?这里只说一个重要的。在你使用SparkSession代替SQLContext的时候

package SparkSql import org.apache.spark.sql.{DataFrame, SQLContext, SparkSession} import org.apache.spark.{SparkConf, SparkContext} /** * 创建DataFrame的几种方式 * 1.读取json格式的文件创建DataFrame */ object DFScalaDemo { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("www").setMaster("local") val sc = new SparkContext(conf) sc.setLogLevel("error") val ss: SparkSession = new SparkSession(sc) val frame: DataFrame = ss.read.format("json").load("./data/json") frame.show() sc.stop() } }

好像看起来不错,编译也通过的,但是当你运行时。你会发现:

 

所以1、你可以继续使用SQLContext去创建,2、就是像我一向样,去研究一下了。嘿嘿

在SparkSession的API中,我们发现:

看不如手动试一试:

果然如此。 

package SparkSql import org.apache.spark.sql.{DataFrame, SQLContext, SparkSession} import org.apache.spark.{SparkConf, SparkContext} /** * 创建DataFrame的几种方式 * 1.读取json格式的文件创建DataFrame */ object DFScalaDemo { def main(args: Array[String]): Unit = { val sparkSession = SparkSession.builder.appName("www").master("local").getOrCreate() val frame: DataFrame = sparkSession.read.format("json").load("./data/json") frame.show() /** * +----+------+ * | age| name| * +----+------+ * | 22|george| * |null| lucy| * | 20| honey| * | 20| KK| * +----+------+ */ sparkSession.stop() } }

所以SparkSession虽然代替了SQLContext,但在语法上略有不同,需要二次学习。。。

路漫漫!!!

最新回复(0)