建设肯德基网站的好处如何提高网站百度权重
1、 Spark中的窗口函数 
         窗口就是单纯在行后面加一个列
         可以套多个窗口函数,但彼此之间不能相互引用,是独立的
         
         窗口函数会产生shuffle
         
         over就是用来划分窗口的
    (1) 分组聚合里面的函数,基本都可以用于窗口函数
            count 、 avg 、 max 、 min
            DENSE_RANK :  连续排序    11122333
            RANK :        跳跃排名    11144666
     
     
     (2) 窗口函数  排序和不排序的区别 :
            不排序  -- 全局结果,同一个组内每一条数据后面的值都一样
            排序    --  累计, 第三条数据是第一条和第二条数据的和
            
            
     (3) 凡是通过自己和自己关联的, 都是可以通过窗口实现的
         
         sum(case when round(r/2)=zhongweishu then sco else 0 end)   -- 下标等于中位数返回true,做sum(sco)求和 , 否则不求和
         
 2、 Spark  --  DF与RDD之间的相互转换
     
     创建好 SparkSession 之后可以直接获取 SparkContext
     
     DF比RDD多了列名和列类型
     
     (1) RDD  转换成  DF    --   studentRDD.toDF
             需要注意字段的数量和顺序、 需要导入隐式转换
     
     (2) DF  转换成  RDD    --   studentDF.rdd
     
     
3、 Spark 自定义函数
         所有可以写sql的框架都可以自定义函数
         
         两种情况 :  用在DSL、 用在sql 
     
     (1) 定义自定义函数  
         val ageAdd: UserDefinedFunction = udf((age: Int) => {
           age + 1
         })
         
         
     (2) DSL 可以直接调用 自定义函数
     
     (3) 需要自定义函数, 并注册  才能在sql中使用
         // 注册自定义函数
         spark.udf.register("ageAdd", ageAdd)
         
        
