一、Athena SQL 基础学习🍜
1 获取一年的第几周
select Extract(week from date'2022-12-11') as week_number
Extract(week(Sunday) from date) as week_number
2 Int to Date
select date_parse(concat(substr(cast(20221214 as varchar), 1, 4),'-',substr(cast(20221121 as varchar), 5, 2),'-',substr(cast(20221121 as varchar), 7, 2)),'%Y-%m-%d')
3 根据日期得出周几
SELECT format_datetime(day, 'EEEE')
FROM (
VALUES DATE '2022-12-14'
) t(day)
4 weekofyear()✨dayofweek
weekofyear:周一到周日
dayofweek :周日到周六 1~7
5 创建临时数据,遍历数组
WITH
dataset AS (
SELECT ARRAY
[
ARRAY[1,2,3,4],
ARRAY[5,6,7,8],
ARRAY[9,0]
] AS items
),
item AS (
SELECT i AS array_items
FROM dataset, UNNEST(items) AS t(i)
)
SELECT array_items, reduce(array_items, 0 , (s, x) -> s + x, s -> s) AS total
FROM item;
6 url解析
url_extract_parameter(url,'utm_source')='Event'
7 Athena表元数据信息修复
MSCK REPAIR TABLE traffic.hive_traffic_detail
8 Athena中对跨年周进行处理
select date_format(date '2023-01-01', '%x-%v')
9 Athena解析URL函数url_extract_parameter
select user_id,time,device_id,url,
url_extract_parameter(url,'utm_source') utm_source,
10 QS获取近两个月数据
select * from default.hive_lkb_lock_stock_report where dt >= date_format(date_add('Month',-2,current_timestamp),'%Y%m%d')
11 Athena转义字符:’
三、Spark调优
选择以下解决方案之一:
选项 1.禁用广播加入。
设置 spark.conf.set("spark.sql.autoBroadcastJoinThreshold", -1)
此选项禁用广播加入。
选项 2.增加广播超时。
将 Spark.sql.broadcastTimeout 增加到 300 以上的值。例如,设置 spark.sql.broadcastTimeout=2000。
不太推荐此选项。如果要保留广播加入,请使用此选项。
选项 3.再次尝试失败的应用程序。
设置 spark.yarn.maxAppTrys=2。
最不推荐此选项。设置上述属性时,Spark 会尝试再次运行任何失败的应用程序,包括不使用广播联接的应用程序。此更改会导致较高的总体运行时间。
1 表JOIN
- 使用join事,on条件尽可能避免使用or这种条件关联,效率极慢,可以通过先单独join再union的方式拼接的方式要快很多~
持续更新中…文章来源地址https://www.toymoban.com/news/detail-733028.html
文章来源:https://www.toymoban.com/news/detail-733028.html
到了这里,关于AWS Athena SQL基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!