AWS Athena SQL基础知识

一、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 :周日到周六 17
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的方式拼接的方式要快很多~

持续更新中…

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每日小新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值