152 lines
4.6 KiB
Plaintext
152 lines
4.6 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "ed083f23-2556-4577-b770-36a087bf4566",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from pyspark.sql import SparkSession\n",
|
|
"import pyspark.sql.functions as F\n",
|
|
"\n",
|
|
"spark = SparkSession.builder.appName(\"some_name\").getOrCreate()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"id": "a9ae7a2b-7a96-4816-8b2d-8bf6b72aaffd",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"+---------+----------+--------+----------------------------------+\n",
|
|
"|log_level|date |time |message |\n",
|
|
"+---------+----------+--------+----------------------------------+\n",
|
|
"|INFO |2025-07-30|12:00:00|User logged in |\n",
|
|
"|DEBUG |2025-07-30|12:01:00|Session started |\n",
|
|
"|ERROR |2025-07-30|12:02:00|Database connection failed |\n",
|
|
"|INFO |2025-07-30|12:03:00|User clicked button |\n",
|
|
"|ERROR |2025-07-30|12:04:00|Timeout while waiting for response|\n",
|
|
"|DEBUG |2025-07-30|12:05:00|Memory usage: 75% |\n",
|
|
"|ERROR |2025-07-30|12:06:00|NullPointerException |\n",
|
|
"+---------+----------+--------+----------------------------------+\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"parts = F.split(F.col(\"value\"), \" \", 4)\n",
|
|
"df_logs = spark.read.text(\"logs.txt\").select(\n",
|
|
" parts[0].alias(\"log_level\"),\n",
|
|
" parts[1].alias(\"date\"),\n",
|
|
" parts[2].alias(\"time\"),\n",
|
|
" parts[3].alias(\"message\")\n",
|
|
")\n",
|
|
"\n",
|
|
"df_logs.show(truncate=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"id": "31c2f26f-9a47-4a60-9d46-de6c5742b524",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"+---------+----------+--------+----------------------------------+\n",
|
|
"|log_level|date |time |message |\n",
|
|
"+---------+----------+--------+----------------------------------+\n",
|
|
"|ERROR |2025-07-30|12:02:00|Database connection failed |\n",
|
|
"|ERROR |2025-07-30|12:04:00|Timeout while waiting for response|\n",
|
|
"|ERROR |2025-07-30|12:06:00|NullPointerException |\n",
|
|
"+---------+----------+--------+----------------------------------+\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"df_logs_error = df_logs.filter(F.col(\"log_level\") == \"ERROR\")\n",
|
|
"df_logs_error.show(truncate=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"id": "e3d10e1d-3c62-4c98-9404-81c9aa54d5f0",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"+---------+----------+--------+----------------------------------+----+\n",
|
|
"|log_level|date |time |message |hour|\n",
|
|
"+---------+----------+--------+----------------------------------+----+\n",
|
|
"|ERROR |2025-07-30|12:02:00|Database connection failed |12 |\n",
|
|
"|ERROR |2025-07-30|12:04:00|Timeout while waiting for response|12 |\n",
|
|
"|ERROR |2025-07-30|12:06:00|NullPointerException |12 |\n",
|
|
"+---------+----------+--------+----------------------------------+----+\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"df_logs_error = df_logs_error.withColumn(\"hour\", F.substring(\"time\", 1, 2).cast(\"int\"))\n",
|
|
"df_logs_error.show(truncate=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "fd6d5a08-e464-4d62-bd93-7f118db53f6e",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"+----+-----+\n",
|
|
"|hour|count|\n",
|
|
"+----+-----+\n",
|
|
"| 12| 3|\n",
|
|
"+----+-----+\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"df_count_errors_by_hour = df_logs_error.groupBy(\"hour\").count()\n",
|
|
"df_count_errors_by_hour.show()"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.12.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|