Files
spark/homework/task2.ipynb
2026-06-07 13:48:55 +07:00

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
}