zoukankan      html  css  js  c++  java
  • Spark SQL

    1.DataFrame与RDD的区别

      RDD是分布式的 Java对象的集合

      DataFrame是一种以RDD为基础的分布式数据集,也就是分布式的Row对象的集合(每个Row对象代表一行记录),提供了详细的结构信息,也就是我们经常说的模式(schema).简单理解就是类似表

    2.Schema 是什么

             DataFrame中提供了详细的数据结构信息,从而使得SparkSQL可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么,

     DataFrame中的数据结构信息,即为schema。

    3.

     people.json 文件:

    {"name":"小周","age":88}
    {"name":"小红", "age":30}
    {"name":"李行", "age":19}
    {"name":"小翠", "age":88}

    /**
      * Created by soyo on 17-10-10.
      */
    import org.apache.spark.{SparkConf, SparkContext}
    import org.apache.spark.sql.SparkSession
    object Spark_Sql {
    
      def main(args: Array[String]): Unit = {
        val conf=new SparkConf().setAppName("soyo").setMaster("local[2]")// 写这两条语句不用设置-Dspark.master=local
        val sc=new SparkContext(conf)                                    //
         val spark=SparkSession.builder().getOrCreate()
        val df= spark.read.json("file:///home/soyo/桌面/spark编程测试数据/people.json")
         df.show()
         df.printSchema()
        df.select(df("name"),df("age")+5).show()
        df.filter(df("age")>20).show()
        df.groupBy("age").count().show()
        df.sort(df("age").desc).show()
        df.select(df("name").as("姓名"),df("age").as("年龄")).sort(df("age").desc).show()
        df.select("name","age").write.format("csv").save("file:///home/soyo/桌面/spark编程测试数据/people_json.csv") //DF的保存(方法一)
        df.rdd.saveAsTextFile("file:///home/soyo/桌面/spark编程测试数据/people_save.txt")//DF的保存(方法二)
        //再次加载
        val text=sc.textFile("file:///home/soyo/桌面/spark编程测试数据/people_json.csv")
        text.foreach(println)
      }
    
    }

    运行结果:

    +---+----+
    |age|name|
    +---+----+
    | 88|  小周|
    | 30|  小红|
    | 19|  李行|
    | 88|  小翠|
    +---+----+

    root
     |-- age: long (nullable = true)
     |-- name: string (nullable = true)

    +----+---------+
    |name|(age + 5)|
    +----+---------+
    |  小周|       93|
    |  小红|       35|
    |  李行|       24|
    |  小翠|       93|
    +----+---------+

    +---+----+
    |age|name|
    +---+----+
    | 88|  小周|
    | 30|  小红|
    | 88|  小翠|
    +---+----+

    +---+-----+
    |age|count|
    +---+-----+
    | 19|    1|
    | 88|    2|
    | 30|    1|
    +---+-----+

    +---+----+
    |age|name|
    +---+----+
    | 88|  小周|
    | 88|  小翠|
    | 30|  小红|
    | 19|  李行|
    +---+----+

    +---+---+
    | 姓名| 年龄|
    +---+---+
    | 小周| 88|
    | 小翠| 88|
    | 小红| 30|
    | 李行| 19|
    +---+---+

    小周,88
    小红,30
    李行,19
    小翠,88

  • 相关阅读:
    自定义返回模型
    【读书笔记】C#高级编程 第二十五章 事务处理
    【读书笔记】C#高级编程 第二十四章 文件和注册表操作
    【读书笔记】C#高级编程 第二十二章 安全性
    【读书笔记】C#高级编程 第二十一章 任务、线程和同步
    【读书笔记】C#高级编程 第二十章 诊断
    【读书笔记】C#高级编程 第十九章 程序集
    【读书笔记】C#高级编程 第十六章 错误和异常
    【读书笔记】C#高级编程 第十五章 反射
    【读书笔记】C#高级编程 第十四章 内存管理和指针
  • 原文地址:https://www.cnblogs.com/soyo/p/7647638.html
Copyright © 2011-2022 走看看