• 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
    
    • 1
    • 2
    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')
    
    • 1
    3 根据日期得出周几
    SELECT format_datetime(day, 'EEEE')
    FROM (
      VALUES DATE '2022-12-14'
    ) t(day)
    
    • 1
    • 2
    • 3
    • 4
    4 weekofyear()✨dayofweek
    weekofyear:周一到周日
    dayofweek :周日到周六 17
    
    • 1
    • 2
    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    6 url解析
    url_extract_parameter(url,'utm_source')='Event'
    
    • 1
    7 Athena表元数据信息修复
    MSCK REPAIR TABLE traffic.hive_traffic_detail
    
    • 1
    8 Athena中对跨年周进行处理
    select date_format(date '2023-01-01', '%x-%v')
    
    • 1
    9 Athena解析URL函数url_extract_parameter
    select user_id,time,device_id,url,
           url_extract_parameter(url,'utm_source') utm_source,
    
    • 1
    • 2
    10 QS获取近两个月数据
    select * from default.hive_lkb_lock_stock_report where dt >= date_format(date_add('Month',-2,current_timestamp),'%Y%m%d')
    
    • 1
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    1 表JOIN
    • 使用join事,on条件尽可能避免使用or这种条件关联,效率极慢,可以通过先单独join再union的方式拼接的方式要快很多~

    持续更新中…

  • 相关阅读:
    13.1 GAS基本框架搭建及第一个GA
    python @ 装饰器(修饰器,语法糖)使用与不使用对比总结记录
    群晖NAS:DSM7.1激活Advanced Media Extensions【自留记录】
    Vue3 组件间通信的七种方式
    【RISC-V】站在巨人的肩膀上——看开源芯片、软件生态、与先进计算/人工智能/安全的结合
    【Linux】文件IO基础知识——下篇, 什么是软硬链接?如何用别人的动静态库??
    聊聊 HTMX 吧
    Python 内置函数详解 (2) 逻辑运算
    Three.js 入门(一)— 开发环境搭建
    Unity URP入门实战
  • 原文地址:https://blog.csdn.net/llAl_lAll/article/details/132790423