sparksql基础应用

来源:互联网 发布:端口共享 编辑:程序博客网 时间:2024/04/19 17:18

  2.0统一用sparksession,目的是统一接口,且功能更灵活,查询结果是dataset,不再用dataframe。dataset相当于之前java开发读数据库的resultset类。但是有些函数还是返回dataframe,比如toDF,但已经不建议使用了,type dataframe=dataset[Row]。

  sparksession的数据源有两种,一种是程序内部,把rdd映射为临时表(视图),用sql进行查询。case class可以隐式转为dataset。第二种是读外部数据,比如好的方式,hive,json,parquet文件等。

下面是个关于spark2.0的sparksql小练习:

package sparksqlimport org.apache.spark.sql.SparkSession/**  * Created by zengxiaosen on 16/9/20.  */case class Log(id: Int, content: String)object sqlTest {  def main(args: Array[String]): Unit = {    val ss = SparkSession.builder()      .master("local")      .appName("word count")      .getOrCreate()    val sc = ss.sparkContext    import ss.implicits._    val rdd = sc.parallelize((0 to 99).map(i => Log(i, s"content_$i")))    val rdd2 = ss.createDataFrame((0 to 99).map(i => List(Log(i, s"content_$i"))))    //临时视图    rdd.toDF("id","content").createTempView("log")    val result = ss.sql("select * from log")    result.show()    result.printSchema()    result.rdd.map{ row =>      val id = row.getAs[Int]("id")      val content = row.getAs[String]("content")      (id, content)    }.foreach(println)    sc.stop()    ss.stop()  }}



0 0
原创粉丝点击