• sparkSessiontest


    记事本内容:

     打印结构:

    方法1:
    object SparkSessionTest {
    
      case class Person(name:String,age:Int)
    
      def main(args: Array[String]): Unit = {
    
        val sparkSession=SparkSession.builder().appName("SparkSessionTest")
          .master("local[*]")
          .getOrCreate()
        val sparkContext=sparkSession.sparkContext
        val rdd=sparkContext.textFile("D:\temp\person.txt")
        val rowRdd=rdd.map(_.split(" ")).map(row=>Person(row(0),row(1).toInt))
    
        import sparkSession.implicits._
        rowRdd.toDF
        
        sparkSession.stop()
      }
    
    }
    方法2:
    val sparkContext=sparkSession.sparkContext
    val rdd=sparkContext.textFile("D:\temp\person.txt")
    val schemaFiled="name,age"
    val schemaString=schemaFiled.split(",")
    val schema =StructType(
      List(
        StructField(schemaString(0),StringType,nullable = true),
        StructField(schemaString(1),IntegerType,nullable = true)
      )
    )
    val rowRdd= rdd.map(_.split("")).map(p=>Row(p(0),p(1).toInt))
    val df=sparkSession.createDataFrame(rowRdd,schema)
    df.show()
    

      结果展示:

    parquet的优势

    支持列存储+嵌套数据格式+适配多个计算框架

    节省表扫描时间和反序列的时间

    压缩技术稳定出色,节省存储空间

    Spark操作 Parquet文件比操作CSV等普通文件的速度更快

    加载数据:sparkSession.read.parquet(“/nginx/20200110.parquet”)

    写入数据:df.write.mode(SaveMode.Overwrite).parquet(“/path/to”)

    分区文件

    加载批量数据:

    Df.show()//只显示前20条数据
    Df.show(3)//只显示前3条数据
    df.show( false)//每列可以显示多于20个字符
    dt show(3, false)
    

     

    Df.select (“字段1”,”字段2”).show()
    Df.select(col(“”) as(“别名1”),col(“字段2”)+1).show()
    

      

    df.first()//获取第一行数据,返回RoW
    df.head( 3)//获取前3行数据,返回 Array Row]
    df.take (3)//获取前3行数据,返回 Array[Row]
    df.takeaslist(3//获取前3行数据,返回List[Row]
    df.limit(3).show()//返回新的 Data Frame,不是 Action操作
    

      

    Df.where(“age>21”).show()
    Df.filter(“age>21”).show()
    Df.where(col(“age”)>21).show()
    Ds.where($”age”>21).show()
    

      

    Df.where(“age=21”).show
    Df.where(col(“age”)===21).show
    Df.where(col(“age”)=!=21).show
    

      

    Val  ageFilter_1 =col(“age”)>21
    Val  agefilter_2=col(“age”)<25
    Val  ageFilter_3=agefilter_1.or(ageFilter_2)
    Df.where(col(“name”)===”jack”).where(ageFilter_3)
    

      

    Val ageFilter_1 =col(“age”)>21
    Val ageFilter_2=col(“age”)<25
    Val ageFilter_3 =ageFilter_1.ll(ageFilter_2)
    Df.where(col(“name”)===”jack”)
    .where(ageFitler_3)
    .show
    
    //按照身份统计人数
    Df.groupBy(col(“province”)) .count .show

    按照城市,手机运营商分组统计人数并按人数排序

    //方法1
    Df.groupby(col(“city”),col(“”op_phone“”)) .count .withColumnRenamed(“count”,”num”) .orderBy(col(“num”).desc) .show
    //方法2
    Ds.groupBy($”city”,$”op_phone”)
    .count
    .withColumnRenamed(“count”,”num”)
    .sort($”num”.desc)
    .show
    

      按年统计注册用户最高的积分,以及平均积分

    Df.groupBy(year(col(“add_time”)))
    .agg(max(col(“total_mark”).as(“max_mark”)),
    Avg(col(“total_mark”).as(“avg_mark”))
    )
    .show

     

     

     

     

  • 相关阅读:
    kubadm初始化找不到镜像
    ssh登录等待时间长问题
    6.vue之v-html
    5.vue之v-text
    4.vue之data对象
    3.vue之el:挂载点
    2.vue基础test
    1.vue之软件VSCode(自动刷新)
    java计算金额保留两位小数精确到分(四舍六入五成双)
    win7 64位 旗舰版装系统记录及window简记
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/12213047.html
Copyright © 2020-2023  润新知