spark的eventLog日志分析

  1. 查找满足指定条件的app_id
  2. 查询条件: 表名、时间、节点名
  3. 时间限定: 最好适当放大, 不知道什么原因有点不准
  4. eventLog的存放路径: spark.history.fs.logDirectory

1. spark-sql

  • 先限定时间段;
  • 数据是逐行读入的, 但 app_id要按整个文件过滤, 按每个条件打标;
  • 按app_id粒度聚合, 查找符合条件的数据;
sql 复制代码
-- 设定时区
set spark.sql.session.timeZone=GMT+8;

-- 创建数据源视图
create temporary view view_name using text options ('path'='hdfs://hdfs-cluster/spark-history/*', 'modifiedAfter'='2023-08-21T08:00:00', 'modifiedBefore'='2023-08-21T14:00:00' );

with tmp as ( -- 打标数据
    select
       input_file_name() as file_name,
       if( value like '%tbl_name%', 1, 0) as table_name,
       if( value like '%core-1-7%', 1, 0) as host_01,
       if( value like '%core-1-10%', 1, 0) as host_02
    from
        view_name
),
tmp2 as ( -- 汇总到app_id粒度
    select
       file_name,
       sum(table_name) as table_name,
       sum(host_01) as host_01,
       sum(host_02) as host_02
    from
        tmp
    group by
        file_name
)
select
    *
from
    tmp2
where
    table_name > 0
order by
    file_name
;

2. 整文件读取

  • 先初步过滤app_id;
  • 整个文件读取成一行;
  • 按条件进行过滤;
Scala 复制代码
import spark.implicits._

// 寻找可能的APP_ID
val sql_create_view =
    """
      |create temporary view view_name using text options ('path'='hdfs://hdfs-cluster/spark-history/*', 'modifiedAfter'='2023-08-21T00:00:00', 'modifiedBefore'='2023-08-21T23:00:00' )
      |""".stripMargin
val sql_filter_app_id =
    """
      |select
      |   split( input_file_name(), 'history/')[1]  as file_name
      |from
      |    view_name
      |where
      |    value like '%trandw.dwd_log_app_open_di%'
      |group by
      |    split( input_file_name(), 'history/')[1]
      |""".stripMargin
spark.sql(sql_create_view)
val df_app_ids = spark.sql(sql_filter_app_id)
val app_ids = df_app_ids.collect().map(_.getString(0)).mkString(",")

// 整个文件读取成一行
val rdd = spark.sparkContext.wholeTextFiles(s"hdfs://hdfs-cluster/spark-history/{${app_ids}}",20).repartition(12)
val df = rdd.toDF("file_name", "value")
df.createOrReplaceTempView("tmp")

// 过滤数据
val sql_str =
    """
      |select
      |   file_name
      |from
      |    tmp
      |where
      |    value like '%tbl_name%'
      |    and value like '%core-1-7%'
      |    and  value like '%core-1-10%'
      |""".stripMargin

spark.sql(sql_str).show(1)
相关推荐
计算机编程指导师37 分钟前
计算机毕设怎么做?基于Hadoop+Spark的商场商铺数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·商场商铺
Q264336502344 分钟前
【有源码】基于Hadoop+Spark的低能见度易雾站点识别与可视化分析系统-面向气象保障的低能见度监测数据挖掘与风险画像系统
大数据·hadoop·数据挖掘·spark·毕业设计·课程设计·数据可视化
计算机编程指导师1 小时前
Python毕设怎么做?基于hadoop的商家优惠券营销效果数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·优惠券
计算机编程指导师1 小时前
【Python毕设推荐】基于Hadoop+Spark的商场商铺运行数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·课程设计·商场商铺
yumgpkpm12 小时前
CDP 7.3.1(Cloudera Runtime 7.3.1)VS Acceldata ODP 3.3.6.4 核心引擎详细版本对比
大数据·hive·hadoop·postgresql·zookeeper·spark·hbase
就玩一会_13 小时前
Meta Muse 发布以来全梳理:从 Muse Spark 到个人 AI Agent
大数据·人工智能·spark
计算机毕业编程指导师13 小时前
【计算机毕业设计选题】基于Hadoop+Spark的乳腺癌数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
hadoop·python·spark·毕业设计·课程设计·乳腺癌·计算机毕设
计算机毕业编程指导师2 天前
大数据毕设选题推荐:基于Hadoop+Spark全球碳排放减排策略分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·碳排放减排
计算机毕业编程指导师3 天前
【计算机毕设选题】基于Hadoop的零售交易者行为特征与生存状况数据分析及可视化系统源码 毕业设计 选题推荐 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·零售
计算机毕业编程指导师4 天前
计算机毕设怎么做?Python+Hadoop的跨平台消费者评论情感分析与数据可视化系统实战 源码 毕业设计 选题推荐 毕设选题 数据分析
大数据·hadoop·python·计算机·spark·课程设计·消费者评论