1. cast()更改數據類型
cast(column_name as type)
2. get_dt_date()自定義日期操作函數(返回不帶橫線的日期)
select get_dt_date();–獲取當前日期,返回 20170209
select get_dt_date(get_date(-2));–獲取當前日期偏移,轉為不帶橫桿的格式
select get_dt_date(‘2017-02-02’,-2);–20170131
3.ROW_NUMBER(),它為結果集的分區中的每一行分配一個連續的整數。 行號以每個分區中第一行的行號開頭。
ROW_NUMBER() OVER ([PARTITION BY partition_expression, ... ]ORDER BY sort_expression [ASC | DESC], ...
)
PARTITION BY子句將結果集劃分為分區。 ROW_NUMBER()函數分別應用于每個分區,并重新初始化每個分區的行號。PARTITION BY子句是可選的。如果未指定,ROW_NUMBER()函數會將整個結果集視為單個分區。ORDER BY子句定義結果集的每個分區中的行的邏輯順序。 ORDER BY子句是必需的,因為ROW_NUMBER()函數對順序敏感。
4.根據分區查詢partitions where
5.插入或覆寫數據(INSERT INTO | INSERT OVERWRITE)
執行insert into和insert overwrite操作前需要具備目標表的修改權限(Alter)及源表的元信息讀取權限(Describe)。授權操作請參見權限列表
6. 千分位函數percentile(), percentile_approx()
原理點擊上面鏈接
使用方法:1.
2.
7. row_number() over (order by column_name)輸出結果會基于order by排序
select table.*,row_number() over (order by score) as rank
from(select * from table1limit 100
) table2
8.extend[‘dict’] as dict_name
extend把原本是字典的序列擴展成新的一列
比如
user_id | gender |
---|---|
1 | gender:female |
2 | gender:male |
extend['gender'] as gender
| user_id | gender |
| 1 | female |
| 2 | male |
9. ${yyyyMMdd,1, day}’
1表示加一天,比如輸入 20220801,那么上面的變量出來的日期為20220802;
而如果是-1,則表示往前一天,比如輸入20220801,那么上面的變量出來的日期為20220731
10. spark.sql.autoBroadcastJoinThreshold、spark.sql.broadcastTimeout
這個目前還不太清楚具體場景,記錄下
屬性 | 默認值 | 描述 |
---|---|---|
spark.sql.broadcastTimeout | 300 | 廣播等待超時時間,單位秒 |
spark.sql.autoBroadcastJoinThreshold | 10485760 (10 MB) | 最大廣播表的大小。設置為-1可以禁止該功能。當前統計信息僅支持Hive Metastore表 |