zoukankan      html  css  js  c++  java
  • 【2020/2/1】寒假自学——学习进度报告8

      开始尝试sparkSQL的尝试编程。


      SparkSQL总体来说就是spark中的hive,但麻烦的一点是spark官网下载的并不自带对hive的支持,所以不能使用外部的hive。之后解决。

      所以这次主要关注dataframe的编程。

      首先创建了一个json文件用来创建DataFrame,内容为:

    { "id":1 , "name":" Ella" , "age":36 }

    { "id":2, "name":"Bob","age":29 }

    { "id":3 , "name":"Jack","age":29 }

    { "id":4 , "name":"Jim","age":28 }

    { "id":4 , "name":"Jim","age":28 }

    { "id":5 , "name":"Damon" }

    { "id":5 , "name":"Damon" } 

      编写程序的开头。

    import findspark
    
    findspark.init()
    
    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder.getOrCreate()

      SparkSession是sparksql的入口。

      然后就是可以进行操作。

      显示所有数据:

    df=spark.read.json("file:///usr/local/spark/mycode/exp5/employee.json")
    df.show()

      

       排序:

    df = spark.read.json("file:///usr/local/spark/mycode/exp5/employee.json")
    df.sort(df.age.desc()).show()

      

       求均值:

    df = spark.read.json("file:///usr/local/spark/mycode/exp5/employee.json")
    df.groupBy().avg("age").show()

      

       值得一提,python中的dataframe可以直接调用其中的列作为迭代器,但只能作为dataframe函数的参数。看了源代码之后发现dataframe函数和groupBy之后的函数不一样,就想avg、max等函数只有在groupBy之后才能使用,但这时不能使用迭代器(也就是df.age这类),只能使用string。

       具体函数可以参考文档。

      在值得一提,发现一个很有用的功能。

    df.agg({"age": "max"}).show()

    from
    pyspark.sql import functions as F df.agg(F.min(df.age)).show()

      agg(*exprs)[source]这个函数可以免去group的麻烦()。

  • 相关阅读:
    驱动开发环境安装
    FireMonkey下的异形窗体拖动(句柄转换)
    Microsoft Win32 Programmer's Reference.chm
    Qt 访问网络的 HttpClient(封装QNetworkAccessManager,且有服务端)
    JBPM4 安装和配置
    DDD:谈谈数据模型、领域模型、视图模型和命令模型
    多个文件目录下Makefile的写法
    .NET程序集1
    Ajax初步理解
    Kemaswill 机器学习 数据挖掘 推荐系统 Ranking SVM 简介
  • 原文地址:https://www.cnblogs.com/limitCM/p/12250518.html
Copyright © 2011-2022 走看看