隨筆-314  評論-209  文章-0  trackbacks-0
          Spark1.4發布,支持了窗口分析函數(window functions)。
          在離線平臺中,90%以上的離線分析任務都是使用Hive實現,其中必然會使用很多窗口分析函數,如果SparkSQL支持窗口分析函數,

          那么對于后面Hive向SparkSQL中的遷移的工作量會大大降低,使用方式如下:


          1、初始化數據

          創建表

          [sql] view plain copy
          1. create table window_test2 (url string, rate int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';  


          準備測試數據
          [plain] view plain copy
          1. url1,12  
          2. url2,11  
          3. url1,23  
          4. url2,25  
          5. url1,58  
          6. url3,11  
          7. url2,25  
          8. url3,58  
          9. url2,11  

          加載數據:

          [sql] view plain copy
          1. load  data local  inpath  '/opt/bin/short_opt/windows2.data' overwrite into table window_test2 ;  



          2、窗口函數測試

          查詢所有數據

          [sql] view plain copy
          1. select * from window_test2;  
          +-------+-------+
          |  url  | rate  |
          +-------+-------+
          | url1  | 12    |
          | url2  | 11    |
          | url1  | 23    |
          | url2  | 25    |
          | url1  | 58    |
          | url3  | 11    |
          | url2  | 25    |
          | url3  | 58    |
          | url2  | 11    |
          +-------+-------+


          分組排序:
          [sql] view plain copy
          1. select url,rate,row_number() over(partition by url order by rate descas r from window_test2;  
          +-------+-------+----+
          |  url  | rate  | r  |
          +-------+-------+----+
          | url1  | 58    | 1  |
          | url1  | 23    | 2  |
          | url1  | 12    | 3  |
          | url2  | 25    | 1  |
          | url2  | 25    | 2  |
          | url2  | 11    | 3  |
          | url2  | 11    | 4  |
          | url3  | 58    | 1  |
          | url3  | 11    | 2  |
          +-------+-------+----+


          分組統計sum
          [sql] view plain copy
          1. select url,rate,sum(rate) over(partition by url ) as r from window_test2;  
          +-------+-------+-----+
          |  url  | rate  |  r  |
          +-------+-------+-----+
          | url1  | 12    | 93  |
          | url1  | 23    | 93  |
          | url1  | 58    | 93  |
          | url2  | 11    | 72  |
          | url2  | 25    | 72  |
          | url2  | 25    | 72  |
          | url2  | 11    | 72  |
          | url3  | 11    | 69  |
          | url3  | 58    | 69  |
          +-------+-------+-----+



          分組統計avg
          [sql] view plain copy
          1. select url,rate,avg(rate) over(partition by url ) as r from window_test2;  
          +-------+-------+-------+
          |  url  | rate  |   r   |
          +-------+-------+-------+
          | url1  | 12    | 31.0  |
          | url1  | 23    | 31.0  |
          | url1  | 58    | 31.0  |
          | url2  | 25    | 18.0  |
          | url2  | 11    | 18.0  |
          | url2  | 11    | 18.0  |
          | url2  | 25    | 18.0  |
          | url3  | 11    | 34.5  |
          | url3  | 58    | 34.5  |
          +-------+-------+-------+


          分組統計count
          [sql] view plain copy
          1. select url,rate,count(rate) over(partition by url ) as r from window_test2;  
          +-------+-------+----+
          |  url  | rate  | r  |
          +-------+-------+----+
          | url1  | 12    | 3  |
          | url1  | 23    | 3  |
          | url1  | 58    | 3  |
          | url2  | 11    | 4  |
          | url2  | 25    | 4  |
          | url2  | 25    | 4  |
          | url2  | 11    | 4  |
          | url3  | 11    | 2  |
          | url3  | 58    | 2  |
          +-------+-------+----+



          分組lag
          [sql] view plain copy
          1. select url,rate,lag(rate) over(partition by url ) as r from window_test2;  
          +-------+-------+-------+
          |  url  | rate  |   r   |
          +-------+-------+-------+
          | url1  | 12    | NULL  |
          | url1  | 23    | 12    |
          | url1  | 58    | 23    |
          | url2  | 25    | NULL  |
          | url2  | 11    | 25    |
          | url2  | 11    | 11    |
          | url2  | 25    | 11    |
          | url3  | 11    | NULL  |
          | url3  | 58    | 11    |
          +-------+-------+-------+



          3、spark-1.4以后,支持所有的窗口函數了,有利用于hive作業向spark-sql來轉換。
          posted on 2017-10-23 22:04 xzc 閱讀(693) 評論(0)  編輯  收藏 所屬分類: hadoop
          主站蜘蛛池模板: 泽州县| 南靖县| 洱源县| 怀远县| 普定县| 齐齐哈尔市| 阜阳市| 铁力市| 龙口市| 兴隆县| 齐河县| 搜索| 深泽县| 奉贤区| 太湖县| 苏州市| 繁昌县| 商河县| 瑞安市| 海城市| 裕民县| 麻江县| 潍坊市| 蛟河市| 紫云| 乐山市| 毕节市| 安远县| 板桥市| 遵义市| 土默特左旗| 策勒县| 莱阳市| 小金县| 辽阳县| 瑞金市| 渝中区| 洪洞县| 仙居县| 隆昌县| 陕西省|