From 94c926062bad1d4ff1acd59d3098f1d0791647b8 Mon Sep 17 00:00:00 2001 From: vara-bonthu Date: Fri, 27 Jun 2025 16:55:34 -0700 Subject: [PATCH 01/13] feat: establish core project structure with Apache License - Add Apache License 2.0 with authors Manabu McCloskey and Vara Bonthu - Update pyproject.toml with proper metadata, keywords, and classifiers - Add comprehensive Makefile for development workflows - Enhance .gitignore with Spark, MCP, and platform-specific exclusions --- .gitignore | 271 ++++++++++++++++++++++++++++++++++++++++++++++++- LICENSE | 190 ++++++++++++++++++++++++++++++++++ Makefile | 65 ++++++++++++ pyproject.toml | 58 ++++++++++- 4 files changed, 577 insertions(+), 7 deletions(-) create mode 100644 LICENSE create mode 100644 Makefile diff --git a/.gitignore b/.gitignore index 302ff1a..9aaead9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,272 @@ -# Python-generated files +# Python __pycache__/ -*.py[oc] +*.py[cod] +*$py.class + +# Security and code quality reports +bandit-report.json +.mypy_cache/ +*.so +.Python build/ +develop-eggs/ dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ wheels/ -*.egg-info +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST -# Virtual environments +# Virtual Environments +.env .venv -.aider* +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ +.virtualenv + +# PyCharm +.idea/ + +# VS Code +.vscode/ +*.code-workspace + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +Pipfile.lock + +# poetry +poetry.lock + +# PEP 582 +__pypackages__/ + +# Celery +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# mypy +.mypy_cache/ +.dmypy.json +dmyj.son + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# UV +.uv/ + +# macOS +.DS_Store +.AppleDouble +.LSOverride +Icon? +._* +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db +*.tmp +*.temp +Desktop.ini +$RECYCLE.BIN/ +*.cab +*.msi +*.msix +*.msm +*.msp +*.lnk + +# Linux +*~ +.fuse_hidden* +.directory +.Trash-* +.nfs* + +# Docker +.dockerignore +Dockerfile.dockerignore + +# Logs +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Coverage directory used by tools like istanbul +coverage/ +*.lcov +.nyc_output + +# node_modules (if using Node.js tools) +node_modules/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env.development +.env.test +.env.production + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +public + +# Storybook build outputs +.out +.storybook-out +storybook-static + +# Temporary folders +tmp/ +temp/ + +# Editor backups +*~ +*.swp +*.swo +*# +.#* + +# OS generated files +.DS_Store* +ehthumbs.db +Thumbs.db + +# Test artifacts +.pytest_cache/ +.coverage +htmlcov/ +.tox/ +.nox/ +.cache + +# Spark specific +*.log +spark-warehouse/ +derby.log +metastore_db/ + +# MCP specific +mcp.log +*.mcp + +# Configuration files with secrets (keep template versions) +config.local.yaml +config.prod.yaml +secrets.yaml +.secrets + +# Backup files +*.bak +*.backup +*~ + +# Lock files (except essential ones) +package-lock.json +yarn.lock +# Keep uv.lock for reproducible builds + +# IDE files +*.sublime-project +*.sublime-workspace + +# Temporary test data +test_data/ +temp_events/ +*.tmp.json + +# Aider (AI coding assistant) +.aider* \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4bf7f08 --- /dev/null +++ b/LICENSE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (which shall not include communication that is conspicuously + marked or otherwise designated in writing by the copyright owner + as "Not a Contribution"). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based upon (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and derivative works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control + systems, and issue tracking systems that are managed by, or on behalf + of, the Licensor for the purpose of discussing and improving the Work, + but excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution". + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to use, reproduce, modify, display, perform, + sublicense, and distribute the Work and any Derivative Works thereof. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (a) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (b) You must retain, in the Source form of any Derivative Works that You + distribute, all copyright, trademark, patent, attribution and other + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + + (c) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained within + such NOTICE file, excluding those notices that do not pertain to + any part of the Derivative Works, in at least one of the following + places: within a NOTICE text file distributed as part of the + Derivative Works; within the Source form or documentation, if + provided along with the Derivative Works; or, within a display + generated by the Derivative Works, if and wherever such third-party + notices normally appear. The contents of the NOTICE file are for + informational purposes only and do not modify the License. You may + add Your own attribution notices within Derivative Works that You + distribute, alongside or as an addendum to the NOTICE text from the + Work, provided that such additional attribution notices cannot be + construed as modifying the License. + + You may add Your own copyright notice to Your modifications and may + provide additional or different license terms and conditions for use, + reproduction, or distribution of Your modifications, or for any such + Derivative Works as a whole, provided Your use, reproduction, and + distribution of the Work otherwise complies with the conditions stated + in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Acceptance and Termination. If, at any time, You expressly assented + to this License, that assent indicates Your acceptance of this License + and all its terms and conditions. If You distribute or communicate + copies of the Work or a Derivative Works to anyone, that action + constitutes Your acceptance of this License and all its terms and + conditions. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. Don't include + the brackets! The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same page as the copyright notice for easier identification within + third-party archives. + + Copyright 2024 Manabu McCloskey, Vara Bonthu + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3673a40 --- /dev/null +++ b/Makefile @@ -0,0 +1,65 @@ +.PHONY: install test lint format clean dev setup help + +# Default target +help: + @echo "Available commands:" + @echo " install - Install project dependencies" + @echo " dev - Install development dependencies" + @echo " test - Run tests" + @echo " test-cov - Run tests with coverage" + @echo " lint - Run linting (ruff + mypy)" + @echo " format - Format code (black + ruff fix)" + @echo " clean - Clean temporary files" + @echo " setup - Setup development environment" + @echo " start-spark - Start Spark History Server" + @echo " start-mcp - Start MCP Server" + @echo " start-inspector - Start MCP Inspector" + +install: + uv sync + +dev: install + uv sync --group dev + +test: + uv run pytest + +test-cov: + uv run pytest --cov=. --cov-report=html --cov-report=term-missing + +lint: + @echo "Running ruff..." + uv run ruff check . + @echo "Running mypy..." + uv run mypy *.py --ignore-missing-imports + +format: + @echo "Running black..." + uv run black . + @echo "Running ruff fix..." + uv run ruff check --fix . + +clean: + rm -rf .pytest_cache/ .coverage htmlcov/ dist/ build/ + find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true + find . -type f -name "*.pyc" -delete + +setup: dev + chmod +x *.sh + +# MCP Development shortcuts +start-spark: + @echo "Starting Spark History Server..." + ./start_local_spark_history.sh + +start-mcp: + @echo "Starting MCP Server..." + uv run main.py + +start-inspector: + @echo "Starting MCP Inspector..." + DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector + +# Validation +validate: lint test + @echo "โœ… All validations passed!" \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 9a547b6..1ba31a3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,19 +1,73 @@ [project] -name = "mcp-spark-events" +name = "spark-history-server-mcp" version = "0.1.0" -description = "Add your description here" +description = "Model Context Protocol (MCP) server for Apache Spark History Server with job comparison and analytics" readme = "README.md" +authors = [ + {name = "Manabu McCloskey", email = "Manabu.McCloskey@gmail.com"}, + {name = "Vara Bonthu", email = "vara.bonthu@gmail.com"} +] +license = {text = "Apache-2.0"} requires-python = ">=3.12" +keywords = ["spark", "mcp", "analytics", "performance", "history-server", "model-context-protocol"] +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3.12", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: System :: Monitoring", + "Topic :: Scientific/Engineering :: Information Analysis", +] dependencies = [ "mcp[cli]>=1.9.4", "pyyaml>=6.0.2", "requests>=2.32.4", + "pydantic>=2.0.0", ] +# Development dependencies moved to [dependency-groups] section below + +[project.scripts] +spark-mcp = "main:main" + +[project.urls] +Homepage = "https://github.com/DeepDiagnostix-AI/spark-history-server-mcp" +Repository = "https://github.com/DeepDiagnostix-AI/spark-history-server-mcp" +Issues = "https://github.com/DeepDiagnostix-AI/spark-history-server-mcp/issues" + [tool.ruff] target-version = "py312" +line-length = 88 +select = ["E", "F", "W", "I", "N", "B", "A", "S", "T20"] +ignore = ["E501", "S101"] + +[tool.ruff.per-file-ignores] +"test_*.py" = ["S101"] + +[tool.black] +line-length = 88 +target-version = ['py312'] + +[tool.mypy] +python_version = "3.12" +warn_return_any = true +warn_unused_configs = true +disallow_untyped_defs = false # Start with false, gradually enable + +[tool.pytest.ini_options] +testpaths = ["tests", "."] +python_files = ["test_*.py"] +python_classes = ["Test*"] +python_functions = ["test_*"] +addopts = "--cov=. --cov-report=term-missing" +pythonpath = ["."] [dependency-groups] dev = [ "pytest>=8.4.1", + "pytest-cov>=4.0.0", + "black>=23.0.0", + "ruff>=0.1.0", + "mypy>=1.7.0", ] From 3ab6773f5b78a205c9b11813844d366d33b4347f Mon Sep 17 00:00:00 2001 From: vara-bonthu Date: Fri, 27 Jun 2025 16:56:15 -0700 Subject: [PATCH 02/13] fix: implement critical security and configuration improvements - Fix debug mode to use environment variable instead of hardcoded true - Add environment variable support for authentication in config.py - Remove hardcoded credentials from config.yaml - Add proper error handling and logging in main.py - Fix typo "sever_config" to "server_config" in spark clients - Add .env.example for secure environment variable setup --- .env.example | 15 +++++++++++++++ app.py | 6 ++++-- config.py | 10 ++++++++++ config.yaml | 34 ++++++++++++++++++++++++++++------ main.py | 26 +++++++++++++++++++++++--- spark_client.py | 4 ++-- spark_html_client.py | 10 +++++----- 7 files changed, 87 insertions(+), 18 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..06a99fc --- /dev/null +++ b/.env.example @@ -0,0 +1,15 @@ +# Spark History Server MCP Configuration + +# MCP Server Settings +MCP_PORT=18888 +MCP_DEBUG=false + +# Spark Authentication (Optional) +# SPARK_USERNAME=your_spark_username +# SPARK_PASSWORD=your_spark_password +# SPARK_TOKEN=your_spark_token + +# Example for production: +# SPARK_USERNAME=prod_user +# SPARK_PASSWORD=secure_password_here +# SPARK_TOKEN=jwt_token_here \ No newline at end of file diff --git a/app.py b/app.py index cf6f71f..84ef1e8 100644 --- a/app.py +++ b/app.py @@ -40,9 +40,11 @@ async def app_lifespan(server: FastMCP) -> AsyncIterator[AppContext]: yield AppContext(clients=clients, default_client=default_client) +import os + mcp = FastMCP("Spark Events", lifespan=app_lifespan) -mcp.settings.port = 18888 -mcp.settings.debug = True +mcp.settings.port = int(os.getenv("MCP_PORT", "18888")) +mcp.settings.debug = os.getenv("MCP_DEBUG", "false").lower() == "true" # Import tools to register them with MCP import tools # noqa: E402,F401 diff --git a/config.py b/config.py index 29bc164..405f46d 100644 --- a/config.py +++ b/config.py @@ -11,6 +11,16 @@ class AuthConfig(BaseModel): password: str = Field(None, alias="password") token: str = Field(None, alias="token") + def __init__(self, **data): + # Support environment variables for sensitive data + if not data.get("username"): + data["username"] = os.getenv("SPARK_USERNAME") + if not data.get("password"): + data["password"] = os.getenv("SPARK_PASSWORD") + if not data.get("token"): + data["token"] = os.getenv("SPARK_TOKEN") + super().__init__(**data) + class ServerConfig(BaseModel): """Server configuration for the Spark server.""" diff --git a/config.yaml b/config.yaml index 9f9f79b..a5fa934 100644 --- a/config.yaml +++ b/config.yaml @@ -1,10 +1,32 @@ servers: - my-server: + local: default: true url: "http://localhost:18080" - auth: - username: user - password: password - token: token + # Optional authentication (can also use environment variables) + # auth: + # username: "your_username" # or use SPARK_USERNAME env var + # password: "your_password" # or use SPARK_PASSWORD env var + # token: "your_token" # or use SPARK_TOKEN env var -# spark-988f126664e3473ebd004d8de4344137 \ No newline at end of file + # Production server example + # production: + # url: "https://spark-history.company.com:18080" + # auth: + # Use environment variables for production + # username: ${SPARK_USERNAME} + # password: ${SPARK_PASSWORD} + # token: ${SPARK_TOKEN} + + # Staging server example + # staging: + # url: "https://staging-spark-history.company.com:18080" + # auth: + # username: "staging_user" + # token: "staging_token" + +# Environment Variables: +# SPARK_USERNAME - Default username for authentication +# SPARK_PASSWORD - Default password for authentication +# SPARK_TOKEN - Default token for authentication +# MCP_PORT - Port for MCP server (default: 18888) +# MCP_DEBUG - Enable debug mode (default: false) \ No newline at end of file diff --git a/main.py b/main.py index 60bb8a7..397854d 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,26 @@ +"""Main entry point for Spark History Server MCP.""" + +import sys +import logging from app import mcp +# Configure logging +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' +) +logger = logging.getLogger(__name__) + + +def main(): + """Main entry point.""" + try: + logger.info("Starting Spark History Server MCP...") + mcp.run(transport="streamable-http") + except Exception as e: + logger.error(f"Failed to start MCP server: {e}") + sys.exit(1) + + if __name__ == "__main__": - mcp.run( - transport="streamable-http", - ) + main() diff --git a/spark_client.py b/spark_client.py index a240ce4..2d4f95c 100644 --- a/spark_client.py +++ b/spark_client.py @@ -31,7 +31,7 @@ class SparkRestClient: Python client for the Spark REST API. """ - def __init__(self, sever_config: ServerConfig): + def __init__(self, server_config: ServerConfig): """ Initialize the Spark REST client. @@ -40,7 +40,7 @@ def __init__(self, sever_config: ServerConfig): config_path: Path to configuration file """ - self.config = sever_config + self.config = server_config self.base_url = self.config.url.rstrip("/") + "/api/v1" self.auth = None diff --git a/spark_html_client.py b/spark_html_client.py index 57eb00d..d050e9e 100644 --- a/spark_html_client.py +++ b/spark_html_client.py @@ -6,12 +6,12 @@ from config import ServerConfig from playwright.async_api import async_playwright -# very experimental html client +# HTML client for Spark History Server web interface class SparkHtmlClient: - def __init__(self, sever_config: ServerConfig): - self.config = sever_config + def __init__(self, server_config: ServerConfig): + self.config = server_config self.base_url = self.config.url.rstrip("/") + "/history/" self.auth = None self.browser = None @@ -73,7 +73,6 @@ async def get_screenshot(self, path, save_path=None): page = await self.browser.new_page() await page.set_viewport_size({"width": 2560, "height": 800}) url = urljoin(self.base_url, path) - print(url) await page.goto(url) # Wait for network to be idle @@ -111,4 +110,5 @@ async def main(): # print("HTML content saved to rendered_page.html") -asyncio.run(main()) +if __name__ == "__main__": + asyncio.run(main()) From 759f763d637fd0a5b88e0d67556919fc7cbacd67 Mon Sep 17 00:00:00 2001 From: vara-bonthu Date: Fri, 27 Jun 2025 16:56:50 -0700 Subject: [PATCH 03/13] docs: create comprehensive documentation and user guides - Rewrite README.md with emoji-rich engaging content for open source - Add detailed TESTING.md with MCP Inspector and local testing guides - Create CONTRIBUTING.md with setup instructions and guidelines - Add .markdownlint.yaml for consistent documentation formatting - Update examples/basic/README.md with clear setup instructions - Add start_local_spark_history.sh script for easy local testing - Create screenshots/ directory for future MCP Inspector images --- .markdownlint.yaml | 17 +++ CONTRIBUTING.md | 237 +++++++++++++++++++++++++++++++ README.md | 262 +++++++++++++++++++++++++---------- TESTING.md | 185 +++++++++++++++++++++++++ examples/basic/README.md | 54 +++++++- screenshots/README.md | 63 +++++++++ start_local_spark_history.sh | 157 +++++++++++++++++++++ 7 files changed, 902 insertions(+), 73 deletions(-) create mode 100644 .markdownlint.yaml create mode 100644 CONTRIBUTING.md create mode 100644 TESTING.md create mode 100644 screenshots/README.md create mode 100755 start_local_spark_history.sh diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..e41e9a8 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,17 @@ +# Markdown linting configuration +# Disable problematic rules for our documentation style + +# MD013: Line length - disabled because code blocks can be long +MD013: false + +# MD033: HTML tags - disabled because we use HTML for centering, etc. +MD033: false + +# MD041: First line should be h1 - disabled because we have badges first +MD041: false + +# MD024: Multiple headers with same content - disabled for FAQ sections +MD024: false + +# MD026: Trailing punctuation in header - disabled for emoji headers +MD026: false \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..07e5c5e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,237 @@ +# ๐Ÿค Contributing to Spark History Server MCP + +Thank you for your interest in contributing! This guide will help you get started with contributing to the Spark History Server MCP project. + +## ๐Ÿš€ Quick Start for Contributors + +### ๐Ÿ“‹ Prerequisites +- ๐Ÿ Python 3.12+ +- โšก [uv](https://docs.astral.sh/uv/getting-started/installation/) package manager +- ๐Ÿ”ฅ Docker (for local testing with Spark History Server) +- ๐Ÿ“ฆ Node.js (for MCP Inspector testing) + +### ๐Ÿ› ๏ธ Development Setup + +1. **๐Ÿด Fork and clone the repository** +```bash +git clone https://github.com/YOUR_USERNAME/spark-history-server-mcp.git +cd spark-history-server-mcp +``` + +2. **๐Ÿ“ฆ Install dependencies** +```bash +uv sync --group dev +``` + +3. **๐Ÿ”ง Install pre-commit hooks** +```bash +uv run pre-commit install +``` + +4. **๐Ÿงช Run tests to verify setup** +```bash +uv run pytest +``` + +## ๐Ÿงช Testing Your Changes + +### ๐Ÿ”ฌ Local Testing with MCP Inspector +```bash +# Terminal 1: Start Spark History Server with sample data +./start_local_spark_history.sh + +# Terminal 2: Test your changes +npx @modelcontextprotocol/inspector uv run main.py +# Opens browser at http://localhost:6274 for interactive testing +``` + +### โœ… Run Full Test Suite +```bash +# Run all tests +uv run pytest + +# Run tests with coverage +uv run pytest --cov=. --cov-report=html + +# Run specific test file +uv run pytest test_tools.py -v +``` + +### ๐Ÿ” Code Quality Checks +```bash +# Lint and format (runs automatically on commit) +uv run ruff check --fix +uv run ruff format + +# Type checking +uv run mypy . + +# Security scanning +uv run bandit -r . -f json -o bandit-report.json +``` + +## ๐Ÿ“ Contribution Guidelines + +### ๐ŸŽฏ Areas for Contribution + +#### ๐Ÿ”ง High Priority +- **New MCP Tools**: Additional Spark analysis tools +- **Performance Improvements**: Optimize API calls and data processing +- **Error Handling**: Better error messages and recovery +- **Documentation**: Examples, tutorials, and guides + +#### ๐Ÿ“Š Medium Priority +- **Testing**: More comprehensive test coverage +- **Monitoring**: Metrics and observability features +- **Configuration**: More flexible configuration options +- **CI/CD**: GitHub Actions improvements + +#### ๐Ÿ’ก Ideas Welcome +- **AI Agent Examples**: New integration patterns +- **Deployment**: Additional deployment methods +- **Analytics**: Advanced Spark job analysis tools + +### ๐Ÿ”€ Pull Request Process + +1. **๐ŸŒฟ Create a feature branch** +```bash +git checkout -b feature/your-new-feature +git checkout -b fix/bug-description +git checkout -b docs/improve-readme +``` + +2. **๐Ÿ’ป Make your changes** +- Follow existing code style and patterns +- Add tests for new functionality +- Update documentation as needed +- Ensure all pre-commit hooks pass + +3. **โœ… Test thoroughly** +```bash +# Run full test suite +uv run pytest + +# Test with MCP Inspector +npx @modelcontextprotocol/inspector uv run main.py + +# Test with real Spark data if possible +``` + +4. **๐Ÿ“ค Submit pull request** +- Use descriptive commit messages +- Reference any related issues +- Include screenshots for UI changes +- Update CHANGELOG.md if applicable + +### ๐Ÿ’ป Code Style + +We use **Ruff** for linting and formatting (automatically enforced by pre-commit): + +- **Line length**: 88 characters +- **Target**: Python 3.12+ +- **Import sorting**: Automatic with Ruff +- **Type hints**: Encouraged but not required for all functions + +### ๐Ÿงช Adding New MCP Tools + +When adding new tools, follow this pattern: + +```python +@mcp.tool() +def your_new_tool( + spark_id: str, + server: Optional[str] = None, + # other parameters +) -> YourReturnType: + """ + Brief description of what this tool does. + + Args: + spark_id: The Spark application ID + server: Optional server name to use + + Returns: + Description of return value + """ + ctx = mcp.get_context() + client = get_client_or_default(ctx, server) + + # Your implementation here + return client.your_method(spark_id) +``` + +**Don't forget to add tests:** + +```python +@patch("tools.get_client_or_default") +def test_your_new_tool(self, mock_get_client): + """Test your new tool functionality""" + # Setup mocks + mock_client = MagicMock() + mock_client.your_method.return_value = expected_result + mock_get_client.return_value = mock_client + + # Call the tool + result = your_new_tool("spark-app-123") + + # Verify results + self.assertEqual(result, expected_result) + mock_client.your_method.assert_called_once_with("spark-app-123") +``` + +## ๐Ÿ› Reporting Issues + +### ๐Ÿ” Bug Reports +Include: +- **Environment**: Python version, OS, uv version +- **Steps to reproduce**: Clear step-by-step instructions +- **Expected vs actual behavior**: What should happen vs what happens +- **Logs**: Relevant error messages or logs +- **Sample data**: Spark application IDs that reproduce the issue (if possible) + +### ๐Ÿ’ก Feature Requests +Include: +- **Use case**: Why is this feature needed? +- **Proposed solution**: How should it work? +- **Alternatives**: Other approaches considered +- **Examples**: Sample usage or screenshots + +## ๐Ÿ“– Documentation + +### ๐Ÿ“ Types of Documentation +- **README.md**: Main project overview and quick start +- **TESTING.md**: Comprehensive testing guide +- **examples/integrations/**: AI agent integration examples +- **Code comments**: Inline documentation for complex logic + +### ๐ŸŽจ Documentation Style +- Use emojis consistently for visual appeal +- Include code examples for all features +- Provide screenshots for UI elements +- Keep language clear and beginner-friendly + +## ๐ŸŒŸ Recognition + +Contributors are recognized in: +- **GitHub Contributors** section +- **Release notes** for significant contributions +- **Project documentation** for major features + +## ๐Ÿ“ž Getting Help + +- **๐Ÿ’ฌ Discussions**: [GitHub Discussions](https://github.com/DeepDiagnostix-AI/spark-history-server-mcp/discussions) +- **๐Ÿ› Issues**: [GitHub Issues](https://github.com/DeepDiagnostix-AI/spark-history-server-mcp/issues) +- **๐Ÿ“š Documentation**: Check existing docs first + +## ๐Ÿ“œ Code of Conduct + +- **๐Ÿค Be respectful**: Treat everyone with kindness and professionalism +- **๐ŸŽฏ Stay on topic**: Keep discussions relevant to the project +- **๐Ÿง  Be constructive**: Provide helpful feedback and suggestions +- **๐ŸŒ Be inclusive**: Welcome contributors of all backgrounds and skill levels + +--- + +**๐ŸŽ‰ Thank you for contributing to Spark History Server MCP!** + +Your contributions help make Apache Spark monitoring more intelligent and accessible to the community. \ No newline at end of file diff --git a/README.md b/README.md index 4a88032..c8cc5a4 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,230 @@ -# Spark History Server MCP Server +# ๐Ÿ”ฅ Spark History Server MCP -Welcome to the Spark History Server MCP Server! This tool bridges Apache Spark's history data with LLM-powered analysis through the Model Context Protocol (MCP). +[![CI](https://github.com/DeepDiagnostix-AI/spark-history-server-mcp/workflows/CI/badge.svg)](https://github.com/DeepDiagnostix-AI/spark-history-server-mcp/actions) +[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/) +[![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io/) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) -This MCP server exposes most Apache History Server REST APIs as tools, allowing you to analyze Spark job performance data through natural language interactions. Since Apache Spark History server supports read operations only, this tool is likewise focused on data retrieval and analysis rather than modifications. +> **๐Ÿค– Connect AI agents to Apache Spark History Server for intelligent job analysis and performance monitoring** -In addition to standard REST APIs, we've included enhanced analytics capabilities such as identifying the n slowest jobs, pinpointing bottleneck stages, and generating comprehensive executor metric summaries. +Transform your Spark infrastructure monitoring with AI! This Model Context Protocol (MCP) server enables AI agents to analyze job performance, identify bottlenecks, and provide intelligent insights from your Spark History Server data. -Some use cases for this include: -- Investigating job failure scenarios with natural language queries -- Identifying performance bottlenecks in complex Spark applications -- Optimizing jobs based on historical execution data -- Extracting insights from Spark metrics without writing custom queries +## ๐ŸŽฏ What is This? -This MCP server was tested with Qwen3 32B and 235B, but should work with other LLMs that support the Model Context Protocol. +**Spark History Server MCP** bridges AI agents with your existing Apache Spark infrastructure, enabling: -# Getting started +- ๐Ÿ” **Query job details** through natural language +- ๐Ÿ“Š **Analyze performance metrics** across applications +- ๐Ÿ”„ **Compare multiple jobs** to identify regressions +- ๐Ÿšจ **Investigate failures** with detailed error analysis +- ๐Ÿ“ˆ **Generate insights** from historical execution data -## Prerequisites +## ๐Ÿ—๏ธ Architecture -- Podman or Docker -- [uv](https://docs.astral.sh/uv/getting-started/installation/) +```mermaid +graph TB + A[๐Ÿค– AI Agent/LLM] --> B[๐Ÿ“ก MCP Client] + B --> C[โšก Spark History MCP Server] + C --> D[๐Ÿ”ฅ Your Spark History Server] + D --> E[๐Ÿ“„ Spark Event Logs] + + F[๐Ÿ”ง LangChain Agent] --> B + G[๐Ÿ“ฑ Custom AI App] --> B + H[๐Ÿ”ฌ MCP Inspector] --> B +``` + +**๐Ÿ”— Components:** +- **๐Ÿ”ฅ Spark History Server**: Your existing infrastructure serving Spark event data +- **โšก MCP Server**: This project - provides MCP tools for querying Spark data +- **๐Ÿค– AI Agents**: LangChain, custom agents, or any MCP-compatible client + +## โšก Quick Start + +### ๐Ÿ“‹ Prerequisites +- ๐Ÿ”ฅ Existing Spark History Server (running and accessible) +- ๐Ÿ Python 3.12+ +- โšก [uv](https://docs.astral.sh/uv/getting-started/installation/) package manager + +### ๐Ÿš€ Setup +```bash +git clone https://github.com/DeepDiagnostix-AI/spark-history-server-mcp.git +cd spark-history-server-mcp +uv sync +``` + +### โš™๏ธ Configuration +Edit `config.yaml`: +```yaml +servers: + default: + url: "http://your-spark-history-server:18080" + auth: # optional + username: "user" + password: "pass" +``` -Python version and dependencies are available in [`.python-version`](./.python-version) and [`pyproject.toml`](./pyproject.toml). +### ๐Ÿ”ฌ Testing with MCP Inspector +```bash +# Start MCP server with Inspector (opens browser automatically) +npx @modelcontextprotocol/inspector uv run main.py +``` + +**๐ŸŒ Test in Browser** - The MCP Inspector opens at http://localhost:6274 for interactive tool testing! + +## ๐Ÿ“ธ Screenshots + +### ๐Ÿ” Get Spark Applications +![Get Applications](screenshots/get-applications.png) +*Browse all available Spark applications with filtering options* +### โšก Job Performance Comparison +![Job Comparison](screenshots/job-comparison.png) +*Compare performance metrics between different Spark jobs* -## Usage -### Setting Up Your Environment +> ๐Ÿ“ **Note**: Replace placeholder screenshots with actual MCP Inspector screenshots showing the tool execution and results. -**Step 1: Prepare the Spark History Server** +## ๐Ÿ› ๏ธ Available Tools -This MCP server requires a running Spark History Server to connect to. For your convenience: -- We've included example Spark event data in the repo -- Location: `examples/basic/events` directory -- These sample events will help you test the setup +| ๐Ÿ”ง Tool | ๐Ÿ“ Description | +|---------|----------------| +| `list_applications` | ๐Ÿ“‹ List Spark applications with filtering | +| `get_application_details` | ๐Ÿ“Š Get comprehensive application info | +| `get_application_jobs` | ๐Ÿ”— List jobs within an application | +| `get_job_details` | ๐Ÿ” Get detailed job information | +| `get_stage_details` | โšก Analyze stage-level metrics | +| `get_task_details` | ๐ŸŽฏ Examine individual task performance | +| `get_executor_summary` | ๐Ÿ–ฅ๏ธ Review executor utilization | +| `compare_job_performance` | ๐Ÿ“ˆ Compare multiple jobs | +| `get_application_environment` | โš™๏ธ Review Spark configuration | +| `get_storage_info` | ๐Ÿ’พ Analyze RDD storage usage | +| `get_sql_execution_details` | ๐Ÿ”Ž Deep dive into SQL queries | -Run the following command to launch a Spark History Server with our sample data: +## ๐Ÿš€ Production Deployment +Deploy using Kubernetes with Helm: ```bash -# This command: -# - Uses Docker to run Apache Spark 3.5.5 -# - Mounts your local examples directory -# - Exposes port 18080 for the History Server -# - Configures the server using our example configuration - -docker run -it \ - -v $(pwd)/examples/basic:/mnt/data \ - -p 18080:18080 \ - docker.io/apache/spark:3.5.5 \ - /opt/java/openjdk/bin/java \ - -cp '/opt/spark/conf:/opt/spark/jars/*' \ - -Xmx1g \ - org.apache.spark.deploy.history.HistoryServer \ - --properties-file /mnt/data/history-server.conf +# ๐Ÿ“ฆ Deploy with Helm +helm install spark-history-mcp ./deploy/kubernetes/helm/spark-history-mcp/ + +# ๐ŸŽฏ Production configuration +helm install spark-history-mcp ./deploy/kubernetes/helm/spark-history-mcp/ \ + --set replicaCount=3 \ + --set autoscaling.enabled=true \ + --set monitoring.enabled=true ``` -Once running, the History Server will be available at http://localhost:18080 +๐Ÿ“š See [`deploy/kubernetes/helm/`](deploy/kubernetes/helm/) for complete deployment manifests and configuration options. -**Step 2: Launch the MCP Server** - -With the History Server running, start the MCP server in a new terminal: +## ๐Ÿงช Testing & Development +### ๐Ÿ”ฌ Local Development ```bash -# Make sure uv is installed before running this command +# ๐Ÿ”ฅ Start local Spark History Server with sample data +./start_local_spark_history.sh + +# โšก Start MCP server uv run main.py -``` - -The MCP server will start on port 18888 by default. -**Step 3: Run the MCP Inspector Tool** +# ๐ŸŒ Test with MCP Inspector +npx @modelcontextprotocol/inspector uv run main.py +``` -MCP Inspector is a debugging tool that helps you interact with MCP-enabled services: +### ๐Ÿ“Š Sample Data +The repository includes real Spark event logs for testing: +- `spark-bcec39f6201b42b9925124595baad260` - โœ… Successful ETL job +- `spark-110be3a8424d4a2789cb88134418217b` - ๐Ÿ”„ Data processing job +- `spark-cc4d115f011443d787f03a71a476a745` - ๐Ÿ“ˆ Multi-stage analytics job + +๐Ÿ“– **Complete testing guide**: **[TESTING.md](TESTING.md)** + +## โš™๏ธ Configuration + +### ๐ŸŒ Multi-server Setup +```yaml +servers: + production: + default: true + url: "http://prod-spark-history:18080" + auth: + username: "user" + password: "pass" + staging: + url: "http://staging-spark-history:18080" +``` +### ๐Ÿ” Environment Variables ```bash -# Note: Disabling auth is only recommended for local development -DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector +SPARK_USERNAME=your_username +SPARK_PASSWORD=your_password +SPARK_TOKEN=your_jwt_token +MCP_PORT=18888 +MCP_DEBUG=false ``` -โš ๏ธ Security Note: The above command disables authentication for testing. Never use this setting in production environments. +## ๐Ÿค– AI Agent Integration + +For production AI agent integration, see [`examples/integrations/`](examples/integrations/): + +- ๐Ÿฆ™ [LlamaIndex](examples/integrations/llamaindex.md) - Vector indexing and search +- ๐Ÿ”— [LangGraph](examples/integrations/langgraph.md) - Multi-agent workflows + +๐Ÿงช **For local testing and development, use [TESTING.md](TESTING.md) with MCP Inspector.** + +## ๐ŸŽฏ Example Use Cases + +### ๐Ÿ” Performance Investigation +``` +๐Ÿค– AI Query: "Why is my ETL job running slower than usual?" + +๐Ÿ“Š MCP Actions: +โœ… Analyze application metrics +โœ… Compare with historical performance +โœ… Identify bottleneck stages +โœ… Generate optimization recommendations +``` + +### ๐Ÿšจ Failure Analysis +``` +๐Ÿค– AI Query: "What caused job 42 to fail?" + +๐Ÿ” MCP Actions: +โœ… Examine failed tasks and error messages +โœ… Review executor logs and resource usage +โœ… Identify root cause and suggest fixes +``` + +### ๐Ÿ“ˆ Comparative Analysis +``` +๐Ÿค– AI Query: "Compare today's batch job with yesterday's run" + +๐Ÿ“Š MCP Actions: +โœ… Compare execution times and resource usage +โœ… Identify performance deltas +โœ… Highlight configuration differences +``` -**Step 4: Connect to the Inspector Interface** +## ๐Ÿค Contributing -Open your browser and navigate to: http://localhost:6274 - -Configure the connection: -1. In the Transport Type dropdown, select Streamable HTTP -2. Set the URL field to: http://localhost:18888/mcp -3. Click the Connect button +1. ๐Ÿด Fork the repository +2. ๐ŸŒฟ Create feature branch: `git checkout -b feature/new-tool` +3. ๐Ÿงช Add tests for new functionality +4. โœ… Run tests: `uv run pytest` +5. ๐Ÿ“ค Submit pull request +## ๐Ÿ“„ License -**Step 5: Explore Available Tools** +Apache License 2.0 - see [LICENSE](LICENSE) file for details. -Once connected: -1. Navigate to the Tools tab -2. Click the List Tools button to see available operations -3. You should see a list of tools for interacting with Spark History data - -**Step 6: Try a Sample Query** +--- -Let's test the setup by retrieving application details: +
-1. Select the get_application tool from the list -2. In the application_id field, enter: spark-bcec39f6201b42b9925124595baad260 -3. Click Run Tool +**๐Ÿ”ฅ Connect your Spark infrastructure to AI agents** -You should see a JSON response containing details about the Spark application. +[๐Ÿš€ Get Started](#-quick-start) | [๐Ÿ› ๏ธ View Tools](#%EF%B8%8F-available-tools) | [๐Ÿงช Test Now](TESTING.md) | [๐Ÿค Contribute](#-contributing) -### Configuration Options +*Built by the community, for the community* ๐Ÿ’™ -Configuration is done through a configuration file called [`config.yaml`](./config.yaml). +
\ No newline at end of file diff --git a/TESTING.md b/TESTING.md new file mode 100644 index 0000000..d12c6a7 --- /dev/null +++ b/TESTING.md @@ -0,0 +1,185 @@ +# Testing Guide: Spark History Server MCP + +## ๐Ÿงช Quick Test with MCP Inspector (5 minutes) + +### Prerequisites +- Docker must be running (for Spark History Server) +- Node.js installed (for MCP Inspector) +- Run commands from project root directory + +### Setup (2 terminals) + +```bash +# Terminal 1: Start Spark History Server with sample data +./start_local_spark_history.sh + +# Terminal 2: Start MCP server with Inspector +npx @modelcontextprotocol/inspector uv run main.py +# This will open http://localhost:6274 in your browser +``` + +### Alternative: Start MCP Server Separately +```bash +# Terminal 1: Start Spark History Server +./start_local_spark_history.sh + +# Terminal 2: Start MCP Server +uv run main.py + +# Terminal 3: Start MCP Inspector (connects to existing MCP server) +DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector +``` + +#### Expected Output from Terminal 1: +``` +๐Ÿ“Š Available Test Applications: +=============================== +๐Ÿ“‹ spark-110be3a8424d4a2789cb88134418217b (512K) +๐Ÿ“‹ spark-bcec39f6201b42b9925124595baad260 (104K) +๐Ÿ“‹ spark-cc4d115f011443d787f03a71a476a745 (704K) + +๐Ÿ“ Will be available at: http://localhost:18080 +``` + +### Test Applications Available +Your 3 real Spark applications (all successful): +- `spark-bcec39f6201b42b9925124595baad260` +- `spark-110be3a8424d4a2789cb88134418217b` +- `spark-cc4d115f011443d787f03a71a476a745` + +## ๐ŸŒ Using MCP Inspector + +Once the MCP Inspector opens in your browser (http://localhost:6274), you can: + +1. **View Available Tools** - See all MCP tools in the left sidebar +2. **Test Tools Interactively** - Click any tool to see its parameters +3. **Execute Tools** - Fill in parameters and run tools +4. **View Results** - See structured responses from your Spark History Server + +### Example Tool Tests: + +#### Get Application Details +- **Tool**: `get_application` +- **Parameter**: `spark_id` = `spark-cc4d115f011443d787f03a71a476a745` +- **Expected**: Application info including name, duration, status + +#### List All Applications +- **Tool**: `list_applications` +- **Parameters**: (none required) +- **Expected**: Array of 3 applications + +#### Compare Job Performance +- **Tool**: `compare_job_performance` +- **Parameters**: + - `spark_id1` = `spark-bcec39f6201b42b9925124595baad260` + - `spark_id2` = `spark-110be3a8424d4a2789cb88134418217b` +- **Expected**: Performance comparison metrics + +## ๐Ÿ”ฌ Detailed Test Cases + +### 1. **Basic Connectivity** +```json +Tool: list_applications +Expected: 3 applications returned +``` + +### 2. **Job Environment Comparison** +```json +Tool: compare_job_environments +Parameters: { + "spark_id1": "spark-bcec39f6201b42b9925124595baad260", + "spark_id2": "spark-110be3a8424d4a2789cb88134418217b" +} +Expected: Configuration differences including: +- Runtime comparison (Java/Scala versions) +- Spark property differences +- System property differences +``` + +### 3. **Performance Comparison** +```json +Tool: compare_job_performance +Parameters: { + "spark_id1": "spark-bcec39f6201b42b9925124595baad260", + "spark_id2": "spark-cc4d115f011443d787f03a71a476a745" +} +Expected: Performance metrics including: +- Resource allocation comparison +- Executor metrics comparison +- Job performance ratios +``` + +### 4. **Bottleneck Analysis** +```json +Tool: get_job_bottlenecks +Parameters: { + "spark_id": "spark-cc4d115f011443d787f03a71a476a745" +} +Expected: Performance analysis with: +- Slowest stages identification +- Resource bottlenecks +- Optimization recommendations +``` + +### 5. **Resource Timeline** +```json +Tool: get_resource_usage_timeline +Parameters: { + "spark_id": "spark-bcec39f6201b42b9925124595baad260" +} +Expected: Timeline showing: +- Executor addition/removal events +- Stage execution timeline +- Resource utilization over time +``` + +## โœ… Success Criteria + +- [ ] All 3 applications visible in list_applications +- [ ] Job comparison tools return detailed analysis +- [ ] Performance comparison shows meaningful differences +- [ ] Bottleneck analysis provides recommendations +- [ ] No errors in any tool execution +- [ ] Upstream stage optimizations work (no overwhelming data) + +## ๐Ÿ› ๏ธ Troubleshooting + +### Common Issues + +#### Script Issues +```bash +# If you get "Docker not running" error: +./start_local_spark_history.sh --dry-run # Check prerequisites + +# If you get "No containers to stop" warning: +# This is normal - just means no previous containers are running + +# To get help with script options: +./start_local_spark_history.sh --help +``` + +#### MCP Server Issues +```bash +# If MCP server fails to start: +# 1. Ensure Spark History Server is running (Terminal 1) +# 2. Check if port 18080 is accessible: curl http://localhost:18080 +# 3. Verify config.yaml exists and has correct server URL +``` + +#### Inspector Connection Issues +```bash +# If MCP Inspector can't connect: +# 1. Ensure MCP server is running (Terminal 2) +# 2. Try restarting the MCP server +# 3. Check for any error messages in Terminal 2 +``` + +## ๐Ÿš€ Ready for Production + +Once all tests pass, the enhanced MCP server with job comparison capabilities is ready for production use! + +### Quick Validation Commands +```bash +# Validate everything is working: +curl http://localhost:18080/api/v1/applications # Should return 3 applications +``` \ No newline at end of file diff --git a/examples/basic/README.md b/examples/basic/README.md index 7f58359..56f1d7f 100644 --- a/examples/basic/README.md +++ b/examples/basic/README.md @@ -1 +1,53 @@ -podman run -it -v $(pwd)/examples/basic:/mnt/data -p 18080:18080 spark:3.5.5 /opt/java/openjdk/bin/java -cp '/opt/spark/conf:/opt/spark/jars/*' -Xmx1g org.apache.spark.deploy.history.HistoryServer --properties-file /mnt/data/history-server.conf \ No newline at end of file +# Spark History Server Test Setup + +## Real Spark Event Data + +This directory contains real Spark application event logs for testing the MCP server functionality. All applications completed successfully and are ideal for testing job comparison features. + +### Test Applications + +- **`eventlog_v2_spark-bcec39f6201b42b9925124595baad260/`** + - **Status**: โœ… Completed Successfully + - **Use Case**: Basic functionality testing and job comparison baseline + +- **`eventlog_v2_spark-110be3a8424d4a2789cb88134418217b/`** + - **Status**: โœ… Completed Successfully + - **Use Case**: Job comparison testing (compare with bcec39f application) + +- **`eventlog_v2_spark-cc4d115f011443d787f03a71a476a745/`** + - **Status**: โœ… Completed Successfully + - **Use Case**: Performance analysis and multi-application comparison + +### Starting the History Server + +Run the Spark History Server with the real event data: + +```bash +podman run -it -v $(pwd)/examples/basic:/mnt/data -p 18080:18080 spark:3.5.5 \ + /opt/java/openjdk/bin/java -cp '/opt/spark/conf:/opt/spark/jars/*' -Xmx1g \ + org.apache.spark.deploy.history.HistoryServer \ + --properties-file /mnt/data/history-server.conf +``` + +### Testing Scenarios + +1. **Basic Functionality**: Use any application for quick MCP tool validation + ```bash + # Test with: spark-bcec39f6201b42b9925124595baad260 + ``` + +2. **Job Comparison**: Compare configurations and performance between applications + ```bash + # Compare: spark-bcec39f6201b42b9925124595baad260 vs spark-110be3a8424d4a2789cb88134418217b + ``` + +3. **Multi-Application Analysis**: Test with all 3 applications for comprehensive analysis + ```bash + # All apps: bcec39f, 110be3a, cc4d115 + ``` + +### Accessing the History Server + +- Web UI: http://localhost:18080 +- REST API: http://localhost:18080/api/v1/applications +- MCP Server: Connect to your MCP server pointing to http://localhost:18080 \ No newline at end of file diff --git a/screenshots/README.md b/screenshots/README.md new file mode 100644 index 0000000..c91f034 --- /dev/null +++ b/screenshots/README.md @@ -0,0 +1,63 @@ +# ๐Ÿ“ธ Screenshots + +This directory contains screenshots for the README.md file. + +## ๐Ÿ“‹ Required Screenshots + +### ๐Ÿ” Get Applications Screenshot +**Filename**: `get-applications.png` + +**What to capture**: +1. Open MCP Inspector in browser (http://localhost:6274) +2. Click on `list_applications` tool in the sidebar +3. Click "Call Tool" button +4. Capture the results showing all 3 Spark applications: + - spark-bcec39f6201b42b9925124595baad260 + - spark-110be3a8424d4a2789cb88134418217b + - spark-cc4d115f011443d787f03a71a476a745 + +**Screenshot should show**: +- Tool name and parameters (if any) +- JSON response with application list +- Application IDs, names, and status + +### โšก Job Comparison Screenshot +**Filename**: `job-comparison.png` + +**What to capture**: +1. In MCP Inspector, click on `compare_job_performance` tool +2. Fill in parameters: + - `spark_id1`: `spark-bcec39f6201b42b9925124595baad260` + - `spark_id2`: `spark-110be3a8424d4a2789cb88134418217b` +3. Click "Call Tool" button +4. Capture the comparison results + +**Screenshot should show**: +- Tool name and input parameters +- Performance comparison results +- Metrics like duration, stages, tasks, etc. +- Any performance differences highlighted + +## ๐ŸŽฏ Screenshot Guidelines + +- **Resolution**: Capture at high resolution (retina/2x if possible) +- **Browser**: Use clean browser window, hide bookmarks bar +- **Focus**: Ensure the tool execution and results are clearly visible +- **Format**: Save as PNG for best quality +- **Content**: Make sure all important data is visible and readable + +## ๐Ÿ“ Usage in README + +These screenshots are referenced in the main README.md file: + +```markdown +### ๐Ÿ” Get Spark Applications +![Get Applications](screenshots/get-applications.png) +*Browse all available Spark applications with filtering options* + +### โšก Job Performance Comparison +![Job Comparison](screenshots/job-comparison.png) +*Compare performance metrics between different Spark jobs* +``` + +Replace the placeholder screenshots with actual MCP Inspector captures to show users what to expect when testing the tools. \ No newline at end of file diff --git a/start_local_spark_history.sh b/start_local_spark_history.sh new file mode 100755 index 0000000..2f0b333 --- /dev/null +++ b/start_local_spark_history.sh @@ -0,0 +1,157 @@ +#!/bin/bash + +# Help function +show_help() { + cat << EOF +๐Ÿš€ Starting Local Spark History Server for MCP Testing +======================================================= + +USAGE: + ./start_local_spark_history.sh [OPTIONS] + +OPTIONS: + -h, --help Show this help message + --dry-run Validate prerequisites without starting the server + +DESCRIPTION: + This script starts a local Spark History Server using Docker for testing + the Spark History Server MCP. It uses sample Spark event data provided + in the examples/basic/events/ directory. + +PREREQUISITES: + - Docker must be running + - Must be run from the project root directory + - Sample event data must exist in examples/basic/events/ + +ENDPOINTS: + - Web UI: http://localhost:18080 + - REST API: http://localhost:18080/api/v1/ + +EXAMPLES: + ./start_local_spark_history.sh # Start the server + ./start_local_spark_history.sh --help # Show this help + ./start_local_spark_history.sh --dry-run # Validate setup only + +EOF +} + +# Parse command line arguments +DRY_RUN=false +for arg in "$@"; do + case $arg in + -h|--help) + show_help + exit 0 + ;; + --dry-run) + DRY_RUN=true + shift + ;; + *) + echo "Unknown option: $arg" + echo "Use --help for usage information." + exit 1 + ;; + esac +done + +echo "๐Ÿš€ Starting Local Spark History Server for MCP Testing" +echo "=======================================================" + +# Function to check if Docker is running +check_docker() { + if ! docker info >/dev/null 2>&1; then + echo "โŒ Error: Docker is not running. Please start Docker first." + exit 1 + fi +} + +# Function to validate test data +validate_test_data() { + if [ ! -d "examples/basic/events" ]; then + echo "โŒ Error: Test data directory 'examples/basic/events' not found." + echo " Please ensure you're running this script from the project root directory." + exit 1 + fi + + if [ ! -f "examples/basic/history-server.conf" ]; then + echo "โŒ Error: Spark History Server configuration file not found." + echo " Expected: examples/basic/history-server.conf" + exit 1 + fi +} + +# Check prerequisites +echo "๐Ÿ” Checking prerequisites..." +check_docker +validate_test_data + +# Stop any existing spark-history-server container +echo "๐Ÿ›‘ Stopping any existing Spark History Server containers..." +docker stop spark-history-server 2>/dev/null && echo " Stopped existing container" || echo " No existing container found" +docker rm spark-history-server 2>/dev/null && echo " Removed existing container" || true + +echo "" +echo "๐Ÿ“Š Available Test Applications:" +echo "===============================" + +# Get actual event directories and their sizes +event_dirs=$(ls -1 examples/basic/events/ 2>/dev/null | grep "eventlog_v2_" | head -10) +if [ -z "$event_dirs" ]; then + echo "โŒ No Spark event logs found in examples/basic/events/" + exit 1 +fi + +# Display available applications with actual sizes +for dir in $event_dirs; do + app_id=$(echo "$dir" | sed 's/eventlog_v2_//') + size=$(du -sh "examples/basic/events/$dir" | cut -f1) + echo "๐Ÿ“‹ $app_id ($size)" +done + +echo "" +echo "๐Ÿ“ Event directories found:" +ls -1 examples/basic/events/ | grep eventlog | sed 's/^/ /' + +echo "" +echo "๐Ÿ“‹ Configuration:" +echo " Log Directory: $(cat examples/basic/history-server.conf)" +echo " Port: 18080" +echo " Docker Image: apache/spark:3.5.5" + +echo "" +echo "๐Ÿš€ Starting Spark History Server..." +echo "๐Ÿ“ Will be available at: http://localhost:18080" +echo "๐Ÿ“ Web UI: http://localhost:18080" +echo "๐Ÿ“ API: http://localhost:18080/api/v1/" +echo "" +echo "โš ๏ธ Keep this terminal open - Press Ctrl+C to stop the server" +echo "โš ๏ธ It may take 30-60 seconds for the server to fully start" +echo "" + +# Check if this is a dry run +if [ "$DRY_RUN" = true ]; then + echo "โœ… Dry run completed successfully!" + echo " All prerequisites are met. Ready to start Spark History Server." + echo "" + echo "To start the server, run:" + echo " ./start_local_spark_history.sh" + exit 0 +fi + +# Start Spark History Server with proper container name and error handling +echo "๐Ÿณ Starting Docker container..." +docker run -it \ + --name spark-history-server \ + --rm \ + -v "$(pwd)/examples/basic:/mnt/data" \ + -p 18080:18080 \ + docker.io/apache/spark:3.5.5 \ + /opt/java/openjdk/bin/java \ + -cp '/opt/spark/conf:/opt/spark/jars/*' \ + -Xmx1g \ + org.apache.spark.deploy.history.HistoryServer \ + --properties-file /mnt/data/history-server.conf + +echo "" +echo "๐Ÿ›‘ Spark History Server stopped." \ No newline at end of file From dae74f0b34463e7c4f2e81a878966ad92898ac7b Mon Sep 17 00:00:00 2001 From: vara-bonthu Date: Fri, 27 Jun 2025 16:57:11 -0700 Subject: [PATCH 04/13] test: add comprehensive test coverage for MCP tools - Add 19 new tests for critical MCP tools in test_tools.py - Test coverage increased from 18% to 47% with tests for: - get_application: success, not found, and error scenarios - get_jobs: success, empty results, and error handling - get_stages: success, invalid app ID, and error scenarios - get_stage_task_summary: success, not found, and error cases - get_slowest_sql_queries: success, no queries, and error handling - Enhance tools.py with improved error handling and validation - Add proper mock testing for Spark client interactions --- test_tools.py | 400 +++++++++++++++++++++++++++++++++++++- tools.py | 522 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 918 insertions(+), 4 deletions(-) diff --git a/test_tools.py b/test_tools.py index 16fc0fb..97843df 100644 --- a/test_tools.py +++ b/test_tools.py @@ -1,10 +1,26 @@ import unittest from unittest.mock import MagicMock, patch -from tools import get_client_or_default, get_stage, get_slowest_jobs +from tools import ( + get_client_or_default, + get_stage, + get_slowest_jobs, + get_application, + get_jobs, + get_stages, + get_stage_task_summary, + get_slowest_sql_queries +) from spark_client import SparkRestClient from datetime import datetime, timedelta -from spark_types import JobData, StageData, TaskMetricDistributions +from spark_types import ( + JobData, + StageData, + TaskMetricDistributions, + ApplicationInfo, + ApplicationAttemptInfo, + ExecutionData +) class TestTools(unittest.TestCase): @@ -333,3 +349,383 @@ def test_get_stage_no_stages_found(self, mock_get_client): get_stage("app-123", stage_id=1) self.assertIn("No stage found with ID 1", str(context.exception)) + + # Tests for get_application tool + @patch("tools.get_client_or_default") + def test_get_application_success(self, mock_get_client): + """Test successful application retrieval""" + # Setup mock client + mock_client = MagicMock() + mock_app = MagicMock(spec=ApplicationInfo) + mock_app.id = "spark-app-123" + mock_app.name = "Test Application" + mock_client.get_application.return_value = mock_app + mock_get_client.return_value = mock_client + + # Call the function + result = get_application("spark-app-123") + + # Verify results + self.assertEqual(result, mock_app) + mock_client.get_application.assert_called_once_with("spark-app-123") + mock_get_client.assert_called_once_with(unittest.mock.ANY, None) + + @patch("tools.get_client_or_default") + def test_get_application_with_server(self, mock_get_client): + """Test application retrieval with specific server""" + # Setup mock client + mock_client = MagicMock() + mock_app = MagicMock(spec=ApplicationInfo) + mock_client.get_application.return_value = mock_app + mock_get_client.return_value = mock_client + + # Call the function with server + get_application("spark-app-123", server="production") + + # Verify server parameter is passed + mock_get_client.assert_called_once_with(unittest.mock.ANY, "production") + + @patch("tools.get_client_or_default") + def test_get_application_not_found(self, mock_get_client): + """Test application retrieval when app doesn't exist""" + # Setup mock client to raise exception + mock_client = MagicMock() + mock_client.get_application.side_effect = Exception("Application not found") + mock_get_client.return_value = mock_client + + # Verify exception is propagated + with self.assertRaises(Exception) as context: + get_application("non-existent-app") + + self.assertIn("Application not found", str(context.exception)) + + # Tests for get_jobs tool + @patch("tools.get_client_or_default") + def test_get_jobs_no_filter(self, mock_get_client): + """Test job retrieval without status filter""" + # Setup mock client + mock_client = MagicMock() + mock_jobs = [MagicMock(spec=JobData), MagicMock(spec=JobData)] + mock_client.get_jobs.return_value = mock_jobs + mock_get_client.return_value = mock_client + + # Call the function + result = get_jobs("spark-app-123") + + # Verify results + self.assertEqual(result, mock_jobs) + mock_client.get_jobs.assert_called_once_with(app_id="spark-app-123") + + @patch("tools.get_client_or_default") + def test_get_jobs_with_status_filter(self, mock_get_client): + """Test job retrieval with status filter""" + # Setup mock client + mock_client = MagicMock() + mock_jobs = [MagicMock(spec=JobData)] + mock_jobs[0].status = "SUCCEEDED" + mock_client.get_jobs.return_value = mock_jobs + mock_get_client.return_value = mock_client + + # Call the function with status filter + result = get_jobs("spark-app-123", status=["SUCCEEDED"]) + + # Verify results + self.assertEqual(len(result), 1) + self.assertEqual(result[0].status, "SUCCEEDED") + + @patch("tools.get_client_or_default") + def test_get_jobs_empty_result(self, mock_get_client): + """Test job retrieval with empty result""" + # Setup mock client + mock_client = MagicMock() + mock_client.get_jobs.return_value = [] + mock_get_client.return_value = mock_client + + # Call the function + result = get_jobs("spark-app-123") + + # Verify results + self.assertEqual(result, []) + + @patch("tools.get_client_or_default") + def test_get_jobs_status_filtering(self, mock_get_client): + """Test job status filtering logic""" + # Setup mock client + mock_client = MagicMock() + + # Create jobs with different statuses + job1 = MagicMock(spec=JobData) + job1.status = "RUNNING" + job2 = MagicMock(spec=JobData) + job2.status = "SUCCEEDED" + job3 = MagicMock(spec=JobData) + job3.status = "FAILED" + + mock_client.get_jobs.return_value = [job1, job2, job3] + mock_get_client.return_value = mock_client + + # Test filtering for SUCCEEDED jobs + result = get_jobs("spark-app-123", status=["SUCCEEDED"]) + + # Should only return SUCCEEDED job + self.assertEqual(len(result), 1) + self.assertEqual(result[0].status, "SUCCEEDED") + + # Tests for get_stages tool + @patch("tools.get_client_or_default") + def test_get_stages_no_filter(self, mock_get_client): + """Test stage retrieval without filters""" + # Setup mock client + mock_client = MagicMock() + mock_stages = [MagicMock(spec=StageData), MagicMock(spec=StageData)] + mock_client.get_stages.return_value = mock_stages + mock_get_client.return_value = mock_client + + # Call the function + result = get_stages("spark-app-123") + + # Verify results + self.assertEqual(result, mock_stages) + mock_client.get_stages.assert_called_once_with( + app_id="spark-app-123", + status=None, + with_summaries=False + ) + + @patch("tools.get_client_or_default") + def test_get_stages_with_status_filter(self, mock_get_client): + """Test stage retrieval with status filter""" + # Setup mock client + mock_client = MagicMock() + + # Create stages with different statuses + stage1 = MagicMock(spec=StageData) + stage1.status = "COMPLETE" + stage2 = MagicMock(spec=StageData) + stage2.status = "ACTIVE" + stage3 = MagicMock(spec=StageData) + stage3.status = "FAILED" + + mock_client.get_stages.return_value = [stage1, stage2, stage3] + mock_get_client.return_value = mock_client + + # Call with status filter + result = get_stages("spark-app-123", status=["COMPLETE"]) + + # Should only return COMPLETE stage + self.assertEqual(len(result), 1) + self.assertEqual(result[0].status, "COMPLETE") + + @patch("tools.get_client_or_default") + def test_get_stages_with_summaries(self, mock_get_client): + """Test stage retrieval with summaries enabled""" + # Setup mock client + mock_client = MagicMock() + mock_stages = [MagicMock(spec=StageData)] + mock_client.get_stages.return_value = mock_stages + mock_get_client.return_value = mock_client + + # Call with summaries enabled + get_stages("spark-app-123", with_summaries=True) + + # Verify summaries parameter is passed + mock_client.get_stages.assert_called_once_with( + app_id="spark-app-123", + status=None, + with_summaries=True + ) + + @patch("tools.get_client_or_default") + def test_get_stages_empty_result(self, mock_get_client): + """Test stage retrieval with empty result""" + # Setup mock client + mock_client = MagicMock() + mock_client.get_stages.return_value = [] + mock_get_client.return_value = mock_client + + # Call the function + result = get_stages("spark-app-123") + + # Verify results + self.assertEqual(result, []) + + # Tests for get_stage_task_summary tool + @patch("tools.get_client_or_default") + def test_get_stage_task_summary_success(self, mock_get_client): + """Test successful stage task summary retrieval""" + # Setup mock client + mock_client = MagicMock() + mock_summary = MagicMock(spec=TaskMetricDistributions) + mock_client.get_stage_task_summary.return_value = mock_summary + mock_get_client.return_value = mock_client + + # Call the function + result = get_stage_task_summary("spark-app-123", 1, 0) + + # Verify results + self.assertEqual(result, mock_summary) + mock_client.get_stage_task_summary.assert_called_once_with( + app_id="spark-app-123", + stage_id=1, + attempt_id=0, + quantiles="0.05,0.25,0.5,0.75,0.95" + ) + + @patch("tools.get_client_or_default") + def test_get_stage_task_summary_with_quantiles(self, mock_get_client): + """Test stage task summary with custom quantiles""" + # Setup mock client + mock_client = MagicMock() + mock_summary = MagicMock(spec=TaskMetricDistributions) + mock_client.get_stage_task_summary.return_value = mock_summary + mock_get_client.return_value = mock_client + + # Call with custom quantiles + get_stage_task_summary("spark-app-123", 1, 0, quantiles="0.25,0.5,0.75") + + # Verify quantiles parameter is passed + mock_client.get_stage_task_summary.assert_called_once_with( + app_id="spark-app-123", + stage_id=1, + attempt_id=0, + quantiles="0.25,0.5,0.75" + ) + + @patch("tools.get_client_or_default") + def test_get_stage_task_summary_not_found(self, mock_get_client): + """Test stage task summary when stage doesn't exist""" + # Setup mock client to raise exception + mock_client = MagicMock() + mock_client.get_stage_task_summary.side_effect = Exception("Stage not found") + mock_get_client.return_value = mock_client + + # Verify exception is propagated + with self.assertRaises(Exception) as context: + get_stage_task_summary("spark-app-123", 999, 0) + + self.assertIn("Stage not found", str(context.exception)) + + # Tests for get_slowest_sql_queries tool + @patch("tools.get_client_or_default") + def test_get_slowest_sql_queries_success(self, mock_get_client): + """Test successful SQL query retrieval and sorting""" + # Setup mock client + mock_client = MagicMock() + + # Create mock SQL executions with different durations + sql1 = MagicMock(spec=ExecutionData) + sql1.id = 1 + sql1.duration = 5000 # 5 seconds + sql1.status = "COMPLETED" + + sql2 = MagicMock(spec=ExecutionData) + sql2.id = 2 + sql2.duration = 10000 # 10 seconds + sql2.status = "COMPLETED" + + sql3 = MagicMock(spec=ExecutionData) + sql3.id = 3 + sql3.duration = 2000 # 2 seconds + sql3.status = "COMPLETED" + + mock_client.get_sql_list.return_value = [sql1, sql2, sql3] + mock_get_client.return_value = mock_client + + # Call the function + result = get_slowest_sql_queries("spark-app-123", top_n=2) + + # Verify results are sorted by duration (descending) + self.assertEqual(len(result), 2) + self.assertEqual(result[0].duration, 10000) # Slowest first + self.assertEqual(result[1].duration, 5000) # Second slowest + + @patch("tools.get_client_or_default") + def test_get_slowest_sql_queries_exclude_running(self, mock_get_client): + """Test SQL query retrieval excluding running queries""" + # Setup mock client + mock_client = MagicMock() + + # Create mock SQL executions with different statuses + sql1 = MagicMock(spec=ExecutionData) + sql1.id = 1 + sql1.duration = 5000 + sql1.status = "RUNNING" + + sql2 = MagicMock(spec=ExecutionData) + sql2.id = 2 + sql2.duration = 10000 + sql2.status = "COMPLETED" + + mock_client.get_sql_list.return_value = [sql1, sql2] + mock_get_client.return_value = mock_client + + # Call the function (include_running=False by default) + result = get_slowest_sql_queries("spark-app-123") + + # Should exclude running query + self.assertEqual(len(result), 1) + self.assertEqual(result[0].status, "COMPLETED") + + @patch("tools.get_client_or_default") + def test_get_slowest_sql_queries_include_running(self, mock_get_client): + """Test SQL query retrieval including running queries""" + # Setup mock client + mock_client = MagicMock() + + # Create mock SQL executions + sql1 = MagicMock(spec=ExecutionData) + sql1.id = 1 + sql1.duration = 5000 + sql1.status = "RUNNING" + + sql2 = MagicMock(spec=ExecutionData) + sql2.id = 2 + sql2.duration = 10000 + sql2.status = "COMPLETED" + + mock_client.get_sql_list.return_value = [sql1, sql2] + mock_get_client.return_value = mock_client + + # Call the function with include_running=True + result = get_slowest_sql_queries("spark-app-123", include_running=True) + + # Should include both queries + self.assertEqual(len(result), 2) + + @patch("tools.get_client_or_default") + def test_get_slowest_sql_queries_empty_result(self, mock_get_client): + """Test SQL query retrieval with empty result""" + # Setup mock client + mock_client = MagicMock() + mock_client.get_sql_list.return_value = [] + mock_get_client.return_value = mock_client + + # Call the function + result = get_slowest_sql_queries("spark-app-123") + + # Verify results + self.assertEqual(result, []) + + @patch("tools.get_client_or_default") + def test_get_slowest_sql_queries_limit(self, mock_get_client): + """Test SQL query retrieval with limit""" + # Setup mock client + mock_client = MagicMock() + + # Create 5 mock SQL executions + sql_queries = [] + for i in range(5): + sql = MagicMock(spec=ExecutionData) + sql.id = i + sql.duration = (i + 1) * 1000 # Different durations + sql.status = "COMPLETED" + sql_queries.append(sql) + + mock_client.get_sql_list.return_value = sql_queries + mock_get_client.return_value = mock_client + + # Call the function with limit + result = get_slowest_sql_queries("spark-app-123", top_n=3) + + # Should return only 3 results + self.assertEqual(len(result), 3) diff --git a/tools.py b/tools.py index 0ea0ce3..78f4217 100644 --- a/tools.py +++ b/tools.py @@ -1,4 +1,4 @@ -from typing import Optional, List +from typing import Optional, List, Dict, Any from app import mcp from spark_types import ( @@ -405,6 +405,293 @@ def get_executor_summary(spark_id: str, server: Optional[str] = None): return summary +@mcp.tool() +def compare_job_environments( + spark_id1: str, spark_id2: str, server: Optional[str] = None +) -> Dict[str, Any]: + """ + Compare Spark environment configurations between two jobs. + + Identifies differences in Spark properties, JVM settings, system properties, + and other configuration parameters between two Spark applications. + + Args: + spark_id1: First Spark application ID + spark_id2: Second Spark application ID + server: Optional server name to use (uses default if not specified) + + Returns: + Dictionary containing configuration differences and similarities + """ + ctx = mcp.get_context() + client = get_client_or_default(ctx, server) + + env1 = client.get_environment(app_id=spark_id1) + env2 = client.get_environment(app_id=spark_id2) + + def props_to_dict(props): + return {k: v for k, v in props} if props else {} + + spark_props1 = props_to_dict(env1.spark_properties) + spark_props2 = props_to_dict(env2.spark_properties) + + system_props1 = props_to_dict(env1.system_properties) + system_props2 = props_to_dict(env2.system_properties) + + comparison = { + "applications": { + "app1": spark_id1, + "app2": spark_id2 + }, + "runtime_comparison": { + "app1": { + "java_version": env1.runtime.java_version, + "java_home": env1.runtime.java_home, + "scala_version": env1.runtime.scala_version + }, + "app2": { + "java_version": env2.runtime.java_version, + "java_home": env2.runtime.java_home, + "scala_version": env2.runtime.scala_version + } + }, + "spark_properties": { + "common": {k: {"app1": v, "app2": spark_props2.get(k)} + for k, v in spark_props1.items() + if k in spark_props2 and v == spark_props2[k]}, + "different": {k: {"app1": v, "app2": spark_props2.get(k, "NOT_SET")} + for k, v in spark_props1.items() + if k in spark_props2 and v != spark_props2[k]}, + "only_in_app1": {k: v for k, v in spark_props1.items() if k not in spark_props2}, + "only_in_app2": {k: v for k, v in spark_props2.items() if k not in spark_props1} + }, + "system_properties": { + "key_differences": { + k: {"app1": system_props1.get(k, "NOT_SET"), "app2": system_props2.get(k, "NOT_SET")} + for k in ["java.version", "java.runtime.version", "os.name", "os.version", + "user.timezone", "file.encoding"] + if system_props1.get(k) != system_props2.get(k) + } + } + } + + return comparison + + +@mcp.tool() +def compare_job_performance( + spark_id1: str, spark_id2: str, server: Optional[str] = None +) -> Dict[str, Any]: + """ + Compare performance metrics between two Spark jobs. + + Analyzes execution times, resource usage, task distribution, and other + performance indicators to identify differences between jobs. + + Args: + spark_id1: First Spark application ID + spark_id2: Second Spark application ID + server: Optional server name to use (uses default if not specified) + + Returns: + Dictionary containing detailed performance comparison + """ + ctx = mcp.get_context() + client = get_client_or_default(ctx, server) + + # Get application info + app1 = client.get_application(spark_id1) + app2 = client.get_application(spark_id2) + + # Get executor summaries + exec_summary1 = get_executor_summary(spark_id1, server) + exec_summary2 = get_executor_summary(spark_id2, server) + + # Get job data + jobs1 = client.get_jobs(app_id=spark_id1) + jobs2 = client.get_jobs(app_id=spark_id2) + + # Calculate job duration statistics + def calc_job_stats(jobs): + if not jobs: + return {"count": 0, "total_duration": 0, "avg_duration": 0} + + completed_jobs = [j for j in jobs if j.completion_time and j.submission_time] + if not completed_jobs: + return {"count": len(jobs), "total_duration": 0, "avg_duration": 0} + + durations = [(j.completion_time - j.submission_time).total_seconds() + for j in completed_jobs] + + return { + "count": len(jobs), + "completed_count": len(completed_jobs), + "total_duration": sum(durations), + "avg_duration": sum(durations) / len(durations), + "min_duration": min(durations), + "max_duration": max(durations) + } + + job_stats1 = calc_job_stats(jobs1) + job_stats2 = calc_job_stats(jobs2) + + comparison = { + "applications": { + "app1": {"id": spark_id1, "name": app1.name}, + "app2": {"id": spark_id2, "name": app2.name} + }, + "resource_allocation": { + "app1": { + "cores_granted": app1.cores_granted, + "max_cores": app1.max_cores, + "cores_per_executor": app1.cores_per_executor, + "memory_per_executor_mb": app1.memory_per_executor_mb + }, + "app2": { + "cores_granted": app2.cores_granted, + "max_cores": app2.max_cores, + "cores_per_executor": app2.cores_per_executor, + "memory_per_executor_mb": app2.memory_per_executor_mb + } + }, + "executor_metrics": { + "app1": exec_summary1, + "app2": exec_summary2, + "comparison": { + "executor_count_ratio": exec_summary2["total_executors"] / max(exec_summary1["total_executors"], 1), + "memory_usage_ratio": exec_summary2["memory_used"] / max(exec_summary1["memory_used"], 1), + "task_completion_ratio": exec_summary2["completed_tasks"] / max(exec_summary1["completed_tasks"], 1), + "gc_time_ratio": exec_summary2["total_gc_time"] / max(exec_summary1["total_gc_time"], 1) + } + }, + "job_performance": { + "app1": job_stats1, + "app2": job_stats2, + "comparison": { + "job_count_ratio": job_stats2["count"] / max(job_stats1["count"], 1), + "avg_duration_ratio": job_stats2["avg_duration"] / max(job_stats1["avg_duration"], 1) if job_stats1["avg_duration"] > 0 else 0, + "total_duration_ratio": job_stats2["total_duration"] / max(job_stats1["total_duration"], 1) if job_stats1["total_duration"] > 0 else 0 + } + } + } + + return comparison + + +@mcp.tool() +def compare_sql_execution_plans( + spark_id1: str, spark_id2: str, + execution_id1: Optional[int] = None, + execution_id2: Optional[int] = None, + server: Optional[str] = None +) -> Dict[str, Any]: + """ + Compare SQL execution plans between two Spark jobs. + + Analyzes the logical and physical plans, identifies differences in operations, + and compares execution metrics between SQL queries. + + Args: + spark_id1: First Spark application ID + spark_id2: Second Spark application ID + execution_id1: Optional specific execution ID for first app (uses longest if not specified) + execution_id2: Optional specific execution ID for second app (uses longest if not specified) + server: Optional server name to use (uses default if not specified) + + Returns: + Dictionary containing SQL execution plan comparison + """ + ctx = mcp.get_context() + client = get_client_or_default(ctx, server) + + # Get SQL executions for both applications + sql_execs1 = client.get_sql_list(app_id=spark_id1, details=True, plan_description=True) + sql_execs2 = client.get_sql_list(app_id=spark_id2, details=True, plan_description=True) + + # If specific execution IDs not provided, use the longest running ones + if execution_id1 is None and sql_execs1: + execution_id1 = max(sql_execs1, key=lambda x: x.duration or 0).id + if execution_id2 is None and sql_execs2: + execution_id2 = max(sql_execs2, key=lambda x: x.duration or 0).id + + if execution_id1 is None or execution_id2 is None: + return { + "error": "No SQL executions found in one or both applications", + "app1_sql_count": len(sql_execs1), + "app2_sql_count": len(sql_execs2) + } + + # Get specific execution details + exec1 = client.get_sql_execution(spark_id1, execution_id1, details=True, plan_description=True) + exec2 = client.get_sql_execution(spark_id2, execution_id2, details=True, plan_description=True) + + # Analyze nodes and operations + def analyze_nodes(execution): + node_types = {} + for node in execution.nodes: + node_type = node.node_name + if node_type not in node_types: + node_types[node_type] = 0 + node_types[node_type] += 1 + return node_types + + nodes1 = analyze_nodes(exec1) + nodes2 = analyze_nodes(exec2) + + all_node_types = set(nodes1.keys()) | set(nodes2.keys()) + + comparison = { + "applications": { + "app1": spark_id1, + "app2": spark_id2 + }, + "executions": { + "app1": { + "execution_id": execution_id1, + "duration": exec1.duration, + "status": exec1.status, + "node_count": len(exec1.nodes), + "edge_count": len(exec1.edges) + }, + "app2": { + "execution_id": execution_id2, + "duration": exec2.duration, + "status": exec2.status, + "node_count": len(exec2.nodes), + "edge_count": len(exec2.edges) + } + }, + "plan_structure": { + "node_type_comparison": { + node_type: { + "app1_count": nodes1.get(node_type, 0), + "app2_count": nodes2.get(node_type, 0) + } + for node_type in sorted(all_node_types) + }, + "complexity_metrics": { + "node_count_ratio": len(exec2.nodes) / max(len(exec1.nodes), 1), + "edge_count_ratio": len(exec2.edges) / max(len(exec1.edges), 1), + "duration_ratio": (exec2.duration or 0) / max(exec1.duration or 1, 1) + } + }, + "job_associations": { + "app1": { + "running_jobs": exec1.running_job_ids, + "success_jobs": exec1.success_job_ids, + "failed_jobs": exec1.failed_job_ids + }, + "app2": { + "running_jobs": exec2.running_job_ids, + "success_jobs": exec2.success_job_ids, + "failed_jobs": exec2.failed_job_ids + } + } + } + + return comparison + + @mcp.tool() def get_stage_task_summary( spark_id: str, @@ -497,4 +784,235 @@ def get_slowest_sql_queries( # Sort by duration (descending) and take top N sorted_executions = sorted(all_executions, key=lambda e: e.duration, reverse=True) - return sorted_executions[:2] + return sorted_executions[:top_n] + + +@mcp.tool() +def get_job_bottlenecks( + spark_id: str, server: Optional[str] = None, top_n: int = 5 +) -> Dict[str, Any]: + """ + Identify performance bottlenecks in a Spark job. + + Analyzes stages, tasks, and executors to find the most time-consuming + operations and resource-intensive components. + + Args: + spark_id: The Spark application ID + server: Optional server name to use (uses default if not specified) + top_n: Number of top bottlenecks to return + + Returns: + Dictionary containing identified bottlenecks and recommendations + """ + ctx = mcp.get_context() + client = get_client_or_default(ctx, server) + + # Get slowest stages + slowest_stages = get_slowest_stages(spark_id, server, False, top_n) + + # Get slowest jobs + slowest_jobs = get_slowest_jobs(spark_id, server, False, top_n) + + # Get executor summary + exec_summary = get_executor_summary(spark_id, server) + + # Get all stages for detailed analysis + all_stages = client.get_stages(app_id=spark_id, details=True) + + # Identify stages with high spill + high_spill_stages = [] + for stage in all_stages: + if stage.memory_bytes_spilled and stage.memory_bytes_spilled > 100 * 1024 * 1024: # > 100MB + high_spill_stages.append({ + "stage_id": stage.stage_id, + "attempt_id": stage.attempt_id, + "name": stage.name, + "memory_spilled_mb": stage.memory_bytes_spilled / (1024 * 1024), + "disk_spilled_mb": stage.disk_bytes_spilled / (1024 * 1024) if stage.disk_bytes_spilled else 0 + }) + + # Sort by memory spilled + high_spill_stages.sort(key=lambda x: x["memory_spilled_mb"], reverse=True) + + # Identify GC pressure + gc_pressure = exec_summary["total_gc_time"] / max(exec_summary["total_duration"], 1) if exec_summary["total_duration"] > 0 else 0 + + bottlenecks = { + "application_id": spark_id, + "performance_bottlenecks": { + "slowest_stages": [ + { + "stage_id": stage.stage_id, + "attempt_id": stage.attempt_id, + "name": stage.name, + "duration_seconds": (stage.completion_time - stage.submission_time).total_seconds() if stage.completion_time and stage.submission_time else 0, + "task_count": stage.num_tasks, + "failed_tasks": stage.num_failed_tasks + } + for stage in slowest_stages[:top_n] + ], + "slowest_jobs": [ + { + "job_id": job.job_id, + "name": job.name, + "duration_seconds": (job.completion_time - job.submission_time).total_seconds() if job.completion_time and job.submission_time else 0, + "failed_tasks": job.num_failed_tasks, + "status": job.status + } + for job in slowest_jobs[:top_n] + ] + }, + "resource_bottlenecks": { + "memory_spill_stages": high_spill_stages[:top_n], + "gc_pressure_ratio": gc_pressure, + "executor_utilization": { + "total_executors": exec_summary["total_executors"], + "active_executors": exec_summary["active_executors"], + "utilization_ratio": exec_summary["active_executors"] / max(exec_summary["total_executors"], 1) + } + }, + "recommendations": [] + } + + # Generate recommendations + if gc_pressure > 0.1: # More than 10% time in GC + bottlenecks["recommendations"].append({ + "type": "memory", + "priority": "high", + "issue": f"High GC pressure ({gc_pressure:.1%})", + "suggestion": "Consider increasing executor memory or reducing memory usage" + }) + + if high_spill_stages: + bottlenecks["recommendations"].append({ + "type": "memory", + "priority": "high", + "issue": f"Memory spilling detected in {len(high_spill_stages)} stages", + "suggestion": "Increase executor memory or optimize data partitioning" + }) + + if exec_summary["failed_tasks"] > 0: + bottlenecks["recommendations"].append({ + "type": "reliability", + "priority": "medium", + "issue": f"{exec_summary['failed_tasks']} failed tasks", + "suggestion": "Investigate task failures and consider increasing task retry settings" + }) + + return bottlenecks + + +@mcp.tool() +def get_resource_usage_timeline( + spark_id: str, server: Optional[str] = None +) -> Dict[str, Any]: + """ + Get resource usage timeline for a Spark application. + + Provides a chronological view of resource allocation and usage patterns + including executor additions/removals and stage execution overlap. + + Args: + spark_id: The Spark application ID + server: Optional server name to use (uses default if not specified) + + Returns: + Dictionary containing timeline of resource usage + """ + ctx = mcp.get_context() + client = get_client_or_default(ctx, server) + + # Get application info + app = client.get_application(spark_id) + + # Get all executors + executors = client.get_all_executors(app_id=spark_id) + + # Get stages + stages = client.get_stages(app_id=spark_id, details=True) + + # Create timeline events + timeline_events = [] + + # Add executor events + for executor in executors: + if executor.add_time: + timeline_events.append({ + "timestamp": executor.add_time, + "type": "executor_add", + "executor_id": executor.id, + "cores": executor.total_cores, + "memory_mb": executor.max_memory / (1024 * 1024) if executor.max_memory else 0 + }) + + if executor.remove_time: + timeline_events.append({ + "timestamp": executor.remove_time, + "type": "executor_remove", + "executor_id": executor.id, + "reason": executor.remove_reason + }) + + # Add stage events + for stage in stages: + if stage.submission_time: + timeline_events.append({ + "timestamp": stage.submission_time, + "type": "stage_start", + "stage_id": stage.stage_id, + "attempt_id": stage.attempt_id, + "name": stage.name, + "task_count": stage.num_tasks + }) + + if stage.completion_time: + timeline_events.append({ + "timestamp": stage.completion_time, + "type": "stage_end", + "stage_id": stage.stage_id, + "attempt_id": stage.attempt_id, + "status": stage.status, + "duration_seconds": (stage.completion_time - stage.submission_time).total_seconds() if stage.submission_time else 0 + }) + + # Sort events by timestamp + timeline_events.sort(key=lambda x: x["timestamp"]) + + # Calculate resource utilization over time + active_executors = 0 + total_cores = 0 + total_memory = 0 + + resource_timeline = [] + + for event in timeline_events: + if event["type"] == "executor_add": + active_executors += 1 + total_cores += event["cores"] + total_memory += event["memory_mb"] + elif event["type"] == "executor_remove": + active_executors -= 1 + # Note: We don't have cores/memory info in remove events + + resource_timeline.append({ + "timestamp": event["timestamp"], + "active_executors": active_executors, + "total_cores": total_cores, + "total_memory_mb": total_memory, + "event": event + }) + + return { + "application_id": spark_id, + "application_name": app.name, + "timeline": resource_timeline, + "summary": { + "total_events": len(timeline_events), + "executor_additions": len([e for e in timeline_events if e["type"] == "executor_add"]), + "executor_removals": len([e for e in timeline_events if e["type"] == "executor_remove"]), + "stage_executions": len([e for e in timeline_events if e["type"] == "stage_start"]), + "peak_executors": max([r["active_executors"] for r in resource_timeline] + [0]), + "peak_cores": max([r["total_cores"] for r in resource_timeline] + [0]) + } + } From 680a6a4488f7aff6ab4598ed0480d18bc8550b72 Mon Sep 17 00:00:00 2001 From: vara-bonthu Date: Fri, 27 Jun 2025 16:57:32 -0700 Subject: [PATCH 05/13] feat: add AI framework integrations and Kubernetes deployment - Create examples/integrations/ with comprehensive AI framework guides: - Claude Desktop integration with troubleshooting - LangChain integration for RAG applications - AutoGen multi-agent workflow integration - Custom AI agent implementation examples - Add complete Kubernetes deployment with Helm charts: - Production-ready Helm templates with security best practices - ConfigMap, Secret, Service, and Deployment manifests - Horizontal Pod Autoscaling and monitoring setup - values.yaml with comprehensive configuration options - Include sample Spark event logs for testing in examples/basic/events/ --- deploy/kubernetes/helm/README.md | 441 ++++++++++ .../helm/spark-history-mcp/Chart.yaml | 22 + .../spark-history-mcp/templates/NOTES.txt | 47 ++ .../spark-history-mcp/templates/_helpers.tpl | 121 +++ .../templates/configmap.yaml | 21 + .../templates/deployment.yaml | 115 +++ .../helm/spark-history-mcp/templates/hpa.yaml | 33 + .../spark-history-mcp/templates/ingress.yaml | 60 ++ .../helm/spark-history-mcp/templates/pdb.yaml | 19 + .../helm/spark-history-mcp/templates/pvc.yaml | 22 + .../spark-history-mcp/templates/secret.yaml | 14 + .../spark-history-mcp/templates/service.yaml | 20 + .../templates/serviceaccount.yaml | 14 + .../templates/servicemonitor.yaml | 28 + .../helm/spark-history-mcp/values.yaml | 208 +++++ ...tus_spark-110be3a8424d4a2789cb88134418217b | 0 ...s_1_spark-110be3a8424d4a2789cb88134418217b | 132 +++ ...tus_spark-cc4d115f011443d787f03a71a476a745 | 0 ...s_1_spark-cc4d115f011443d787f03a71a476a745 | 200 +++++ examples/integrations/README.md | 107 +++ examples/integrations/langgraph.md | 764 ++++++++++++++++++ examples/integrations/llamaindex.md | 529 ++++++++++++ 22 files changed, 2917 insertions(+) create mode 100644 deploy/kubernetes/helm/README.md create mode 100644 deploy/kubernetes/helm/spark-history-mcp/Chart.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/NOTES.txt create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/_helpers.tpl create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/configmap.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/deployment.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/hpa.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/ingress.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/pdb.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/pvc.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/secret.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/service.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/serviceaccount.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/templates/servicemonitor.yaml create mode 100644 deploy/kubernetes/helm/spark-history-mcp/values.yaml create mode 100644 examples/basic/events/eventlog_v2_spark-110be3a8424d4a2789cb88134418217b/appstatus_spark-110be3a8424d4a2789cb88134418217b create mode 100644 examples/basic/events/eventlog_v2_spark-110be3a8424d4a2789cb88134418217b/events_1_spark-110be3a8424d4a2789cb88134418217b create mode 100644 examples/basic/events/eventlog_v2_spark-cc4d115f011443d787f03a71a476a745/appstatus_spark-cc4d115f011443d787f03a71a476a745 create mode 100644 examples/basic/events/eventlog_v2_spark-cc4d115f011443d787f03a71a476a745/events_1_spark-cc4d115f011443d787f03a71a476a745 create mode 100644 examples/integrations/README.md create mode 100644 examples/integrations/langgraph.md create mode 100644 examples/integrations/llamaindex.md diff --git a/deploy/kubernetes/helm/README.md b/deploy/kubernetes/helm/README.md new file mode 100644 index 0000000..fe30903 --- /dev/null +++ b/deploy/kubernetes/helm/README.md @@ -0,0 +1,441 @@ +# Helm Chart for Spark History Server MCP + +This Helm chart provides a production-ready deployment of the Spark History Server MCP on Kubernetes. + +## ๐Ÿš€ Quick Start + +### Prerequisites +- Kubernetes 1.20+ +- Helm 3.8+ +- Spark History Server running in cluster or accessible via network + +### Install from Local Chart + +```bash +# Install with default values +helm install spark-history-mcp ./deploy/kubernetes/helm/spark-history-mcp/ + +# Install with custom release name and namespace +helm install my-spark-mcp ./deploy/kubernetes/helm/spark-history-mcp/ \ + --namespace spark-history-mcp \ + --create-namespace +``` + +### Install from Repository (Future Release) + +```bash +# Add the helm chart repository (when published) +helm repo add spark-history-mcp https://deepdiagnostix-ai.github.io/spark-history-server-mcp + +# Install the chart +helm install my-spark-mcp spark-history-mcp/spark-history-mcp +``` + +### Install with Custom Values + +```bash +# Create custom values file +cat > my-values.yaml << EOF +replicaCount: 3 + +config: + servers: + production: + default: true + url: "http://spark-history.production:18080" + +auth: + enabled: true + secret: + create: true + username: "spark_user" + password: "secure_password" + +ingress: + enabled: true + hosts: + - host: spark-mcp.company.com + paths: + - path: / + pathType: Prefix + +monitoring: + enabled: true + serviceMonitor: + enabled: true + +autoscaling: + enabled: true + minReplicas: 2 + maxReplicas: 10 +EOF + +# Install with custom values +helm install my-spark-mcp ./deploy/kubernetes/helm/spark-history-mcp/ -f my-values.yaml +``` + +## โš™๏ธ Configuration + +### Common Configuration Examples + +#### 1. Multiple Spark History Servers +```yaml +config: + servers: + production: + default: true + url: "http://prod-spark-history:18080" + staging: + url: "http://staging-spark-history:18080" + development: + url: "http://dev-spark-history:18080" +``` + +#### 2. Authentication Setup +```yaml +auth: + enabled: true + secret: + create: true + username: "spark_admin" + password: "super_secure_password" + token: "jwt_token_here" +``` + +#### 3. High Availability Setup +```yaml +replicaCount: 3 + +autoscaling: + enabled: true + minReplicas: 3 + maxReplicas: 20 + targetCPUUtilizationPercentage: 70 + +podDisruptionBudget: + enabled: true + minAvailable: 2 + +affinity: + podAntiAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - spark-history-mcp + topologyKey: kubernetes.io/hostname +``` + +#### 4. Ingress with TLS +```yaml +ingress: + enabled: true + className: "nginx" + annotations: + cert-manager.io/cluster-issuer: "letsencrypt-prod" + nginx.ingress.kubernetes.io/rate-limit-rps: "100" + hosts: + - host: spark-mcp.company.com + paths: + - path: / + pathType: Prefix + tls: + - secretName: spark-mcp-tls + hosts: + - spark-mcp.company.com +``` + +#### 5. Monitoring and Observability +```yaml +monitoring: + enabled: true + serviceMonitor: + enabled: true + namespace: "monitoring" + interval: 30s + labels: + release: prometheus + +podAnnotations: + prometheus.io/scrape: "true" + prometheus.io/port: "18888" + prometheus.io/path: "/metrics" +``` + +#### 6. Resource Management +```yaml +resources: + limits: + memory: 4Gi + cpu: 2000m + requests: + memory: 1Gi + cpu: 500m + +nodeSelector: + kubernetes.io/arch: amd64 + node-type: compute + +tolerations: + - key: "spark-workload" + operator: "Equal" + value: "true" + effect: "NoSchedule" +``` + +#### 7. Security Configuration +```yaml +podSecurityContext: + runAsNonRoot: true + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + seccompProfile: + type: RuntimeDefault + +securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + runAsNonRoot: true + capabilities: + drop: + - ALL + +networkPolicy: + enabled: true + policyTypes: + - Ingress + - Egress + ingress: + - from: + - namespaceSelector: + matchLabels: + name: ai-agents + ports: + - protocol: TCP + port: 18888 +``` + +### Environment-Specific Values + +#### Development Environment (`values-dev.yaml`) +```yaml +replicaCount: 1 + +config: + debug: true + servers: + local: + default: true + url: "http://spark-history-dev:18080" + +resources: + limits: + memory: 1Gi + cpu: 500m + requests: + memory: 256Mi + cpu: 100m + +ingress: + enabled: true + hosts: + - host: spark-mcp-dev.local + paths: + - path: / + pathType: Prefix +``` + +#### Production Environment (`values-prod.yaml`) +```yaml +replicaCount: 5 + +config: + debug: false + servers: + production: + default: true + url: "http://spark-history-prod:18080" + +auth: + enabled: true + secret: + create: false + name: "spark-mcp-prod-auth" + +autoscaling: + enabled: true + minReplicas: 3 + maxReplicas: 20 + +monitoring: + enabled: true + serviceMonitor: + enabled: true + namespace: "monitoring" + +networkPolicy: + enabled: true + +podDisruptionBudget: + enabled: true + minAvailable: 2 +``` + +## ๐Ÿ“Š Monitoring + +### Prometheus Integration + +When monitoring is enabled, the chart creates: +- ServiceMonitor for Prometheus scraping +- Grafana dashboard ConfigMaps +- Alert rules for common issues + +```bash +# Install with monitoring +helm install my-spark-mcp ./spark-history-mcp/ \ + --set monitoring.enabled=true \ + --set monitoring.serviceMonitor.enabled=true +``` + +### Custom Metrics + +Add custom environment variables for metrics: + +```yaml +env: + - name: ENABLE_CUSTOM_METRICS + value: "true" + - name: METRICS_INTERVAL + value: "30" +``` + +## ๐Ÿ”ง Troubleshooting + +### Common Issues + +#### 1. Pod Not Starting +```bash +# Check pod status +kubectl describe pod -l app.kubernetes.io/name=spark-history-mcp + +# Check logs +kubectl logs -l app.kubernetes.io/name=spark-history-mcp +``` + +#### 2. Configuration Issues +```bash +# Check rendered templates +helm template my-spark-mcp ./spark-history-mcp/ -f my-values.yaml + +# Verify ConfigMap +kubectl get configmap -l app.kubernetes.io/name=spark-history-mcp -o yaml +``` + +#### 3. Connectivity Issues +```bash +# Test service connectivity +kubectl run test-pod --rm -i --tty --image=curlimages/curl -- sh +curl http://spark-history-mcp:18888/health +``` + +### Debug Mode + +Enable debug mode for troubleshooting: + +```yaml +config: + debug: true + +# Add debug sidecar +sidecars: + - name: debug + image: busybox + command: ["sleep", "3600"] +``` + +## ๐Ÿ”„ Upgrades + +### Upgrade Chart + +```bash +# Upgrade to new version +helm upgrade my-spark-mcp ./spark-history-mcp/ -f my-values.yaml + +# Rollback if needed +helm rollback my-spark-mcp 1 +``` + +### Migration Guide + +When upgrading from v0.0.x to v0.1.x: + +1. **Backup configuration**: +```bash +kubectl get configmap -l app.kubernetes.io/name=spark-history-mcp -o yaml > backup-config.yaml +``` + +2. **Update values file** according to new schema +3. **Perform rolling upgrade**: +```bash +helm upgrade my-spark-mcp ./spark-history-mcp/ -f updated-values.yaml +``` + +## ๐Ÿงช Testing + +### Validate Installation + +```bash +# Run Helm tests +helm test my-spark-mcp + +# Manual validation +kubectl run test-mcp --rm -i --tty --image=curlimages/curl -- sh +curl -X POST http://spark-history-mcp:18888/tools \ + -H "Content-Type: application/json" \ + -d '{"tool": "list_applications", "parameters": {}}' +``` + +### Load Testing + +```yaml +# Add load testing job +apiVersion: batch/v1 +kind: Job +metadata: + name: spark-mcp-load-test +spec: + template: + spec: + containers: + - name: load-test + image: loadimpact/k6 + command: ["k6", "run", "/scripts/load-test.js"] + volumeMounts: + - name: scripts + mountPath: /scripts + volumes: + - name: scripts + configMap: + name: load-test-scripts +``` + +## ๐Ÿ“š Additional Resources + +- [Kubernetes Documentation](../README.md) - Detailed K8s deployment guide +- [Values Reference](values.yaml) - Complete values documentation +- [Templates](templates/) - Kubernetes manifest templates +- [Examples](examples/) - Real-world configuration examples + +## ๐Ÿค Contributing + +Contributions to the Helm chart are welcome: + +- Chart improvements and new features +- Documentation updates +- Testing enhancements +- Bug fixes + +See the main project [Contributing Guide](../../../README.md#-contributing) for details. \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/Chart.yaml b/deploy/kubernetes/helm/spark-history-mcp/Chart.yaml new file mode 100644 index 0000000..7bf7590 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/Chart.yaml @@ -0,0 +1,22 @@ +apiVersion: v2 +name: spark-history-mcp +description: A Helm chart for Spark History Server MCP +type: application +version: 0.1.0 +appVersion: "0.1.0" +keywords: + - spark + - mcp + - analytics + - performance + - history-server +home: https://github.com/DeepDiagnostix-AI/spark-history-server-mcp +sources: + - https://github.com/DeepDiagnostix-AI/spark-history-server-mcp +maintainers: + - name: Manabu McCloskey + email: Manabu.McCloskey@gmail.com + - name: Vara Bonthu + email: vara.bonthu@gmail.com +annotations: + category: Analytics \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/NOTES.txt b/deploy/kubernetes/helm/spark-history-mcp/templates/NOTES.txt new file mode 100644 index 0000000..5161672 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/NOTES.txt @@ -0,0 +1,47 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "spark-history-mcp.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "spark-history-mcp.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "spark-history-mcp.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "spark-history-mcp.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} + +2. Test the MCP server: + kubectl run test-mcp --rm -i --tty --image=curlimages/curl -- sh + # Inside the test pod: + curl -X POST http://{{ include "spark-history-mcp.fullname" . }}:{{ .Values.service.port }}/tools \ + -H "Content-Type: application/json" \ + -d '{"tool": "list_applications", "parameters": {}}' + +3. Check the status: + helm status {{ .Release.Name }} + kubectl get pods -l app.kubernetes.io/name={{ include "spark-history-mcp.name" . }} + +{{- if .Values.monitoring.enabled }} +4. Access monitoring: + - Prometheus metrics: http://{{ include "spark-history-mcp.fullname" . }}:{{ .Values.service.port }}/metrics +{{- end }} + +{{- if not .Values.config.servers }} +โš ๏ธ WARNING: No Spark History Servers configured. Please update your values.yaml to include: + config: + servers: + default: + default: true + url: "http://your-spark-history-server:18080" +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/_helpers.tpl b/deploy/kubernetes/helm/spark-history-mcp/templates/_helpers.tpl new file mode 100644 index 0000000..217a513 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/_helpers.tpl @@ -0,0 +1,121 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "spark-history-mcp.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "spark-history-mcp.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "spark-history-mcp.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "spark-history-mcp.labels" -}} +helm.sh/chart: {{ include "spark-history-mcp.chart" . }} +{{ include "spark-history-mcp.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "spark-history-mcp.selectorLabels" -}} +app.kubernetes.io/name: {{ include "spark-history-mcp.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "spark-history-mcp.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "spark-history-mcp.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Create the name of the config map +*/}} +{{- define "spark-history-mcp.configMapName" -}} +{{- printf "%s-config" (include "spark-history-mcp.fullname" .) }} +{{- end }} + +{{/* +Create the name of the secret +*/}} +{{- define "spark-history-mcp.secretName" -}} +{{- if .Values.auth.secret.create }} +{{- printf "%s-auth" (include "spark-history-mcp.fullname" .) }} +{{- else }} +{{- default (printf "%s-auth" (include "spark-history-mcp.fullname" .)) .Values.auth.secret.name }} +{{- end }} +{{- end }} + +{{/* +Create image name +*/}} +{{- define "spark-history-mcp.image" -}} +{{- printf "%s:%s" .Values.image.repository (.Values.image.tag | default .Chart.AppVersion) }} +{{- end }} + +{{/* +Create environment variables +*/}} +{{- define "spark-history-mcp.env" -}} +- name: MCP_PORT + value: {{ .Values.config.port | quote }} +- name: MCP_DEBUG + value: {{ .Values.config.debug | quote }} +{{- if .Values.auth.enabled }} +- name: SPARK_USERNAME + valueFrom: + secretKeyRef: + name: {{ include "spark-history-mcp.secretName" . }} + key: username + optional: true +- name: SPARK_PASSWORD + valueFrom: + secretKeyRef: + name: {{ include "spark-history-mcp.secretName" . }} + key: password + optional: true +- name: SPARK_TOKEN + valueFrom: + secretKeyRef: + name: {{ include "spark-history-mcp.secretName" . }} + key: token + optional: true +{{- end }} +{{- range .Values.env }} +- name: {{ .name }} + value: {{ .value | quote }} +{{- end }} +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/configmap.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/configmap.yaml new file mode 100644 index 0000000..40643d1 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/configmap.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "spark-history-mcp.configMapName" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} +data: + config.yaml: | + servers: + {{- range $name, $server := .Values.config.servers }} + {{ $name }}: + {{- if $server.default }} + default: {{ $server.default }} + {{- end }} + url: {{ $server.url | quote }} + {{- if $server.auth }} + auth: + {{- toYaml $server.auth | nindent 10 }} + {{- end }} + {{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/deployment.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/deployment.yaml new file mode 100644 index 0000000..8ce6312 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/deployment.yaml @@ -0,0 +1,115 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "spark-history-mcp.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "spark-history-mcp.selectorLabels" . | nindent 6 }} + {{- with .Values.strategy }} + strategy: + {{- toYaml . | nindent 4 }} + {{- end }} + template: + metadata: + annotations: + checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + {{- if .Values.auth.enabled }} + checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} + {{- end }} + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "spark-history-mcp.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- with .Values.initContainers }} + initContainers: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: {{ include "spark-history-mcp.image" . }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.config.port }} + protocol: TCP + env: + {{- include "spark-history-mcp.env" . | nindent 12 }} + {{- with .Values.envFrom }} + envFrom: + {{- toYaml . | nindent 12 }} + {{- end }} + volumeMounts: + - name: config + mountPath: /app/config.yaml + subPath: config.yaml + readOnly: true + {{- if .Values.persistence.enabled }} + - name: data + mountPath: {{ .Values.persistence.mountPath }} + {{- end }} + {{- with .Values.extraVolumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.startupProbe }} + startupProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- with .Values.sidecars }} + {{- toYaml . | nindent 8 }} + {{- end }} + volumes: + - name: config + configMap: + name: {{ include "spark-history-mcp.configMapName" . }} + defaultMode: 0644 + {{- if .Values.persistence.enabled }} + - name: data + persistentVolumeClaim: + claimName: {{ include "spark-history-mcp.fullname" . }} + {{- end }} + {{- with .Values.extraVolumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/hpa.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/hpa.yaml new file mode 100644 index 0000000..076f6b8 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/hpa.yaml @@ -0,0 +1,33 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "spark-history-mcp.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "spark-history-mcp.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/ingress.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/ingress.yaml new file mode 100644 index 0000000..6899071 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/ingress.yaml @@ -0,0 +1,60 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "spark-history-mcp.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class")) }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/pdb.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/pdb.yaml new file mode 100644 index 0000000..3a5d2cb --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/pdb.yaml @@ -0,0 +1,19 @@ +{{- if .Values.podDisruptionBudget.enabled }} +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: {{ include "spark-history-mcp.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} +spec: + {{- if .Values.podDisruptionBudget.minAvailable }} + minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} + {{- end }} + {{- if .Values.podDisruptionBudget.maxUnavailable }} + maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} + {{- end }} + selector: + matchLabels: + {{- include "spark-history-mcp.selectorLabels" . | nindent 6 }} +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/pvc.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/pvc.yaml new file mode 100644 index 0000000..54bc8f9 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/pvc.yaml @@ -0,0 +1,22 @@ +{{- if .Values.persistence.enabled }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "spark-history-mcp.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} +spec: + accessModes: + - {{ .Values.persistence.accessMode }} + resources: + requests: + storage: {{ .Values.persistence.size }} + {{- if .Values.persistence.storageClass }} + {{- if (eq "-" .Values.persistence.storageClass) }} + storageClassName: "" + {{- else }} + storageClassName: {{ .Values.persistence.storageClass }} + {{- end }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/secret.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/secret.yaml new file mode 100644 index 0000000..8743e76 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/secret.yaml @@ -0,0 +1,14 @@ +{{- if and .Values.auth.enabled .Values.auth.secret.create }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "spark-history-mcp.secretName" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} +type: Opaque +stringData: + username: {{ .Values.auth.secret.username | default "" | quote }} + password: {{ .Values.auth.secret.password | default "" | quote }} + token: {{ .Values.auth.secret.token | default "" | quote }} +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/service.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/service.yaml new file mode 100644 index 0000000..6ab3da0 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/service.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "spark-history-mcp.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} + {{- with .Values.service.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: {{ .Values.service.targetPort }} + protocol: TCP + name: http + selector: + {{- include "spark-history-mcp.selectorLabels" . | nindent 4 }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/serviceaccount.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/serviceaccount.yaml new file mode 100644 index 0000000..653ddfc --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/serviceaccount.yaml @@ -0,0 +1,14 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "spark-history-mcp.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: true +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/templates/servicemonitor.yaml b/deploy/kubernetes/helm/spark-history-mcp/templates/servicemonitor.yaml new file mode 100644 index 0000000..98c8e22 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/templates/servicemonitor.yaml @@ -0,0 +1,28 @@ +{{- if and .Values.monitoring.enabled .Values.monitoring.serviceMonitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "spark-history-mcp.fullname" . }} + namespace: {{ .Values.monitoring.serviceMonitor.namespace | default .Release.Namespace }} + labels: + {{- include "spark-history-mcp.labels" . | nindent 4 }} + {{- with .Values.monitoring.serviceMonitor.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.monitoring.serviceMonitor.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: + {{- include "spark-history-mcp.selectorLabels" . | nindent 6 }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + endpoints: + - port: http + interval: {{ .Values.monitoring.serviceMonitor.interval }} + path: {{ .Values.monitoring.serviceMonitor.path }} + scheme: http +{{- end }} \ No newline at end of file diff --git a/deploy/kubernetes/helm/spark-history-mcp/values.yaml b/deploy/kubernetes/helm/spark-history-mcp/values.yaml new file mode 100644 index 0000000..e3d7934 --- /dev/null +++ b/deploy/kubernetes/helm/spark-history-mcp/values.yaml @@ -0,0 +1,208 @@ +# Default values for spark-history-mcp +# This is a YAML-formatted file. + +# Image configuration +image: + repository: ghcr.io/deepdiagnostix-ai/spark-history-mcp + pullPolicy: IfNotPresent + tag: "v0.1.0" + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +# Pod replica count (used when autoscaling is disabled) +replicaCount: 2 + +# Service account configuration +serviceAccount: + create: true + annotations: {} + name: "" + +# Pod security context +podSecurityContext: + runAsNonRoot: true + runAsUser: 1000 + runAsGroup: 1000 + fsGroup: 1000 + +# Container security context +securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + capabilities: + drop: + - ALL + +# Service configuration +service: + type: ClusterIP + port: 18888 + targetPort: http + annotations: {} + +# Ingress configuration +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # cert-manager.io/cluster-issuer: "letsencrypt-prod" + hosts: + - host: spark-mcp.local + paths: + - path: / + pathType: Prefix + tls: [] + # - secretName: spark-mcp-tls + # hosts: + # - spark-mcp.local + +# Resource configuration +resources: + limits: + memory: 2Gi + cpu: 1000m + requests: + memory: 512Mi + cpu: 250m + +# Autoscaling configuration +autoscaling: + enabled: false + minReplicas: 2 + maxReplicas: 10 + targetCPUUtilizationPercentage: 70 + targetMemoryUtilizationPercentage: 80 + +# MCP server configuration +config: + port: 18888 + debug: false + + # Spark History Server configuration + servers: + default: + default: true + url: "http://spark-history-server:18080" + # Example: Additional servers + # staging: + # url: "http://staging-spark-history:18080" + # production: + # url: "http://prod-spark-history:18080" + +# Authentication configuration +auth: + enabled: false + secret: + create: false + name: "" + username: "" + password: "" + token: "" + +# Environment variables +env: [] + # - name: CUSTOM_VAR + # value: "custom_value" + +# Environment variables from secrets/configmaps +envFrom: [] + +# Health checks +livenessProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 3 + +readinessProbe: + httpGet: + path: /ready + port: http + initialDelaySeconds: 5 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 3 + +startupProbe: + httpGet: + path: /health + port: http + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + failureThreshold: 12 + +# Node selector +nodeSelector: {} + +# Tolerations +tolerations: [] + +# Affinity +affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - weight: 100 + podAffinityTerm: + labelSelector: + matchExpressions: + - key: app.kubernetes.io/name + operator: In + values: + - spark-history-mcp + topologyKey: kubernetes.io/hostname + +# Pod annotations +podAnnotations: {} + +# Pod labels +podLabels: {} + +# Monitoring configuration +monitoring: + enabled: false + serviceMonitor: + enabled: false + namespace: "" + interval: 30s + path: /metrics + labels: {} + annotations: {} + +# Persistence (for logs, if needed) +persistence: + enabled: false + storageClass: "" + accessMode: ReadWriteOnce + size: 1Gi + mountPath: /app/logs + +# Pod disruption budget +podDisruptionBudget: + enabled: false + minAvailable: 1 + +# Extra volumes +extraVolumes: [] + +# Extra volume mounts +extraVolumeMounts: [] + +# Init containers +initContainers: [] + +# Sidecar containers +sidecars: [] + +# Deployment strategy +strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 1 + maxSurge: 1 \ No newline at end of file diff --git a/examples/basic/events/eventlog_v2_spark-110be3a8424d4a2789cb88134418217b/appstatus_spark-110be3a8424d4a2789cb88134418217b b/examples/basic/events/eventlog_v2_spark-110be3a8424d4a2789cb88134418217b/appstatus_spark-110be3a8424d4a2789cb88134418217b new file mode 100644 index 0000000..e69de29 diff --git a/examples/basic/events/eventlog_v2_spark-110be3a8424d4a2789cb88134418217b/events_1_spark-110be3a8424d4a2789cb88134418217b b/examples/basic/events/eventlog_v2_spark-110be3a8424d4a2789cb88134418217b/events_1_spark-110be3a8424d4a2789cb88134418217b new file mode 100644 index 0000000..1b81567 --- /dev/null +++ b/examples/basic/events/eventlog_v2_spark-110be3a8424d4a2789cb88134418217b/events_1_spark-110be3a8424d4a2789cb88134418217b @@ -0,0 +1,132 @@ +{"Event":"SparkListenerLogStart","Spark Version":"3.5.3"} +{"Event":"SparkListenerResourceProfileAdded","Resource Profile Id":0,"Executor Resource Requests":{"memoryOverhead":{"Resource Name":"memoryOverhead","Amount":4096,"Discovery Script":"","Vendor":""},"cores":{"Resource Name":"cores","Amount":1,"Discovery Script":"","Vendor":""},"memory":{"Resource Name":"memory","Amount":4096,"Discovery Script":"","Vendor":""},"offHeap":{"Resource Name":"offHeap","Amount":0,"Discovery Script":"","Vendor":""}},"Task Resource Requests":{"cpus":{"Resource Name":"cpus","Amount":1.0}}} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"driver","Host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","Port":7079},"Maximum Memory":2388236697,"Timestamp":1750983887336,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerEnvironmentUpdate","JVM Information":{"Java Home":"/opt/java/openjdk","Java Version":"17.0.12 (Eclipse Adoptium)","Scala Version":"version 2.12.18"},"Spark Properties":{"spark.speculation":"false","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.submission.waitAppCompletion":"false","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.serializer.objectStreamReset":"100","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.namespace":"spark-team-a","spark.eventLog.enabled":"true","spark.executor.memoryOverhead":"4g","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.driver.port":"7078","spark.rdd.compress":"True","spark.kubernetes.executor.label.version":"3.5.3","spark.driver.blockManager.port":"7079","spark.hadoop.fs.s3a.path.style.access":"true","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.network.timeout":"2400","spark.hadoop.fs.s3a.connection.maximum":"200","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.scheduler.mode":"FIFO","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.memory":"4g","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.executor.instances":"4","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.submit.pyFiles":"","spark.app.submitTime":"1750983883971","spark.driver.memoryOverhead":"4g","spark.kubernetes.memoryOverheadFactor":"0.4","spark.driver.bindAddress":"100.64.122.12","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.kubernetes.resource.type":"python","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.app.startTime":"1750983884577","spark.executor.id":"driver","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.limit.cores":"3400m","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.driver.cores":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.driver.limit.cores":"1200m","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.executor.label.app":"taxi-trip","spark.ui.prometheus.enabled":"true","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.driver.label.queue":"root.test","spark.executor.memory":"4g","spark.local.dir":"/data","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.cores":"1","spark.executor.processTreeMetrics.enabled":"true","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.hadoop.fs.s3a.readahead.range":"256K","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.rolling.enabled":"true","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true"},"Hadoop Properties":{"hadoop.service.shutdown.timeout":"30s","yarn.resourcemanager.amlauncher.thread-count":"50","yarn.sharedcache.enabled":"false","fs.s3a.connection.maximum":"200","yarn.nodemanager.numa-awareness.numactl.cmd":"/usr/bin/numactl","fs.viewfs.overload.scheme.target.o3fs.impl":"org.apache.hadoop.fs.ozone.OzoneFileSystem","fs.s3a.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","yarn.app.mapreduce.am.scheduler.heartbeat.interval-ms":"1000","yarn.timeline-service.timeline-client.number-of-async-entities-to-merge":"10","hadoop.security.kms.client.timeout":"60","hadoop.http.authentication.kerberos.principal":"HTTP/_HOST@LOCALHOST","mapreduce.jobhistory.loadedjob.tasks.max":"-1","yarn.resourcemanager.application-tag-based-placement.enable":"false","mapreduce.framework.name":"local","yarn.sharedcache.uploader.server.thread-count":"50","yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds.min":"3600","yarn.nodemanager.linux-container-executor.nonsecure-mode.user-pattern":"^[_.A-Za-z0-9][-@_.A-Za-z0-9]{0,255}?[$]?$","tfile.fs.output.buffer.size":"262144","yarn.app.mapreduce.am.job.task.listener.thread-count":"30","yarn.nodemanager.node-attributes.resync-interval-ms":"120000","yarn.nodemanager.container-log-monitor.interval-ms":"60000","hadoop.security.groups.cache.background.reload.threads":"3","yarn.resourcemanager.webapp.cross-origin.enabled":"false","fs.AbstractFileSystem.ftp.impl":"org.apache.hadoop.fs.ftp.FtpFs","fs.viewfs.overload.scheme.target.gs.impl":"com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS","hadoop.registry.secure":"false","hadoop.shell.safely.delete.limit.num.files":"100","mapreduce.job.acl-view-job":" ","fs.s3a.retry.limit":"7","mapreduce.jobhistory.loadedjobs.cache.size":"5","mapreduce.outputcommitter.factory.scheme.abfs":"org.apache.hadoop.fs.azurebfs.commit.AzureManifestCommitterFactory","yarn.router.interceptor.user-thread-pool.allow-core-thread-time-out":"false","yarn.log-aggregation.enable-local-cleanup":"true","fs.viewfs.overload.scheme.target.s3a.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","yarn.nodemanager.amrmproxy.enabled":"false","yarn.timeline-service.entity-group-fs-store.with-user-dir":"false","mapreduce.shuffle.pathcache.expire-after-access-minutes":"5","mapreduce.input.fileinputformat.split.minsize":"0","yarn.resourcemanager.container.liveness-monitor.interval-ms":"600000","yarn.resourcemanager.client.thread-count":"50","io.seqfile.compress.blocksize":"1000000","yarn.nodemanager.runtime.linux.docker.allowed-container-runtimes":"runc","fs.viewfs.overload.scheme.target.http.impl":"org.apache.hadoop.fs.http.HttpFileSystem","yarn.nodemanager.least-load-policy-selector.fail-on-error":"true","yarn.resourcemanager.nodemanagers.heartbeat-interval-slowdown-factor":"1.0","yarn.sharedcache.checksum.algo.impl":"org.apache.hadoop.yarn.sharedcache.ChecksumSHA256Impl","yarn.router.submit.interval.time":"10ms","yarn.nodemanager.amrmproxy.interceptor-class.pipeline":"org.apache.hadoop.yarn.server.nodemanager.amrmproxy.DefaultRequestInterceptor","yarn.timeline-service.entity-group-fs-store.leveldb-cache-read-cache-size":"10485760","mapreduce.reduce.shuffle.fetch.retry.interval-ms":"1000","mapreduce.task.profile.maps":"0-2","yarn.scheduler.include-port-in-node-name":"false","yarn.nodemanager.admin-env":"MALLOC_ARENA_MAX=$MALLOC_ARENA_MAX","yarn.resourcemanager.node-removal-untracked.timeout-ms":"60000","yarn.router.interceptor.user-thread-pool.keep-alive-time":"30s","mapreduce.am.max-attempts":"2","hadoop.security.kms.client.failover.sleep.base.millis":"100","fs.s3a.connection.ttl":"5m","yarn.router.asc-interceptor-max-size":"1MB","mapreduce.jobhistory.webapp.https.address":"0.0.0.0:19890","yarn.node-labels.fs-store.impl.class":"org.apache.hadoop.yarn.nodelabels.FileSystemNodeLabelsStore","yarn.nodemanager.collector-service.address":"${yarn.nodemanager.hostname}:8048","fs.trash.checkpoint.interval":"0","yarn.nodemanager.opportunistic-containers-queue-policy":"BY_QUEUE_LEN","mapreduce.job.map.output.collector.class":"org.apache.hadoop.mapred.MapTask$MapOutputBuffer","yarn.federation.gpg.policy.generator.load-based.pending.maximum":"1000","yarn.resourcemanager.node-ip-cache.expiry-interval-secs":"-1","hadoop.http.authentication.signature.secret.file":"*********(redacted)","hadoop.jetty.logs.serve.aliases":"true","yarn.resourcemanager.placement-constraints.handler":"disabled","yarn.timeline-service.handler-thread-count":"10","yarn.resourcemanager.max-completed-applications":"1000","yarn.nodemanager.aux-services.manifest.enabled":"false","yarn.resourcemanager.system-metrics-publisher.enabled":"false","yarn.resourcemanager.placement-constraints.algorithm.class":"org.apache.hadoop.yarn.server.resourcemanager.scheduler.constraint.algorithm.DefaultPlacementAlgorithm","yarn.sharedcache.webapp.address":"0.0.0.0:8788","fs.s3a.select.input.csv.quote.escape.character":"\\\\","yarn.resourcemanager.delegation.token.renew-interval":"*********(redacted)","yarn.sharedcache.nm.uploader.replication.factor":"10","hadoop.security.groups.negative-cache.secs":"30","yarn.app.mapreduce.task.container.log.backups":"0","mapreduce.reduce.skip.proc-count.auto-incr":"true","yarn.dispatcher.print-thread-pool.core-pool-size":"1","hadoop.security.group.mapping.ldap.posix.attr.gid.name":"gidNumber","ipc.client.fallback-to-simple-auth-allowed":"false","yarn.nodemanager.resource.memory.enforced":"true","yarn.federation.gpg.policy.generator.interval-ms":"3600000","yarn.resourcemanager.system-metrics-publisher.timeline-server-v1.enable-batch":"false","yarn.client.failover-proxy-provider":"org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider","yarn.federation.state-store.sql.idle-time-out":"10m","yarn.timeline-service.http-authentication.simple.anonymous.allowed":"true","ha.health-monitor.check-interval.ms":"1000","io.compression.codec.zstd.level":"3","yarn.nodemanager.runtime.linux.runc.host-pid-namespace.allowed":"false","hadoop.metrics.jvm.use-thread-mxbean":"false","ipc.[port_number].faircallqueue.multiplexer.weights":"8,4,2,1","yarn.acl.reservation-enable":"false","yarn.resourcemanager.store.class":"org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore","ipc.[port_number].callqueue.overflow.trigger.failover":"false","yarn.app.mapreduce.am.hard-kill-timeout-ms":"10000","fs.s3a.etag.checksum.enabled":"false","yarn.nodemanager.container-metrics.enable":"true","mapreduce.outputcommitter.factory.scheme.gs":"org.apache.hadoop.mapreduce.lib.output.committer.manifest.ManifestCommitterFactory","ha.health-monitor.rpc.connect.max.retries":"1","yarn.timeline-service.client.fd-clean-interval-secs":"60","yarn.resourcemanager.nodemanagers.heartbeat-interval-scaling-enable":"false","yarn.resourcemanager.nodemanagers.heartbeat-interval-ms":"1000","hadoop.common.configuration.version":"3.0.0","yarn.nodemanager.remote-app-log-dir-suffix":"logs","yarn.nodemanager.container-log-monitor.dir-size-limit-bytes":"1000000000","yarn.nodemanager.windows-container.cpu-limit.enabled":"false","yarn.nodemanager.runtime.linux.docker.privileged-containers.allowed":"false","file.blocksize":"67108864","hadoop.http.idle_timeout.ms":"60000","hadoop.registry.zk.retry.ceiling.ms":"60000","ipc.client.connection.idle-scan-interval.ms":"10000","yarn.scheduler.configuration.leveldb-store.path":"${hadoop.tmp.dir}/yarn/system/confstore","yarn.sharedcache.store.in-memory.initial-delay-mins":"10","mapreduce.jobhistory.principal":"jhs/_HOST@REALM.TLD","mapreduce.map.skip.proc-count.auto-incr":"true","fs.s3a.committer.name":"file","mapreduce.task.profile.reduces":"0-2","hadoop.zk.num-retries":"1000","yarn.webapp.xfs-filter.enabled":"true","fs.viewfs.overload.scheme.target.hdfs.impl":"org.apache.hadoop.hdfs.DistributedFileSystem","seq.io.sort.mb":"100","fs.iostatistics.logging.level":"debug","yarn.scheduler.configuration.max.version":"100","yarn.timeline-service.webapp.https.address":"${yarn.timeline-service.hostname}:8190","yarn.resourcemanager.scheduler.address":"${yarn.resourcemanager.hostname}:8030","yarn.node-labels.enabled":"false","yarn.resourcemanager.webapp.ui-actions.enabled":"true","mapreduce.task.timeout":"600000","yarn.sharedcache.client-server.thread-count":"50","hadoop.security.groups.shell.command.timeout":"0s","hadoop.security.crypto.cipher.suite":"AES/CTR/NoPadding","yarn.nodemanager.elastic-memory-control.oom-handler":"org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.DefaultOOMHandler","yarn.resourcemanager.connect.max-wait.ms":"900000","fs.defaultFS":"file:///","yarn.minicluster.use-rpc":"false","fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","ipc.[port_number].decay-scheduler.decay-factor":"0.5","fs.har.impl.disable.cache":"true","yarn.webapp.ui2.enable":"false","io.compression.codec.bzip2.library":"system-native","yarn.webapp.filter-invalid-xml-chars":"false","yarn.nodemanager.runtime.linux.runc.layer-mounts-interval-secs":"600","fs.s3a.select.input.csv.record.delimiter":"\\n","fs.s3a.change.detection.source":"etag","ipc.[port_number].backoff.enable":"false","yarn.nodemanager.distributed-scheduling.enabled":"false","yarn.federation.cache.class":"org.apache.hadoop.yarn.server.federation.cache.FederationJCache","mapreduce.shuffle.connection-keep-alive.timeout":"5","yarn.resourcemanager.webapp.https.address":"${yarn.resourcemanager.hostname}:8090","yarn.webapp.enable-rest-app-submissions":"true","mapreduce.jobhistory.address":"0.0.0.0:10020","yarn.resourcemanager.nm-tokens.master-key-rolling-interval-secs":"*********(redacted)","yarn.is.minicluster":"false","yarn.nodemanager.address":"${yarn.nodemanager.hostname}:0","fs.abfss.impl":"org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem","fs.AbstractFileSystem.s3a.impl":"org.apache.hadoop.fs.s3a.S3A","ipc.server.metrics.update.runner.interval":"5000","mapreduce.task.combine.progress.records":"10000","yarn.resourcemanager.epoch.range":"0","yarn.resourcemanager.am.max-attempts":"2","yarn.nodemanager.runtime.linux.runc.image-toplevel-dir":"/runc-root","yarn.nodemanager.linux-container-executor.cgroups.hierarchy":"/hadoop-yarn","io.compression.codec.lz4.use.lz4hc":"false","fs.AbstractFileSystem.wasbs.impl":"org.apache.hadoop.fs.azure.Wasbs","yarn.timeline-service.entity-group-fs-store.cache-store-class":"org.apache.hadoop.yarn.server.timeline.MemoryTimelineStore","yarn.nodemanager.runtime.linux.runc.allowed-container-networks":"host,none,bridge","fs.ftp.transfer.mode":"BLOCK_TRANSFER_MODE","ipc.server.log.slow.rpc":"false","ipc.server.reuseaddr":"true","fs.ftp.timeout":"0","yarn.resourcemanager.node-labels.provider.fetch-interval-ms":"1800000","fs.AbstractFileSystem.o3fs.impl":"org.apache.hadoop.fs.ozone.OzFs","yarn.router.webapp.https.address":"0.0.0.0:8091","yarn.resourcemanager.enable-node-untracked-without-include-path":"false","yarn.nodemanager.webapp.cross-origin.enabled":"false","yarn.federation.gpg.subcluster.heartbeat.expiration-ms":"30m","fs.wasb.impl":"org.apache.hadoop.fs.azure.NativeAzureFileSystem","yarn.resourcemanager.auto-update.containers":"false","yarn.app.mapreduce.am.job.committer.cancel-timeout":"60000","yarn.scheduler.configuration.zk-store.parent-path":"/confstore","yarn.nodemanager.default-container-executor.log-dirs.permissions":"710","yarn.app.attempt.diagnostics.limit.kc":"64","fs.viewfs.overload.scheme.target.swebhdfs.impl":"org.apache.hadoop.hdfs.web.SWebHdfsFileSystem","yarn.client.failover-no-ha-proxy-provider":"org.apache.hadoop.yarn.client.DefaultNoHARMFailoverProxyProvider","fs.s3a.change.detection.mode":"server","ftp.bytes-per-checksum":"512","yarn.nodemanager.resource.memory-mb":"-1","fs.AbstractFileSystem.abfs.impl":"org.apache.hadoop.fs.azurebfs.Abfs","yarn.timeline-service.writer.flush-interval-seconds":"60","fs.s3a.fast.upload.active.blocks":"4","yarn.resourcemanager.submission-preprocessor.enabled":"false","hadoop.security.credential.clear-text-fallback":"true","yarn.nodemanager.collector-service.thread-count":"5","ipc.[port_number].scheduler.impl":"org.apache.hadoop.ipc.DefaultRpcScheduler","fs.azure.secure.mode":"false","mapreduce.jobhistory.joblist.cache.size":"20000","fs.ftp.host":"0.0.0.0","yarn.timeline-service.writer.async.queue.capacity":"100","yarn.router.webapp.appsinfo-cached-count":"100","yarn.resourcemanager.fs.state-store.num-retries":"0","yarn.resourcemanager.nodemanager-connect-retries":"10","yarn.nodemanager.log-aggregation.num-log-files-per-app":"30","hadoop.security.kms.client.encrypted.key.cache.low-watermark":"0.3f","fs.s3a.committer.magic.enabled":"true","yarn.timeline-service.client.max-retries":"30","dfs.ha.fencing.ssh.connect-timeout":"30000","yarn.log-aggregation-enable":"false","yarn.system-metrics-publisher.enabled":"false","mapreduce.reduce.markreset.buffer.percent":"0.0","fs.AbstractFileSystem.viewfs.impl":"org.apache.hadoop.fs.viewfs.ViewFs","yarn.resourcemanager.nodemanagers.heartbeat-interval-speedup-factor":"1.0","mapreduce.task.io.sort.factor":"10","yarn.nodemanager.amrmproxy.client.thread-count":"25","ha.failover-controller.new-active.rpc-timeout.ms":"60000","yarn.nodemanager.container-localizer.java.opts":"-Xmx256m","mapreduce.jobhistory.datestring.cache.size":"200000","mapreduce.job.acl-modify-job":" ","yarn.nodemanager.windows-container.memory-limit.enabled":"false","yarn.timeline-service.webapp.address":"${yarn.timeline-service.hostname}:8188","yarn.app.mapreduce.am.job.committer.commit-window":"10000","yarn.nodemanager.container-manager.thread-count":"20","yarn.minicluster.fixed.ports":"false","hadoop.tags.system":"YARN,HDFS,NAMENODE,DATANODE,REQUIRED,SECURITY,KERBEROS,PERFORMANCE,CLIENT\n ,SERVER,DEBUG,DEPRECATED,COMMON,OPTIONAL","yarn.cluster.max-application-priority":"0","yarn.timeline-service.ttl-enable":"true","mapreduce.jobhistory.recovery.store.fs.uri":"${hadoop.tmp.dir}/mapred/history/recoverystore","yarn.nodemanager.least-load-policy-selector.enabled":"false","yarn.nodemanager.least-load-policy-selector.pending-container.threshold":"10000","hadoop.caller.context.signature.max.size":"40","ipc.[port_number].decay-scheduler.backoff.responsetime.enable":"false","yarn.client.load.resource-types.from-server":"false","ha.zookeeper.session-timeout.ms":"10000","ipc.[port_number].decay-scheduler.metrics.top.user.count":"10","tfile.io.chunk.size":"1048576","yarn.dispatcher.print-events-info.threshold":"5000","yarn.nodemanager.log-container-debug-info-on-error.enabled":"false","mapreduce.job.speculative.slowtaskthreshold":"1.0","io.serializations":"org.apache.hadoop.io.serializer.WritableSerialization, org.apache.hadoop.io.serializer.avro.AvroSpecificSerialization, org.apache.hadoop.io.serializer.avro.AvroReflectSerialization","hadoop.security.kms.client.failover.sleep.max.millis":"2000","hadoop.security.group.mapping.ldap.directory.search.timeout":"10000","yarn.scheduler.configuration.store.max-logs":"1000","yarn.nodemanager.dispatcher.metric.enable":"false","yarn.nodemanager.node-attributes.provider.fetch-interval-ms":"600000","yarn.nodemanager.local-cache.max-files-per-directory":"8192","hadoop.http.cross-origin.enabled":"false","hadoop.zk.acl":"world:anyone:rwcda","yarn.nodemanager.runtime.linux.runc.image-tag-to-manifest-plugin.num-manifests-to-cache":"10","mapreduce.map.sort.spill.percent":"0.80","yarn.timeline-service.entity-group-fs-store.scan-interval-seconds":"60","yarn.node-attribute.fs-store.impl.class":"org.apache.hadoop.yarn.server.resourcemanager.nodelabels.FileSystemNodeAttributeStore","fs.s3a.retry.interval":"500ms","yarn.timeline-service.client.best-effort":"false","yarn.resourcemanager.webapp.delegation-token-auth-filter.enabled":"*********(redacted)","hadoop.security.group.mapping.ldap.posix.attr.uid.name":"uidNumber","fs.AbstractFileSystem.swebhdfs.impl":"org.apache.hadoop.fs.SWebHdfs","yarn.nodemanager.elastic-memory-control.timeout-sec":"5","fs.s3a.select.enabled":"true","mapreduce.ifile.readahead":"true","yarn.timeline-service.leveldb-timeline-store.ttl-interval-ms":"300000","yarn.timeline-service.reader.webapp.address":"${yarn.timeline-service.webapp.address}","yarn.resourcemanager.placement-constraints.algorithm.pool-size":"1","yarn.timeline-service.hbase.coprocessor.jar.hdfs.location":"/hbase/coprocessor/hadoop-yarn-server-timelineservice.jar","hadoop.security.kms.client.encrypted.key.cache.num.refill.threads":"2","yarn.webapp.ui1.tools.enable":"true","yarn.resourcemanager.scheduler.class":"org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler","yarn.app.mapreduce.am.command-opts":"-Xmx1024m","hadoop.http.sni.host.check.enabled":"false","mapreduce.cluster.local.dir":"${hadoop.tmp.dir}/mapred/local","io.mapfile.bloom.error.rate":"0.005","fs.client.resolve.topology.enabled":"false","yarn.nodemanager.runtime.linux.allowed-runtimes":"default","yarn.sharedcache.store.class":"org.apache.hadoop.yarn.server.sharedcachemanager.store.InMemorySCMStore","ha.failover-controller.graceful-fence.rpc-timeout.ms":"5000","ftp.replication":"3","fs.getspaceused.jitterMillis":"60000","hadoop.security.uid.cache.secs":"14400","mapreduce.job.maxtaskfailures.per.tracker":"3","ipc.scheduler.impl":"org.apache.hadoop.ipc.DefaultRpcScheduler","yarn.resourcemanager.zk-client-ssl.enabled":"false","io.skip.checksum.errors":"false","yarn.nodemanager.log.trigger.delete.by-size.enabled":"false","yarn.app.mapreduce.client-am.ipc.max-retries-on-timeouts":"3","yarn.timeline-service.webapp.xfs-filter.xframe-options":"SAMEORIGIN","fs.s3a.connection.timeout":"1200000","yarn.app.mapreduce.am.webapp.https.enabled":"false","mapreduce.job.max.split.locations":"15","yarn.resourcemanager.nm-container-queuing.max-queue-length":"15","yarn.resourcemanager.delegation-token.always-cancel":"*********(redacted)","hadoop.registry.zk.session.timeout.ms":"60000","yarn.federation.cache-ttl.secs":"300","mapreduce.jvm.system-properties-to-log":"os.name,os.version,java.home,java.runtime.version,java.vendor,java.version,java.vm.name,java.class.path,java.io.tmpdir,user.dir,user.name","yarn.resourcemanager.opportunistic-container-allocation.nodes-used":"10","yarn.timeline-service.entity-group-fs-store.active-dir":"/tmp/entity-file-history/active","mapreduce.shuffle.transfer.buffer.size":"131072","yarn.timeline-service.client.retry-interval-ms":"1000","yarn.timeline-service.flowname.max-size":"0","yarn.http.policy":"HTTP_ONLY","fs.s3a.socket.send.buffer":"8192","fs.AbstractFileSystem.abfss.impl":"org.apache.hadoop.fs.azurebfs.Abfss","yarn.sharedcache.uploader.server.address":"0.0.0.0:8046","yarn.resourcemanager.delegation-token.max-conf-size-bytes":"*********(redacted)","hadoop.http.authentication.token.validity":"*********(redacted)","mapreduce.shuffle.max.connections":"0","yarn.minicluster.yarn.nodemanager.resource.memory-mb":"4096","mapreduce.job.emit-timeline-data":"false","yarn.nodemanager.resource.system-reserved-memory-mb":"-1","hadoop.kerberos.min.seconds.before.relogin":"60","mapreduce.jobhistory.move.thread-count":"3","yarn.resourcemanager.application-tag-based-placement.force-lowercase":"true","yarn.resourcemanager.admin.client.thread-count":"1","yarn.dispatcher.drain-events.timeout":"300000","ipc.[port_number].decay-scheduler.backoff.responsetime.thresholds":"10s,20s,30s,40s","fs.s3a.buffer.dir":"${env.LOCAL_DIRS:-${hadoop.tmp.dir}}/s3a","hadoop.ssl.enabled.protocols":"TLSv1.2","mapreduce.jobhistory.admin.address":"0.0.0.0:10033","yarn.log-aggregation-status.time-out.ms":"600000","ipc.server.max.response.size":"1048576","fs.s3a.accesspoint.required":"false","mapreduce.shuffle.port":"13562","yarn.resourcemanager.max-log-aggregation-diagnostics-in-memory":"10","yarn.nodemanager.health-checker.interval-ms":"600000","yarn.resourcemanager.proxy.connection.timeout":"60000","yarn.router.clientrm.interceptor-class.pipeline":"org.apache.hadoop.yarn.server.router.clientrm.DefaultClientRequestInterceptor","yarn.resourcemanager.zk-appid-node.split-index":"0","ftp.blocksize":"67108864","yarn.nodemanager.runtime.linux.sandbox-mode.local-dirs.permissions":"read","yarn.router.rmadmin.interceptor-class.pipeline":"org.apache.hadoop.yarn.server.router.rmadmin.DefaultRMAdminRequestInterceptor","yarn.nodemanager.log-container-debug-info.enabled":"true","yarn.resourcemanager.activities-manager.app-activities.max-queue-length":"100","yarn.resourcemanager.application-https.policy":"NONE","yarn.client.max-cached-nodemanagers-proxies":"0","yarn.nodemanager.linux-container-executor.cgroups.delete-delay-ms":"20","yarn.nodemanager.delete.debug-delay-sec":"0","yarn.nodemanager.pmem-check-enabled":"true","yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"90.0","mapreduce.app-submission.cross-platform":"false","yarn.resourcemanager.work-preserving-recovery.scheduling-wait-ms":"10000","yarn.nodemanager.container-retry-minimum-interval-ms":"1000","yarn.federation.gpg.application.cleaner.contact.router.spec":"3,10,600000","hadoop.security.groups.cache.secs":"300","yarn.federation.enabled":"false","yarn.workflow-id.tag-prefix":"workflowid:","fs.azure.local.sas.key.mode":"false","yarn.federation.gpg.policy.generator.class":"org.apache.hadoop.yarn.server.globalpolicygenerator.policygenerator.NoOpGlobalPolicy","ipc.maximum.data.length":"134217728","fs.s3a.endpoint":"s3.amazonaws.com","mapreduce.shuffle.max.threads":"0","yarn.router.pipeline.cache-max-size":"25","yarn.resourcemanager.nm-container-queuing.load-comparator":"QUEUE_LENGTH","ipc.server.tcpnodelay":"true","yarn.resourcemanager.resource-tracker.nm.ip-hostname-check":"false","hadoop.security.authorization":"false","mapreduce.job.complete.cancel.delegation.tokens":"*********(redacted)","fs.s3a.paging.maximum":"5000","nfs.exports.allowed.hosts":"* rw","yarn.nodemanager.amrmproxy.ha.enable":"false","yarn.router.webapp.appsinfo-enabled":"false","fs.AbstractFileSystem.gs.impl":"com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS","mapreduce.jobhistory.http.policy":"HTTP_ONLY","yarn.sharedcache.store.in-memory.check-period-mins":"720","hadoop.security.group.mapping.ldap.ssl":"false","fs.s3a.downgrade.syncable.exceptions":"true","yarn.client.application-client-protocol.poll-interval-ms":"200","yarn.scheduler.configuration.leveldb-store.compaction-interval-secs":"86400","yarn.timeline-service.writer.class":"org.apache.hadoop.yarn.server.timelineservice.storage.HBaseTimelineWriterImpl","ha.zookeeper.parent-znode":"/hadoop-ha","yarn.resourcemanager.submission-preprocessor.file-refresh-interval-ms":"60000","yarn.nodemanager.log-aggregation.policy.class":"org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AllContainerLogAggregationPolicy","mapreduce.reduce.shuffle.merge.percent":"0.66","hadoop.security.group.mapping.ldap.search.filter.group":"(objectClass=group)","yarn.resourcemanager.placement-constraints.scheduler.pool-size":"1","yarn.resourcemanager.activities-manager.cleanup-interval-ms":"5000","yarn.nodemanager.resourcemanager.minimum.version":"NONE","mapreduce.job.speculative.speculative-cap-running-tasks":"0.1","yarn.admin.acl":"*","ipc.[port_number].identity-provider.impl":"org.apache.hadoop.ipc.UserIdentityProvider","yarn.nodemanager.recovery.supervised":"false","yarn.sharedcache.admin.thread-count":"1","yarn.resourcemanager.ha.automatic-failover.enabled":"true","yarn.nodemanager.container-log-monitor.total-size-limit-bytes":"10000000000","mapreduce.reduce.skip.maxgroups":"0","mapreduce.reduce.shuffle.connect.timeout":"180000","yarn.federation.amrmproxy.register.uam.retry-count":"3","yarn.nodemanager.health-checker.scripts":"script","yarn.resourcemanager.address":"${yarn.resourcemanager.hostname}:8032","ipc.client.ping":"true","mapreduce.task.local-fs.write-limit.bytes":"-1","fs.adl.oauth2.access.token.provider.type":"*********(redacted)","mapreduce.shuffle.ssl.file.buffer.size":"65536","yarn.resourcemanager.ha.automatic-failover.embedded":"true","yarn.nodemanager.resource-plugins.gpu.docker-plugin":"nvidia-docker-v1","fs.s3a.multipart.purge":"false","yarn.scheduler.configuration.store.class":"file","yarn.resourcemanager.nm-container-queuing.queue-limit-stdev":"1.0f","mapreduce.job.end-notification.max.attempts":"5","mapreduce.output.fileoutputformat.compress.codec":"org.apache.hadoop.io.compress.DefaultCodec","yarn.nodemanager.container-monitor.procfs-tree.smaps-based-rss.enabled":"false","ipc.client.bind.wildcard.addr":"false","yarn.resourcemanager.webapp.rest-csrf.enabled":"false","ha.health-monitor.connect-retry-interval.ms":"1000","yarn.nodemanager.keytab":"/etc/krb5.keytab","yarn.federation.cache-entity.nums":"1000","hadoop.security.resolver.impl":"org.apache.hadoop.net.DNSDomainNameResolver","mapreduce.jobhistory.keytab":"/etc/security/keytab/jhs.service.keytab","fs.s3a.threads.max":"96","yarn.nodemanager.runtime.linux.docker.image-update":"false","mapreduce.reduce.shuffle.input.buffer.percent":"0.70","fs.viewfs.overload.scheme.target.abfss.impl":"org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem","yarn.dispatcher.cpu-monitor.samples-per-min":"60","hadoop.security.token.service.use_ip":"*********(redacted)","yarn.nodemanager.runtime.linux.docker.allowed-container-networks":"host,none,bridge","yarn.nodemanager.node-labels.resync-interval-ms":"120000","hadoop.tmp.dir":"/tmp/hadoop-${user.name}","mapreduce.job.maps":"2","mapreduce.jobhistory.webapp.rest-csrf.custom-header":"X-XSRF-Header","mapreduce.job.end-notification.max.retry.interval":"5000","yarn.log-aggregation.retain-check-interval-seconds":"-1","yarn.resourcemanager.resource-tracker.client.thread-count":"50","yarn.nodemanager.containers-launcher.class":"org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainersLauncher","yarn.rm.system-metrics-publisher.emit-container-events":"false","yarn.timeline-service.leveldb-timeline-store.start-time-read-cache-size":"10000","yarn.resourcemanager.ha.automatic-failover.zk-base-path":"/yarn-leader-election","io.seqfile.local.dir":"${hadoop.tmp.dir}/io/local","fs.AbstractFileSystem.wasb.impl":"org.apache.hadoop.fs.azure.Wasb","mapreduce.client.submit.file.replication":"10","io.compression.codec.lzo.buffersize":"65536","mapreduce.jobhistory.minicluster.fixed.ports":"false","fs.s3a.multipart.threshold":"128M","yarn.resourcemanager.webapp.xfs-filter.xframe-options":"SAMEORIGIN","ipc.callqueue.impl":"java.util.concurrent.LinkedBlockingQueue","mapreduce.jobhistory.done-dir":"${yarn.app.mapreduce.am.staging-dir}/history/done","ipc.server.purge.interval":"15","ipc.client.idlethreshold":"4000","yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage":"false","mapreduce.reduce.input.buffer.percent":"0.0","yarn.nodemanager.runtime.linux.docker.userremapping-gid-threshold":"1","yarn.nodemanager.webapp.rest-csrf.enabled":"false","fs.ftp.host.port":"21","ipc.ping.interval":"60000","yarn.resourcemanager.history-writer.multi-threaded-dispatcher.pool-size":"10","yarn.router.interceptor.user-thread-pool.maximum-pool-size":"5","yarn.resourcemanager.admin.address":"${yarn.resourcemanager.hostname}:8033","file.client-write-packet-size":"65536","ipc.client.kill.max":"10","mapreduce.reduce.speculative":"true","hadoop.security.key.default.bitlength":"128","mapreduce.job.reducer.unconditional-preempt.delay.sec":"300","yarn.nodemanager.disk-health-checker.interval-ms":"120000","yarn.nodemanager.log.deletion-threads-count":"4","fs.s3a.committer.abort.pending.uploads":"true","yarn.webapp.filter-entity-list-by-user":"false","yarn.resourcemanager.activities-manager.app-activities.ttl-ms":"600000","ipc.client.connection.maxidletime":"10000","mapreduce.task.io.sort.mb":"100","yarn.nodemanager.localizer.client.thread-count":"5","yarn.federation.gpg.policy.generator.load-based.edit.maximum":"3","io.erasurecode.codec.rs.rawcoders":"rs_native,rs_java","io.erasurecode.codec.rs-legacy.rawcoders":"rs-legacy_java","yarn.sharedcache.admin.address":"0.0.0.0:8047","yarn.resourcemanager.placement-constraints.algorithm.iterator":"SERIAL","yarn.nodemanager.localizer.cache.cleanup.interval-ms":"600000","hadoop.security.crypto.codec.classes.aes.ctr.nopadding":"org.apache.hadoop.crypto.OpensslAesCtrCryptoCodec, org.apache.hadoop.crypto.JceAesCtrCryptoCodec","mapreduce.job.cache.limit.max-resources-mb":"0","fs.s3a.connection.ssl.enabled":"true","yarn.nodemanager.process-kill-wait.ms":"5000","mapreduce.job.hdfs-servers":"${fs.defaultFS}","yarn.apps.cache.size":"1000","yarn.app.mapreduce.am.webapp.https.client.auth":"false","hadoop.workaround.non.threadsafe.getpwuid":"true","fs.df.interval":"60000","ipc.[port_number].decay-scheduler.thresholds":"13,25,50","yarn.federation.gpg.webapp.https.address":"0.0.0.0:8070","ipc.server.read.threadpool.size":"1","fs.s3a.audit.enabled":"true","fs.s3a.multiobjectdelete.enable":"true","yarn.sharedcache.cleaner.resource-sleep-ms":"0","ipc.server.read.connection-queue.size":"100","yarn.nodemanager.disk-health-checker.min-healthy-disks":"0.25","hadoop.shell.missing.defaultFs.warning":"false","io.file.buffer.size":"65536","fs.viewfs.overload.scheme.target.wasb.impl":"org.apache.hadoop.fs.azure.NativeAzureFileSystem","hadoop.security.group.mapping.ldap.search.attr.member":"member","hadoop.security.random.device.file.path":"/dev/urandom","ipc.cost-provider.impl":"org.apache.hadoop.ipc.DefaultCostProvider","hadoop.security.sensitive-config-keys":"*********(redacted)","fs.viewfs.overload.scheme.target.file.impl":"org.apache.hadoop.fs.LocalFileSystem","yarn.federation.gpg.application.cleaner.interval-ms":"-1s","hadoop.rpc.socket.factory.class.default":"org.apache.hadoop.net.StandardSocketFactory","yarn.intermediate-data-encryption.enable":"false","yarn.nodemanager.least-load-policy-selector.use-active-core":"false","yarn.resourcemanager.connect.retry-interval.ms":"30000","yarn.nodemanager.container.stderr.pattern":"{*stderr*,*STDERR*}","yarn.apps.cache.expire":"30s","ipc.server.log.slow.rpc.threshold.ms":"0","yarn.scheduler.minimum-allocation-mb":"1024","yarn.app.mapreduce.am.staging-dir":"/tmp/hadoop-yarn/staging","mapreduce.reduce.shuffle.read.timeout":"180000","hadoop.http.cross-origin.max-age":"1800","io.erasurecode.codec.xor.rawcoders":"xor_native,xor_java","fs.s3a.connection.establish.timeout":"30s","mapreduce.job.running.map.limit":"0","yarn.minicluster.control-resource-monitoring":"false","hadoop.ssl.require.client.cert":"false","hadoop.kerberos.kinit.command":"kinit","yarn.apps.cache.enable":"false","yarn.federation.non-ha.enabled":"false","yarn.federation.state-store.class":"org.apache.hadoop.yarn.server.federation.store.impl.MemoryFederationStateStore","yarn.federation.state-store.heartbeat.initial-delay":"30s","mapreduce.reduce.log.level":"INFO","hadoop.security.dns.log-slow-lookups.threshold.ms":"1000","mapreduce.job.ubertask.enable":"false","adl.http.timeout":"-1","yarn.resourcemanager.placement-constraints.retry-attempts":"3","hadoop.caller.context.enabled":"false","hadoop.security.group.mapping.ldap.num.attempts":"3","yarn.nodemanager.vmem-pmem-ratio":"2.1","hadoop.rpc.protection":"authentication","ha.health-monitor.rpc-timeout.ms":"45000","yarn.nodemanager.remote-app-log-dir":"/tmp/logs","hadoop.zk.timeout-ms":"10000","yarn.nodemanager.resource.pcores-vcores-multiplier":"1.0","yarn.nodemanager.runtime.linux.sandbox-mode":"disabled","ipc.client.connect.max.retries.on.sasl":"5","yarn.app.mapreduce.am.containerlauncher.threadpool-initial-size":"10","fs.viewfs.overload.scheme.target.webhdfs.impl":"org.apache.hadoop.hdfs.web.WebHdfsFileSystem","yarn.router.webapp.proxy.enable":"true","fs.s3a.committer.threads":"8","hadoop.zk.retry-interval-ms":"1000","hadoop.http.metrics.enabled":"true","hadoop.security.crypto.buffer.size":"8192","yarn.nodemanager.node-labels.provider.fetch-interval-ms":"600000","mapreduce.jobhistory.recovery.store.leveldb.path":"${hadoop.tmp.dir}/mapred/history/recoverystore","yarn.client.failover-retries-on-socket-timeouts":"0","fs.s3a.ssl.channel.mode":"default_jsse","yarn.nodemanager.resource.memory.enabled":"false","fs.azure.authorization.caching.enable":"true","hadoop.security.instrumentation.requires.admin":"false","yarn.nodemanager.delete.thread-count":"4","mapreduce.job.finish-when-all-reducers-done":"true","hadoop.registry.jaas.context":"Client","yarn.resourcemanager.delegation.token.remove-scan-interval":"*********(redacted)","yarn.timeline-service.leveldb-timeline-store.path":"${hadoop.tmp.dir}/yarn/timeline","io.map.index.interval":"128","yarn.resourcemanager.nm-container-queuing.max-queue-wait-time-ms":"100","fs.abfs.impl":"org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem","mapreduce.job.counters.max":"120","ipc.identity-provider.impl":"org.apache.hadoop.ipc.UserIdentityProvider","mapreduce.jobhistory.webapp.rest-csrf.enabled":"false","yarn.timeline-service.store-class":"org.apache.hadoop.yarn.server.timeline.LeveldbTimelineStore","mapreduce.jobhistory.move.interval-ms":"180000","yarn.federation.amrmproxy.register.uam.interval":"100ms","yarn.resourcemanager.node-labels.provider.update-newly-registered-nodes-interval-ms":"30000","fs.s3a.change.detection.version.required":"true","yarn.nodemanager.localizer.fetch.thread-count":"4","yarn.resourcemanager.scheduler.client.thread-count":"50","hadoop.ssl.hostname.verifier":"DEFAULT","yarn.timeline-service.leveldb-state-store.path":"${hadoop.tmp.dir}/yarn/timeline","mapreduce.job.classloader":"false","mapreduce.task.profile.map.params":"${mapreduce.task.profile.params}","ipc.client.connect.timeout":"20000","hadoop.security.auth_to_local.mechanism":"hadoop","yarn.timeline-service.app-collector.linger-period.ms":"60000","yarn.fs-store.file.replication":"0","yarn.nm.liveness-monitor.expiry-interval-ms":"600000","yarn.resourcemanager.reservation-system.planfollower.time-step":"1000","yarn.resourcemanager.proxy.timeout.enabled":"true","yarn.resourcemanager.activities-manager.scheduler-activities.ttl-ms":"600000","yarn.nodemanager.runtime.linux.docker.enable-userremapping.allowed":"true","yarn.webapp.api-service.enable":"false","yarn.nodemanager.recovery.enabled":"false","mapreduce.job.end-notification.retry.interval":"1000","fs.du.interval":"600000","fs.ftp.impl":"org.apache.hadoop.fs.ftp.FTPFileSystem","yarn.nodemanager.container.stderr.tail.bytes":"4096","yarn.nodemanager.disk-health-checker.disk-free-space-threshold.enabled":"true","io.compression.codec.snappy.buffersize":"262144","hadoop.security.group.mapping.ldap.read.timeout.ms":"60000","hadoop.security.groups.cache.warn.after.ms":"5000","file.bytes-per-checksum":"512","mapreduce.outputcommitter.factory.scheme.s3a":"org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory","io.erasurecode.codec.native.enabled":"true","hadoop.security.groups.cache.background.reload":"false","yarn.nodemanager.container-monitor.enabled":"true","yarn.nodemanager.elastic-memory-control.enabled":"false","fs.AbstractFileSystem.ofs.impl":"org.apache.hadoop.fs.ozone.RootedOzFs","net.topology.script.number.args":"100","mapreduce.task.merge.progress.records":"10000","yarn.nodemanager.localizer.address":"${yarn.nodemanager.hostname}:8040","yarn.timeline-service.keytab":"/etc/krb5.keytab","mapreduce.reduce.shuffle.fetch.retry.timeout-ms":"30000","yarn.resourcemanager.rm.container-allocation.expiry-interval-ms":"600000","yarn.nodemanager.container-executor.exit-code-file.timeout-ms":"2000","mapreduce.fileoutputcommitter.algorithm.version":"1","yarn.router.webapp.cross-origin.enabled":"false","yarn.resourcemanager.work-preserving-recovery.enabled":"true","mapreduce.map.skip.maxrecords":"0","yarn.sharedcache.root-dir":"/sharedcache","fs.s3a.retry.throttle.limit":"20","fs.trash.clean.trashroot.enable":"false","hadoop.http.authentication.type":"simple","fs.viewfs.overload.scheme.target.oss.impl":"org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem","yarn.federation.gpg.policy.generator.interval":"1h","mapreduce.job.cache.limit.max-resources":"0","mapreduce.task.userlog.limit.kb":"0","ipc.[port_number].weighted-cost.handler":"1","yarn.resourcemanager.scheduler.monitor.enable":"false","ipc.client.connect.max.retries":"10","hadoop.registry.zk.retry.times":"5","yarn.nodemanager.resource-monitor.interval-ms":"3000","yarn.nodemanager.resource-plugins.gpu.allowed-gpu-devices":"auto","mapreduce.job.sharedcache.mode":"disabled","yarn.federation.state-store.sql.minimum-idle":"1","yarn.nodemanager.webapp.rest-csrf.custom-header":"X-XSRF-Header","mapreduce.shuffle.listen.queue.size":"128","yarn.scheduler.configuration.mutation.acl-policy.class":"org.apache.hadoop.yarn.server.resourcemanager.scheduler.DefaultConfigurationMutationACLPolicy","yarn.federation.gpg.subcluster.cleaner.interval-ms":"-1ms","mapreduce.map.cpu.vcores":"1","yarn.log-aggregation.file-formats":"TFile","yarn.timeline-service.client.fd-retain-secs":"300","fs.s3a.select.output.csv.field.delimiter":",","yarn.nodemanager.health-checker.timeout-ms":"1200000","hadoop.user.group.static.mapping.overrides":"dr.who=;","fs.azure.sas.expiry.period":"90d","fs.s3a.select.output.csv.record.delimiter":"\\n","mapreduce.jobhistory.recovery.store.class":"org.apache.hadoop.mapreduce.v2.hs.HistoryServerFileSystemStateStoreService","fs.viewfs.overload.scheme.target.https.impl":"org.apache.hadoop.fs.http.HttpsFileSystem","yarn.federation.gpg.policy.generator.readonly":"false","yarn.router.deregister.subcluster.enabled":"true","yarn.resourcemanager.fail-fast":"${yarn.fail-fast}","yarn.resourcemanager.proxy-user-privileges.enabled":"false","yarn.router.webapp.interceptor-class.pipeline":"org.apache.hadoop.yarn.server.router.webapp.DefaultRequestInterceptorREST","yarn.nodemanager.resource.memory.cgroups.soft-limit-percentage":"90.0","mapreduce.job.reducer.preempt.delay.sec":"0","hadoop.util.hash.type":"murmur","yarn.nodemanager.disk-validator":"basic","yarn.app.mapreduce.client.job.max-retries":"3","fs.viewfs.overload.scheme.target.ftp.impl":"org.apache.hadoop.fs.ftp.FTPFileSystem","mapreduce.reduce.shuffle.retry-delay.max.ms":"60000","hadoop.security.group.mapping.ldap.connection.timeout.ms":"60000","mapreduce.task.profile.params":"-agentlib:hprof=cpu=samples,heap=sites,force=n,thread=y,verbose=n,file=%s","yarn.app.mapreduce.shuffle.log.backups":"0","yarn.nodemanager.container-diagnostics-maximum-size":"10000","hadoop.registry.zk.retry.interval.ms":"1000","yarn.federation.gpg.scheduled.executor.threads":"10","yarn.nodemanager.linux-container-executor.cgroups.delete-timeout-ms":"1000","yarn.nodemanager.aux-services.%s.classpath":"NONE","fs.AbstractFileSystem.file.impl":"org.apache.hadoop.fs.local.LocalFs","yarn.federation.gpg.webapp.connect-timeout":"30s","yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds":"-1","mapreduce.jobhistory.cleaner.interval-ms":"86400000","hadoop.registry.zk.quorum":"localhost:2181","yarn.nodemanager.runtime.linux.runc.allowed-container-runtimes":"runc","mapreduce.output.fileoutputformat.compress":"false","yarn.resourcemanager.am-rm-tokens.master-key-rolling-interval-secs":"*********(redacted)","fs.s3a.assumed.role.session.duration":"30m","hadoop.security.group.mapping.ldap.conversion.rule":"none","hadoop.ssl.server.conf":"ssl-server.xml","fs.s3a.retry.throttle.interval":"100ms","yarn.router.subcluster.cleaner.interval.time":"60s","yarn.nodemanager.log.delete.threshold":"100g","seq.io.sort.factor":"100","fs.viewfs.overload.scheme.target.ofs.impl":"org.apache.hadoop.fs.ozone.RootedOzoneFileSystem","yarn.sharedcache.cleaner.initial-delay-mins":"10","mapreduce.client.completion.pollinterval":"5000","hadoop.ssl.keystores.factory.class":"org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory","yarn.resourcemanager.nodestore-rootdir.retry-interval-ms":"1000","yarn.app.mapreduce.am.resource.cpu-vcores":"1","yarn.timeline-service.enabled":"false","yarn.nodemanager.runtime.linux.docker.capabilities":"CHOWN,DAC_OVERRIDE,FSETID,FOWNER,MKNOD,NET_RAW,SETGID,SETUID,SETFCAP,SETPCAP,NET_BIND_SERVICE,SYS_CHROOT,KILL,AUDIT_WRITE","yarn.acl.enable":"false","yarn.timeline-service.entity-group-fs-store.done-dir":"/tmp/entity-file-history/done/","hadoop.security.group.mapping.ldap.num.attempts.before.failover":"3","mapreduce.task.profile":"false","yarn.federation.gpg.application.cleaner.class":"org.apache.hadoop.yarn.server.globalpolicygenerator.applicationcleaner.DefaultApplicationCleaner","hadoop.prometheus.endpoint.enabled":"false","yarn.resourcemanager.fs.state-store.uri":"${hadoop.tmp.dir}/yarn/system/rmstore","mapreduce.jobhistory.always-scan-user-dir":"false","yarn.nodemanager.opportunistic-containers-use-pause-for-preemption":"false","yarn.nodemanager.linux-container-executor.nonsecure-mode.local-user":"nobody","yarn.timeline-service.reader.class":"org.apache.hadoop.yarn.server.timelineservice.storage.HBaseTimelineReaderImpl","yarn.resourcemanager.configuration.provider-class":"org.apache.hadoop.yarn.LocalConfigurationProvider","yarn.nodemanager.runtime.linux.docker.userremapping-uid-threshold":"1","yarn.resourcemanager.configuration.file-system-based-store":"/yarn/conf","fs.creation.parallel.count":"64","mapreduce.job.cache.limit.max-single-resource-mb":"0","yarn.nodemanager.runtime.linux.docker.stop.grace-period":"10","yarn.federation.state-store.sql.max-life-time":"30m","yarn.resourcemanager.resource-profiles.source-file":"resource-profiles.json","mapreduce.job.dfs.storage.capacity.kill-limit-exceed":"false","yarn.nodemanager.resource.percentage-physical-cpu-limit":"100","mapreduce.jobhistory.client.thread-count":"10","tfile.fs.input.buffer.size":"262144","mapreduce.client.progressmonitor.pollinterval":"1000","yarn.nodemanager.log-dirs":"${yarn.log.dir}/userlogs","yarn.resourcemanager.opportunistic.max.container-allocation.per.am.heartbeat":"-1","fs.automatic.close":"true","yarn.resourcemanager.delegation-token-renewer.thread-retry-interval":"*********(redacted)","yarn.resourcemanager.node-labels.am.allow-non-exclusive-allocation":"false","fs.s3a.select.input.csv.quote.character":"\"","yarn.nodemanager.hostname":"0.0.0.0","ipc.[port_number].cost-provider.impl":"org.apache.hadoop.ipc.DefaultCostProvider","yarn.nodemanager.runtime.linux.runc.manifest-to-resources-plugin":"org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.runtime.runc.HdfsManifestToResourcesPlugin","yarn.nodemanager.remote-app-log-dir-include-older":"true","yarn.nodemanager.resource.memory.cgroups.swappiness":"0","ftp.stream-buffer-size":"4096","yarn.fail-fast":"false","yarn.nodemanager.runtime.linux.runc.layer-mounts-to-keep":"100","yarn.timeline-service.app-aggregation-interval-secs":"15","hadoop.security.group.mapping.ldap.search.filter.user":"(&(objectClass=user)(sAMAccountName={0}))","yarn.resourcemanager.nodestore-rootdir.num-retries":"1000","ipc.[port_number].weighted-cost.lockshared":"10","yarn.nodemanager.container-localizer.log.level":"INFO","yarn.timeline-service.address":"${yarn.timeline-service.hostname}:10200","mapreduce.job.ubertask.maxmaps":"9","fs.s3a.threads.keepalivetime":"60s","mapreduce.jobhistory.webapp.rest-csrf.methods-to-ignore":"GET,OPTIONS,HEAD","mapreduce.task.files.preserve.failedtasks":"false","yarn.app.mapreduce.client.job.retry-interval":"2000","ha.failover-controller.graceful-fence.connection.retries":"1","fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","fs.s3a.select.output.csv.quote.escape.character":"\\\\","yarn.dispatcher.print-thread-pool.maximum-pool-size":"5","yarn.resourcemanager.delegation.token.max-lifetime":"*********(redacted)","hadoop.kerberos.keytab.login.autorenewal.enabled":"false","yarn.timeline-service.client.drain-entities.timeout.ms":"2000","hadoop.caller.context.separator":",","yarn.nodemanager.resource-plugins.fpga.vendor-plugin.class":"org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.fpga.IntelFpgaOpenclPlugin","yarn.resourcemanager.nodemanagers.heartbeat-interval-min-ms":"1000","yarn.timeline-service.entity-group-fs-store.summary-store":"org.apache.hadoop.yarn.server.timeline.LeveldbTimelineStore","mapreduce.reduce.cpu.vcores":"1","mapreduce.job.encrypted-intermediate-data.buffer.kb":"128","hadoop.security.crypto.codec.classes.sm4.ctr.nopadding":"org.apache.hadoop.crypto.OpensslSm4CtrCryptoCodec, org.apache.hadoop.crypto.JceSm4CtrCryptoCodec","yarn.federation.gpg.webapp.read-timeout":"30s","fs.client.resolve.remote.symlinks":"true","yarn.nodemanager.webapp.https.address":"0.0.0.0:8044","hadoop.http.cross-origin.allowed-origins":"*","mapreduce.job.encrypted-intermediate-data":"false","yarn.nodemanager.disk-health-checker.disk-utilization-threshold.enabled":"true","fs.s3a.executor.capacity":"16","yarn.timeline-service.entity-group-fs-store.retain-seconds":"604800","yarn.resourcemanager.metrics.runtime.buckets":"60,300,1440","yarn.timeline-service.generic-application-history.max-applications":"10000","yarn.nodemanager.local-dirs":"${hadoop.tmp.dir}/nm-local-dir","mapreduce.shuffle.connection-keep-alive.enable":"false","yarn.node-labels.configuration-type":"centralized","fs.s3a.path.style.access":"true","yarn.nodemanager.aux-services.mapreduce_shuffle.class":"org.apache.hadoop.mapred.ShuffleHandler","yarn.sharedcache.store.in-memory.staleness-period-mins":"10080","fs.adl.impl":"org.apache.hadoop.fs.adl.AdlFileSystem","yarn.resourcemanager.application.max-tags":"10","hadoop.domainname.resolver.impl":"org.apache.hadoop.net.DNSDomainNameResolver","yarn.resourcemanager.nodemanager.minimum.version":"NONE","mapreduce.jobhistory.webapp.xfs-filter.xframe-options":"SAMEORIGIN","yarn.app.mapreduce.am.staging-dir.erasurecoding.enabled":"false","net.topology.impl":"org.apache.hadoop.net.NetworkTopology","io.map.index.skip":"0","yarn.timeline-service.reader.webapp.https.address":"${yarn.timeline-service.webapp.https.address}","fs.ftp.data.connection.mode":"ACTIVE_LOCAL_DATA_CONNECTION_MODE","mapreduce.job.local-fs.single-disk-limit.check.kill-limit-exceed":"true","fs.azure.buffer.dir":"${env.LOCAL_DIRS:-${hadoop.tmp.dir}}/abfs","yarn.scheduler.maximum-allocation-vcores":"4","hadoop.http.cross-origin.allowed-headers":"X-Requested-With,Content-Type,Accept,Origin","yarn.nodemanager.log-aggregation.compression-type":"none","yarn.timeline-service.version":"1.0f","yarn.ipc.rpc.class":"org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC","mapreduce.reduce.maxattempts":"4","yarn.resourcemanager.system-metrics-publisher.timeline-server-v1.batch-size":"1000","hadoop.security.dns.log-slow-lookups.enabled":"false","mapreduce.job.committer.setup.cleanup.needed":"true","hadoop.security.secure.random.impl":"org.apache.hadoop.crypto.random.OpensslSecureRandom","mapreduce.job.running.reduce.limit":"0","fs.s3a.select.errors.include.sql":"false","ipc.maximum.response.length":"134217728","yarn.resourcemanager.webapp.rest-csrf.methods-to-ignore":"GET,OPTIONS,HEAD","mapreduce.job.token.tracking.ids.enabled":"*********(redacted)","hadoop.caller.context.max.size":"128","yarn.nodemanager.runtime.linux.docker.host-pid-namespace.allowed":"false","yarn.nodemanager.runtime.linux.docker.delayed-removal.allowed":"false","hadoop.registry.system.acls":"sasl:yarn@, sasl:mapred@, sasl:hdfs@","yarn.nodemanager.recovery.dir":"${hadoop.tmp.dir}/yarn-nm-recovery","yarn.federation.gpg.policy.generator.load-based.weight.minimum":"0","fs.s3a.fast.upload.buffer":"disk","mapreduce.jobhistory.intermediate-done-dir":"${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate","yarn.app.mapreduce.shuffle.log.separate":"true","yarn.log-aggregation.debug.filesize":"104857600","yarn.dispatcher.print-thread-pool.keep-alive-time":"10s","yarn.router.subcluster.heartbeat.expiration.time":"30m","fs.s3a.max.total.tasks":"32","fs.s3a.readahead.range":"256K","hadoop.http.authentication.simple.anonymous.allowed":"true","fs.s3a.fast.upload":"true","fs.s3a.attempts.maximum":"5","yarn.federation.amrmproxy.allocation.history.max.entry":"100","hadoop.registry.zk.connection.timeout.ms":"15000","yarn.resourcemanager.delegation-token-renewer.thread-count":"*********(redacted)","yarn.resourcemanager.delegation-token-renewer.thread-timeout":"*********(redacted)","yarn.timeline-service.leveldb-timeline-store.start-time-write-cache-size":"10000","yarn.nodemanager.aux-services.manifest.reload-ms":"0","yarn.nodemanager.emit-container-events":"true","yarn.resourcemanager.resource-profiles.enabled":"false","yarn.timeline-service.hbase-schema.prefix":"prod.","fs.azure.authorization":"false","mapreduce.map.log.level":"INFO","ha.failover-controller.active-standby-elector.zk.op.retries":"3","yarn.resourcemanager.decommissioning-nodes-watcher.poll-interval-secs":"20","mapreduce.output.fileoutputformat.compress.type":"RECORD","yarn.resourcemanager.leveldb-state-store.path":"${hadoop.tmp.dir}/yarn/system/rmstore","yarn.timeline-service.webapp.rest-csrf.custom-header":"X-XSRF-Header","mapreduce.task.spill.files.count.limit":"-1","mapreduce.ifile.readahead.bytes":"4194304","yarn.sharedcache.app-checker.class":"org.apache.hadoop.yarn.server.sharedcachemanager.RemoteAppChecker","yarn.nodemanager.linux-container-executor.nonsecure-mode.limit-users":"true","yarn.nodemanager.resource.detect-hardware-capabilities":"false","mapreduce.cluster.acls.enabled":"false","mapreduce.job.speculative.retry-after-no-speculate":"1000","fs.viewfs.overload.scheme.target.abfs.impl":"org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem","yarn.federation.gpg.webapp.address":"0.0.0.0:8069","hadoop.security.group.mapping.ldap.search.group.hierarchy.levels":"0","fs.s3a.input.fadvise":"random","yarn.resourcemanager.fs.state-store.retry-interval-ms":"1000","file.stream-buffer-size":"4096","yarn.resourcemanager.application-timeouts.monitor.interval-ms":"3000","mapreduce.map.output.compress.codec":"org.apache.hadoop.io.compress.DefaultCodec","mapreduce.map.speculative":"true","yarn.nodemanager.runtime.linux.runc.image-tag-to-manifest-plugin.hdfs-hash-file":"/runc-root/image-tag-to-hash","mapreduce.job.speculative.retry-after-speculate":"15000","yarn.federation.failover.random.order":"false","yarn.nodemanager.linux-container-executor.cgroups.mount":"false","yarn.app.mapreduce.am.container.log.backups":"0","yarn.app.mapreduce.am.log.level":"INFO","yarn.nodemanager.runtime.linux.runc.image-tag-to-manifest-plugin":"org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.runtime.runc.ImageTagToManifestPlugin","io.bytes.per.checksum":"512","mapreduce.job.reduce.slowstart.completedmaps":"0.05","yarn.timeline-service.http-authentication.type":"simple","hadoop.security.group.mapping.ldap.search.attr.group.name":"cn","yarn.nodemanager.resource-plugins.fpga.allowed-fpga-devices":"auto","yarn.timeline-service.client.internal-timers-ttl-secs":"420","io.compression.codec.zstd.buffersize":"0","fs.s3a.select.output.csv.quote.character":"\"","hadoop.http.logs.enabled":"true","fs.s3a.block.size":"32M","yarn.sharedcache.client-server.address":"0.0.0.0:8045","yarn.nodemanager.logaggregation.threadpool-size-max":"100","yarn.resourcemanager.hostname":"0.0.0.0","ipc.callqueue.overflow.trigger.failover":"false","yarn.resourcemanager.delegation.key.update-interval":"86400000","mapreduce.reduce.shuffle.fetch.retry.enabled":"${yarn.nodemanager.recovery.enabled}","mapreduce.map.memory.mb":"-1","mapreduce.task.skip.start.attempts":"2","fs.AbstractFileSystem.hdfs.impl":"org.apache.hadoop.fs.Hdfs","yarn.nodemanager.disk-health-checker.enable":"true","fs.s3a.select.output.csv.quote.fields":"always","ipc.client.tcpnodelay":"true","ipc.client.rpc-timeout.ms":"120000","yarn.nodemanager.webapp.rest-csrf.methods-to-ignore":"GET,OPTIONS,HEAD","yarn.resourcemanager.delegation-token-renewer.thread-retry-max-attempts":"*********(redacted)","ipc.client.low-latency":"false","yarn.scheduler.skip.node.multiplier":"2","mapreduce.input.lineinputformat.linespermap":"1","yarn.router.interceptor.user.threadpool-size":"5","ipc.client.connect.max.retries.on.timeouts":"45","yarn.timeline-service.leveldb-timeline-store.read-cache-size":"104857600","fs.AbstractFileSystem.har.impl":"org.apache.hadoop.fs.HarFs","mapreduce.job.split.metainfo.maxsize":"10000000","yarn.am.liveness-monitor.expiry-interval-ms":"900000","yarn.resourcemanager.container-tokens.master-key-rolling-interval-secs":"*********(redacted)","yarn.timeline-service.entity-group-fs-store.app-cache-size":"10","yarn.nodemanager.runtime.linux.runc.hdfs-manifest-to-resources-plugin.stat-cache-timeout-interval-secs":"360","fs.s3a.socket.recv.buffer":"8192","ipc.backoff.enable":"false","rpc.metrics.timeunit":"MILLISECONDS","yarn.resourcemanager.resource-tracker.address":"${yarn.resourcemanager.hostname}:8031","yarn.nodemanager.node-labels.provider.fetch-timeout-ms":"1200000","mapreduce.job.heap.memory-mb.ratio":"0.8","yarn.resourcemanager.leveldb-state-store.compaction-interval-secs":"3600","yarn.resourcemanager.webapp.rest-csrf.custom-header":"X-XSRF-Header","yarn.nodemanager.pluggable-device-framework.enabled":"false","yarn.scheduler.configuration.fs.path":"file://${hadoop.tmp.dir}/yarn/system/schedconf","mapreduce.client.output.filter":"FAILED","hadoop.http.filter.initializers":"org.apache.hadoop.http.lib.StaticUserWebFilter","mapreduce.reduce.memory.mb":"-1","yarn.timeline-service.hostname":"0.0.0.0","file.replication":"1","yarn.nodemanager.container-metrics.unregister-delay-ms":"10000","yarn.nodemanager.container-metrics.period-ms":"-1","mapreduce.fileoutputcommitter.task.cleanup.enabled":"false","yarn.nodemanager.log.retain-seconds":"10800","yarn.timeline-service.entity-group-fs-store.cleaner-interval-seconds":"3600","ipc.[port_number].callqueue.impl":"java.util.concurrent.LinkedBlockingQueue","yarn.resourcemanager.keytab":"/etc/krb5.keytab","hadoop.security.group.mapping.providers.combined":"true","mapreduce.reduce.merge.inmem.threshold":"1000","yarn.timeline-service.recovery.enabled":"false","fs.azure.saskey.usecontainersaskeyforallaccess":"true","yarn.sharedcache.nm.uploader.thread-count":"20","yarn.resourcemanager.nodemanager-graceful-decommission-timeout-secs":"3600","ipc.[port_number].weighted-cost.lockfree":"1","mapreduce.shuffle.ssl.enabled":"false","yarn.timeline-service.hbase.coprocessor.app-final-value-retention-milliseconds":"259200000","mapreduce.jvm.add-opens-as-default":"true","yarn.nodemanager.opportunistic-containers-max-queue-length":"0","yarn.resourcemanager.state-store.max-completed-applications":"${yarn.resourcemanager.max-completed-applications}","mapreduce.job.speculative.minimum-allowed-tasks":"10","fs.s3a.aws.credentials.provider":"*********(redacted)","yarn.log-aggregation.retain-seconds":"-1","yarn.router.interceptor.allow-partial-result.enable":"false","yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb":"0","mapreduce.jobhistory.max-age-ms":"604800000","hadoop.http.cross-origin.allowed-methods":"GET,POST,HEAD","mapreduce.task.ping-for-liveliness-check.enabled":"false","yarn.resourcemanager.opportunistic-container-allocation.enabled":"false","fs.azure.enable.readahead":"true","mapreduce.jobhistory.webapp.address":"0.0.0.0:19888","hadoop.system.tags":"YARN,HDFS,NAMENODE,DATANODE,REQUIRED,SECURITY,KERBEROS,PERFORMANCE,CLIENT\n ,SERVER,DEBUG,DEPRECATED,COMMON,OPTIONAL","yarn.federation.gpg.webapp.cross-origin.enabled":"false","yarn.log-aggregation.file-controller.TFile.class":"org.apache.hadoop.yarn.logaggregation.filecontroller.tfile.LogAggregationTFileController","yarn.client.nodemanager-connect.max-wait-ms":"180000","yarn.resourcemanager.webapp.address":"${yarn.resourcemanager.hostname}:8088","mapreduce.jobhistory.recovery.enable":"false","mapreduce.reduce.shuffle.parallelcopies":"5","fs.AbstractFileSystem.webhdfs.impl":"org.apache.hadoop.fs.WebHdfs","fs.trash.interval":"0","yarn.app.mapreduce.client.max-retries":"3","hadoop.security.authentication":"simple","mapreduce.task.profile.reduce.params":"${mapreduce.task.profile.params}","yarn.app.mapreduce.am.resource.mb":"1536","mapreduce.input.fileinputformat.list-status.num-threads":"1","io.compression.codec.lzo.class":"org.apache.hadoop.io.compress.LzoCodec","yarn.nodemanager.container-executor.class":"org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor","yarn.router.interceptor.user-thread-pool.minimum-pool-size":"5","io.mapfile.bloom.size":"1048576","yarn.timeline-service.ttl-ms":"604800000","yarn.resourcemanager.nm-container-queuing.min-queue-length":"5","yarn.nodemanager.resource.cpu-vcores":"-1","yarn.federation.state-store.clean-up-retry-sleep-time":"1s","mapreduce.job.reduces":"1","fs.s3a.multipart.size":"64M","fs.s3a.select.input.csv.comment.marker":"#","yarn.scheduler.minimum-allocation-vcores":"1","mapreduce.job.speculative.speculative-cap-total-tasks":"0.01","hadoop.ssl.client.conf":"ssl-client.xml","mapreduce.job.queuename":"default","mapreduce.job.encrypted-intermediate-data-key-size-bits":"128","fs.iostatistics.thread.level.enabled":"true","ipc.[port_number].weighted-cost.response":"1","yarn.nodemanager.webapp.xfs-filter.xframe-options":"SAMEORIGIN","ha.health-monitor.sleep-after-disconnect.ms":"1000","yarn.app.mapreduce.shuffle.log.limit.kb":"0","hadoop.security.group.mapping":"org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback","yarn.client.application-client-protocol.poll-timeout-ms":"-1","mapreduce.jobhistory.jhist.format":"binary","mapreduce.task.stuck.timeout-ms":"600000","yarn.resourcemanager.application.max-tag.length":"100","yarn.resourcemanager.ha.enabled":"false","dfs.client.ignore.namenode.default.kms.uri":"false","hadoop.http.staticuser.user":"dr.who","mapreduce.task.exit.timeout.check-interval-ms":"20000","mapreduce.jobhistory.intermediate-user-done-dir.permissions":"770","mapreduce.task.exit.timeout":"60000","yarn.nodemanager.linux-container-executor.resources-handler.class":"org.apache.hadoop.yarn.server.nodemanager.util.DefaultLCEResourcesHandler","mapreduce.reduce.shuffle.memory.limit.percent":"0.25","yarn.resourcemanager.reservation-system.enable":"false","mapreduce.map.output.compress":"false","ha.zookeeper.acl":"world:anyone:rwcda","yarn.federation.state-store.sql.conn-time-out":"10s","io.compression.codec.lz4.buffersize":"262144","ipc.server.max.connections":"0","yarn.nodemanager.runtime.linux.docker.default-container-network":"host","yarn.router.webapp.address":"0.0.0.0:8089","yarn.scheduler.maximum-allocation-mb":"8192","yarn.resourcemanager.scheduler.monitor.policies":"org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy","yarn.sharedcache.cleaner.period-mins":"1440","ipc.client.async.calls.max":"100","yarn.nodemanager.resource-plugins.gpu.docker-plugin.nvidia-docker-v1.endpoint":"http://localhost:3476/v1.0/docker/cli","yarn.app.mapreduce.am.container.log.limit.kb":"0","ipc.client.connect.retry.interval":"1000","yarn.timeline-service.http-cross-origin.enabled":"false","fs.wasbs.impl":"org.apache.hadoop.fs.azure.NativeAzureFileSystem$Secure","yarn.resourcemanager.nodemanagers.heartbeat-interval-max-ms":"1000","hadoop.http.jmx.nan-filter.enabled":"false","yarn.router.scheduled.executor.threads":"1","yarn.federation.subcluster-resolver.class":"org.apache.hadoop.yarn.server.federation.resolver.DefaultSubClusterResolverImpl","yarn.resourcemanager.zk-state-store.parent-path":"/rmstore","fs.s3a.select.input.csv.field.delimiter":",","yarn.nodemanager.least-load-policy-selector.multiplier":"50000","mapreduce.jobhistory.cleaner.enable":"true","yarn.timeline-service.client.fd-flush-interval-secs":"10","hadoop.security.kms.client.encrypted.key.cache.expiry":"43200000","yarn.client.nodemanager-client-async.thread-pool-max-size":"500","mapreduce.map.maxattempts":"4","yarn.resourcemanager.nm-container-queuing.sorting-nodes-interval-ms":"1000","fs.s3a.committer.staging.tmp.path":"tmp/staging","yarn.nodemanager.sleep-delay-before-sigkill.ms":"250","yarn.resourcemanager.nm-container-queuing.min-queue-wait-time-ms":"10","mapreduce.job.end-notification.retry.attempts":"0","yarn.nodemanager.resource.count-logical-processors-as-cores":"false","hadoop.registry.zk.root":"/registry","yarn.federation.state-store.sql.pool-name":"YARN-Federation-DataBasePool","adl.feature.ownerandgroup.enableupn":"false","yarn.resourcemanager.zk-max-znode-size.bytes":"1048576","mapreduce.job.reduce.shuffle.consumer.plugin.class":"org.apache.hadoop.mapreduce.task.reduce.Shuffle","yarn.resourcemanager.delayed.delegation-token.removal-interval-ms":"*********(redacted)","yarn.nodemanager.localizer.cache.target-size-mb":"10240","fs.s3a.committer.staging.conflict-mode":"append","mapreduce.client.libjars.wildcard":"true","fs.s3a.committer.staging.unique-filenames":"true","yarn.nodemanager.node-attributes.provider.fetch-timeout-ms":"1200000","yarn.nodemanager.amrmproxy.wait.uam-register.done":"false","fs.s3a.list.version":"2","ftp.client-write-packet-size":"65536","yarn.federation.gpg.policy.generator.load-based.pending.minimum":"100","ipc.[port_number].weighted-cost.lockexclusive":"100","fs.AbstractFileSystem.adl.impl":"org.apache.hadoop.fs.adl.Adl","yarn.nodemanager.container-log-monitor.enable":"false","hadoop.security.key.default.cipher":"AES/CTR/NoPadding","yarn.client.failover-retries":"0","fs.s3a.multipart.purge.age":"24h","mapreduce.job.local-fs.single-disk-limit.check.interval-ms":"5000","net.topology.node.switch.mapping.impl":"org.apache.hadoop.net.ScriptBasedMapping","yarn.nodemanager.amrmproxy.address":"0.0.0.0:8049","ipc.server.listen.queue.size":"256","ipc.[port_number].decay-scheduler.period-ms":"5000","yarn.nodemanager.container-localizer.java.opts.add-exports-as-default":"true","yarn.nodemanager.runtime.linux.runc.image-tag-to-manifest-plugin.cache-refresh-interval-secs":"60","map.sort.class":"org.apache.hadoop.util.QuickSort","yarn.federation.state-store.max-applications":"1000","fs.viewfs.rename.strategy":"SAME_MOUNTPOINT","hadoop.security.kms.client.authentication.retry-count":"1","fs.permissions.umask-mode":"022","fs.s3a.assumed.role.credentials.provider":"org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider","yarn.nodemanager.runtime.linux.runc.privileged-containers.allowed":"false","ipc.server.handler.queue.size":"100","yarn.nodemanager.vmem-check-enabled":"true","yarn.nodemanager.numa-awareness.enabled":"false","yarn.nodemanager.recovery.compaction-interval-secs":"3600","yarn.app.mapreduce.client-am.ipc.max-retries":"3","yarn.resourcemanager.system-metrics-publisher.timeline-server-v1.interval-seconds":"60","yarn.federation.registry.base-dir":"yarnfederation/","yarn.nodemanager.health-checker.run-before-startup":"false","mapreduce.job.max.map":"-1","mapreduce.job.local-fs.single-disk-limit.bytes":"-1","mapreduce.shuffle.pathcache.concurrency-level":"16","mapreduce.job.ubertask.maxreduces":"1","mapreduce.shuffle.pathcache.max-weight":"10485760","hadoop.security.kms.client.encrypted.key.cache.size":"500","hadoop.security.java.secure.random.algorithm":"SHA1PRNG","ha.failover-controller.cli-check.rpc-timeout.ms":"20000","mapreduce.jobhistory.jobname.limit":"50","fs.s3a.select.input.compression":"none","yarn.client.nodemanager-connect.retry-interval-ms":"10000","ipc.[port_number].scheduler.priority.levels":"4","yarn.timeline-service.state-store-class":"org.apache.hadoop.yarn.server.timeline.recovery.LeveldbTimelineStateStore","yarn.nodemanager.env-whitelist":"JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ","yarn.federation.state-store.clean-up-retry-count":"1","yarn.sharedcache.nested-level":"3","yarn.timeline-service.webapp.rest-csrf.methods-to-ignore":"GET,OPTIONS,HEAD","fs.azure.user.agent.prefix":"unknown","yarn.resourcemanager.zk-delegation-token-node.split-index":"*********(redacted)","yarn.nodemanager.numa-awareness.read-topology":"false","yarn.nodemanager.webapp.address":"${yarn.nodemanager.hostname}:8042","rpc.metrics.quantile.enable":"false","yarn.registry.class":"org.apache.hadoop.registry.client.impl.FSRegistryOperationsService","mapreduce.jobhistory.admin.acl":"*","yarn.resourcemanager.system-metrics-publisher.dispatcher.pool-size":"10","yarn.scheduler.queue-placement-rules":"user-group","hadoop.http.authentication.kerberos.keytab":"${user.home}/hadoop.keytab","yarn.resourcemanager.recovery.enabled":"false","fs.s3a.select.input.csv.header":"none","yarn.federation.gpg.policy.generator.load-based.scaling":"LINEAR","yarn.nodemanager.runtime.linux.runc.hdfs-manifest-to-resources-plugin.stat-cache-size":"500","yarn.timeline-service.webapp.rest-csrf.enabled":"false","yarn.nodemanager.disk-health-checker.min-free-space-per-disk-watermark-high-mb":"0"},"System Properties":{"java.io.tmpdir":"/tmp","line.separator":"\n","path.separator":":","sun.management.compiler":"HotSpot 64-Bit Tiered Compilers","SPARK_SUBMIT":"true","sun.cpu.endian":"little","java.specification.version":"17","java.vm.specification.name":"Java Virtual Machine Specification","java.vendor":"Eclipse Adoptium","java.vm.specification.version":"17","user.home":"/home/spark","sun.arch.data.model":"64","sun.boot.library.path":"/opt/java/openjdk/lib","user.dir":"/opt/spark","java.library.path":"/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib","os.arch":"amd64","java.vm.version":"17.0.12+7","jetty.git.hash":"cef3fbd6d736a21e7d541a5db490381d95a2047d","java.runtime.version":"17.0.12+7","java.vm.info":"mixed mode, sharing","java.runtime.name":"OpenJDK Runtime Environment","java.version.date":"2024-07-16","file.separator":"/","java.class.version":"61.0","java.specification.name":"Java Platform API Specification","file.encoding":"UTF-8","jdk.reflect.useDirectMethodHandle":"false","user.timezone":"Etc/UTC","kubernetes.request.retry.backoffLimit":"3","java.specification.vendor":"Oracle Corporation","sun.java.launcher":"SUN_STANDARD","java.vm.compressedOopsMode":"Zero based","os.version":"6.1.140-154.222.amzn2023.x86_64","native.encoding":"UTF-8","java.vm.specification.vendor":"Oracle Corporation","user.country":"US","sun.jnu.encoding":"UTF-8","user.language":"en","java.vendor.version":"Temurin-17.0.12+7","java.vendor.url":"https://adoptium.net/","os.name":"Linux","java.vm.vendor":"Eclipse Adoptium","jdk.debug":"release","java.vendor.url.bug":"https://github.com/adoptium/adoptium-support/issues","user.name":"spark","java.vm.name":"OpenJDK 64-Bit Server VM","sun.java.command":"org.apache.spark.deploy.SparkSubmit --deploy-mode client --conf spark.driver.bindAddress=100.64.122.12 --conf spark.executorEnv.SPARK_DRIVER_POD_IP=100.64.122.12 --properties-file /opt/spark/conf/spark.properties --class org.apache.spark.deploy.PythonRunner s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/scripts/pyspark-taxi-trip.py s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input/ s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/","java.home":"/opt/java/openjdk","java.version":"17.0.12","sun.io.unicode.encoding":"UnicodeLittle"},"Metrics Properties":{"driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","*.sink.servlet.path":"/metrics/json","*.sink.servlet.class":"org.apache.spark.metrics.sink.MetricsServlet","applications.sink.servlet.path":"/metrics/applications/json","master.sink.servlet.path":"/metrics/master/json","executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet"},"Classpath Entries":{"/opt/spark/jars/hadoop-client-runtime-3.4.1.jar":"System Classpath","/opt/spark/jars/spark-network-common_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/netty-transport-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/netty-transport-native-epoll-4.1.96.Final-linux-x86_64.jar":"System Classpath","/opt/spark/jars/kubernetes-model-common-6.7.2.jar":"System Classpath","/opt/spark/jars/logging-interceptor-3.12.12.jar":"System Classpath","/opt/spark/jars/paranamer-2.8.jar":"System Classpath","/opt/spark/jars/breeze_2.12-2.1.0.jar":"System Classpath","/opt/spark/jars/scala-compiler-2.12.18.jar":"System Classpath","/opt/spark/jars/bonecp-0.8.0.RELEASE.jar":"System Classpath","/opt/spark/jars/spark-hive-thriftserver_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/netty-handler-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/jersey-hk2-2.40.jar":"System Classpath","/opt/spark/jars/netty-buffer-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/leveldbjni-all-1.8.jar":"System Classpath","/opt/spark/jars/kubernetes-model-gatewayapi-6.7.2.jar":"System Classpath","/opt/spark/jars/commons-compress-1.23.0.jar":"System Classpath","/opt/spark/jars/log4j-api-2.20.0.jar":"System Classpath","/opt/spark/jars/super-csv-2.2.0.jar":"System Classpath","/opt/spark/jars/javolution-5.5.1.jar":"System Classpath","/opt/spark/jars/hive-shims-scheduler-2.3.9.jar":"System Classpath","/opt/spark/jars/spark-kubernetes_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/spire-util_2.12-0.17.0.jar":"System Classpath","/opt/spark/jars/netty-transport-classes-epoll-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/gson-2.2.4.jar":"System Classpath","/opt/spark/jars/spark-common-utils_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/kubernetes-client-6.7.2.jar":"System Classpath","/opt/spark/jars/parquet-format-structures-1.13.1.jar":"System Classpath","/opt/spark/jars/parquet-column-1.13.1.jar":"System Classpath","/opt/spark/jars/tink-1.9.0.jar":"System Classpath","/opt/spark/jars/istack-commons-runtime-3.0.8.jar":"System Classpath","/opt/spark/jars/antlr-runtime-3.5.2.jar":"System Classpath","/opt/spark/jars/arrow-memory-core-12.0.1.jar":"System Classpath","/opt/spark/jars/commons-dbcp-1.4.jar":"System Classpath","/opt/spark/jars/chill_2.12-0.10.0.jar":"System Classpath","/opt/spark/jars/log4j-core-2.20.0.jar":"System Classpath","/opt/spark/jars/algebra_2.12-2.0.1.jar":"System Classpath","/opt/spark/jars/xz-1.9.jar":"System Classpath","/opt/spark/jars/spark-sql-api_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-metrics-6.7.2.jar":"System Classpath","/opt/spark/jars/antlr4-runtime-4.9.3.jar":"System Classpath","/opt/spark/jars/hive-service-rpc-3.1.3.jar":"System Classpath","/opt/spark/jars/activation-1.1.1.jar":"System Classpath","/opt/spark/jars/spark-repl_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/objenesis-3.3.jar":"System Classpath","/opt/spark/jars/joda-time-2.12.5.jar":"System Classpath","/opt/spark/jars/netty-codec-http-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/netty-transport-native-epoll-4.1.96.Final-linux-aarch_64.jar":"System Classpath","/opt/spark/jars/hive-storage-api-2.8.1.jar":"System Classpath","/opt/spark/jars/jackson-databind-2.15.2.jar":"System Classpath","/opt/spark/jars/kubernetes-model-policy-6.7.2.jar":"System Classpath","/opt/spark/jars/spark-mllib-local_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/cats-kernel_2.12-2.1.1.jar":"System Classpath","/opt/spark/jars/aopalliance-repackaged-2.6.1.jar":"System Classpath","/opt/spark/jars/lapack-3.0.3.jar":"System Classpath","/opt/spark/jars/spark-sketch_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/xbean-asm9-shaded-4.23.jar":"System Classpath","/opt/spark/jars/JTransforms-3.1.jar":"System Classpath","/opt/spark/jars/jakarta.servlet-api-4.0.3.jar":"System Classpath","/opt/spark/jars/jul-to-slf4j-2.0.7.jar":"System Classpath","/opt/spark/jars/commons-collections-3.2.2.jar":"System Classpath","/opt/spark/jars/oro-2.0.8.jar":"System Classpath","/opt/spark/jars/datanucleus-api-jdo-4.2.4.jar":"System Classpath","/opt/spark/jars/derby-10.14.2.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-coordination-6.7.2.jar":"System Classpath","/opt/spark/jars/javassist-3.29.2-GA.jar":"System Classpath","/opt/spark/jars/kubernetes-model-scheduling-6.7.2.jar":"System Classpath","/opt/spark/jars/netty-common-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/metrics-jvm-4.2.19.jar":"System Classpath","/opt/spark/jars/commons-pool-1.5.4.jar":"System Classpath","/opt/spark/jars/commons-codec-1.16.1.jar":"System Classpath","/opt/spark/jars/breeze-macros_2.12-2.1.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-networking-6.7.2.jar":"System Classpath","/opt/spark/jars/py4j-0.10.9.7.jar":"System Classpath","/opt/spark/jars/annotations-17.0.0.jar":"System Classpath","/opt/spark/jars/jaxb-runtime-2.3.2.jar":"System Classpath","/opt/spark/jars/blas-3.0.3.jar":"System Classpath","/opt/spark/jars/json4s-ast_2.12-3.7.0-M11.jar":"System Classpath","/opt/spark/jars/scala-collection-compat_2.12-2.7.0.jar":"System Classpath","/opt/spark/jars/commons-lang-2.6.jar":"System Classpath","/opt/spark/jars/compress-lzf-1.1.2.jar":"System Classpath","/opt/spark/jars/zookeeper-jute-3.6.3.jar":"System Classpath","/opt/spark/jars/metrics-graphite-4.2.19.jar":"System Classpath","/opt/spark/jars/snakeyaml-engine-2.6.jar":"System Classpath","/opt/spark/jars/json4s-jackson_2.12-3.7.0-M11.jar":"System Classpath","/opt/spark/jars/kubernetes-model-discovery-6.7.2.jar":"System Classpath","/opt/spark/jars/jta-1.1.jar":"System Classpath","/opt/spark/jars/jersey-server-2.40.jar":"System Classpath","/opt/spark/jars/orc-core-1.9.4-shaded-protobuf.jar":"System Classpath","/opt/spark/jars/jersey-common-2.40.jar":"System Classpath","/opt/spark/jars/libthrift-0.12.0.jar":"System Classpath","/opt/spark/jars/spark-tags_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/metrics-json-4.2.19.jar":"System Classpath","/opt/spark/jars/hive-serde-2.3.9.jar":"System Classpath","/opt/spark/jars/RoaringBitmap-0.9.45.jar":"System Classpath","/opt/spark/jars/metrics-core-4.2.19.jar":"System Classpath","/opt/spark/jars/parquet-encoding-1.13.1.jar":"System Classpath","/opt/spark/jars/hive-common-2.3.9.jar":"System Classpath","/opt/spark/jars/hk2-api-2.6.1.jar":"System Classpath","/opt/spark/jars/kubernetes-model-admissionregistration-6.7.2.jar":"System Classpath","/opt/spark/jars/snakeyaml-2.0.jar":"System Classpath","/opt/spark/jars/guava-14.0.1.jar":"System Classpath","/opt/spark/jars/slf4j-api-2.0.7.jar":"System Classpath","/opt/spark/jars/hive-metastore-2.3.9.jar":"System Classpath","/opt/spark/jars/jcl-over-slf4j-2.0.7.jar":"System Classpath","/opt/spark/jars/json4s-core_2.12-3.7.0-M11.jar":"System Classpath","/opt/spark/jars/kubernetes-model-autoscaling-6.7.2.jar":"System Classpath","/opt/spark/jars/univocity-parsers-2.9.1.jar":"System Classpath","/opt/spark/jars/spark-unsafe_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/spark-yarn_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/spark-streaming_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/commons-text-1.10.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-apiextensions-6.7.2.jar":"System Classpath","/opt/spark/jars/netty-transport-classes-kqueue-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/orc-shims-1.9.4.jar":"System Classpath","/opt/spark/jars/jersey-client-2.40.jar":"System Classpath","/opt/spark/jars/netty-codec-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/curator-client-2.13.0.jar":"System Classpath","/opt/spark/jars/jackson-mapper-asl-1.9.13.jar":"System Classpath","/opt/spark/jars/spark-hive_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/jsr305-3.0.0.jar":"System Classpath","/opt/spark/jars/spire_2.12-0.17.0.jar":"System Classpath","/opt/spark/jars/orc-mapreduce-1.9.4-shaded-protobuf.jar":"System Classpath","/opt/spark/jars/jdo-api-3.0.1.jar":"System Classpath","/opt/spark/jars/spark-core_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/hive-exec-2.3.9-core.jar":"System Classpath","/opt/spark/jars/jakarta.annotation-api-1.3.5.jar":"System Classpath","/opt/spark/jars/scala-library-2.12.18.jar":"System Classpath","/opt/spark/jars/ivy-2.5.1.jar":"System Classpath","/opt/spark/jars/minlog-1.3.0.jar":"System Classpath","/opt/spark/jars/shims-0.9.45.jar":"System Classpath","/opt/spark/jars/netty-handler-proxy-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/jackson-annotations-2.15.2.jar":"System Classpath","/opt/spark/jars/kubernetes-model-core-6.7.2.jar":"System Classpath","/opt/spark/jars/kubernetes-model-certificates-6.7.2.jar":"System Classpath","/opt/spark/jars/mesos-1.4.3-shaded-protobuf.jar":"System Classpath","/opt/spark/jars/netty-all-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/scala-reflect-2.12.18.jar":"System Classpath","/opt/spark/jars/netty-transport-native-kqueue-4.1.96.Final-osx-x86_64.jar":"System Classpath","/opt/spark/conf/":"System Classpath","/opt/spark/jars/curator-recipes-2.13.0.jar":"System Classpath","/opt/spark/jars/jakarta.validation-api-2.0.2.jar":"System Classpath","/opt/spark/jars/parquet-common-1.13.1.jar":"System Classpath","/opt/spark/jars/hadoop-aws-3.4.1.jar":"System Classpath","/opt/spark/jars/log4j-slf4j2-impl-2.20.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-batch-6.7.2.jar":"System Classpath","/opt/spark/jars/kubernetes-httpclient-okhttp-6.7.2.jar":"System Classpath","/opt/spark/jars/spire-macros_2.12-0.17.0.jar":"System Classpath","/opt/spark/jars/datasketches-java-3.3.0.jar":"System Classpath","/opt/spark/jars/metrics-jmx-4.2.19.jar":"System Classpath","/opt/spark/jars/hk2-locator-2.6.1.jar":"System Classpath","/opt/spark/jars/lz4-java-1.8.0.jar":"System Classpath","/opt/spark/jars/scala-xml_2.12-2.1.0.jar":"System Classpath","/opt/spark/jars/hive-shims-0.23-2.3.9.jar":"System Classpath","/opt/spark/jars/spire-platform_2.12-0.17.0.jar":"System Classpath","/opt/spark/jars/jakarta.xml.bind-api-2.3.2.jar":"System Classpath","/opt/spark/jars/commons-lang3-3.12.0.jar":"System Classpath","/opt/spark/jars/JLargeArrays-1.5.jar":"System Classpath","/opt/spark/jars/kubernetes-model-rbac-6.7.2.jar":"System Classpath","/opt/spark/jars/jakarta.inject-2.6.1.jar":"System Classpath","/opt/spark/jars/hive-shims-2.3.9.jar":"System Classpath","/opt/spark/jars/spark-launcher_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/parquet-jackson-1.13.1.jar":"System Classpath","/opt/spark/jars/httpcore-4.4.16.jar":"System Classpath","/opt/spark/jars/jodd-core-3.5.2.jar":"System Classpath","/opt/spark/jars/avro-mapred-1.11.2.jar":"System Classpath","/opt/spark/jars/jackson-core-2.15.2.jar":"System Classpath","/opt/spark/jars/spark-catalyst_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/netty-transport-native-kqueue-4.1.96.Final-osx-aarch_64.jar":"System Classpath","/opt/spark/jars/json-1.8.jar":"System Classpath","/opt/spark/jars/commons-crypto-1.1.0.jar":"System Classpath","/opt/spark/jars/arrow-vector-12.0.1.jar":"System Classpath","/opt/spark/jars/stax-api-1.0.1.jar":"System Classpath","/opt/spark/jars/hive-beeline-2.3.9.jar":"System Classpath","/opt/spark/jars/datanucleus-rdbms-4.1.19.jar":"System Classpath","/opt/spark/jars/hadoop-common-3.4.1.jar":"System Classpath","/opt/spark/jars/httpclient-4.5.14.jar":"System Classpath","/opt/spark/jars/commons-io-2.16.1.jar":"System Classpath","/opt/spark/jars/okhttp-3.12.12.jar":"System Classpath","/opt/spark/jars/spark-sql_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/commons-logging-1.1.3.jar":"System Classpath","/opt/spark/jars/datanucleus-core-4.1.17.jar":"System Classpath","/opt/spark/jars/jline-2.14.6.jar":"System Classpath","/opt/spark/jars/kryo-shaded-4.0.2.jar":"System Classpath","/opt/spark/jars/commons-cli-1.5.0.jar":"System Classpath","/opt/spark/jars/jackson-module-scala_2.12-2.15.2.jar":"System Classpath","/opt/spark/jars/HikariCP-2.5.1.jar":"System Classpath","/opt/spark/jars/dropwizard-metrics-hadoop-metrics2-reporter-0.1.2.jar":"System Classpath","/opt/spark/jars/json4s-scalap_2.12-3.7.0-M11.jar":"System Classpath","/opt/spark/jars/chill-java-0.10.0.jar":"System Classpath","/opt/spark/jars/arpack_combined_all-0.1.jar":"System Classpath","/opt/spark/jars/scala-parser-combinators_2.12-2.3.0.jar":"System Classpath","/opt/spark/jars/zookeeper-3.6.3.jar":"System Classpath","/opt/spark/jars/hive-llap-common-2.3.9.jar":"System Classpath","/opt/spark/jars/spark-mesos_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/hive-jdbc-2.3.9.jar":"System Classpath","/opt/spark/jars/netty-resolver-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/jpam-1.1.jar":"System Classpath","/opt/spark/jars/avro-1.11.2.jar":"System Classpath","/opt/spark/jars/opencsv-2.3.jar":"System Classpath","/opt/spark/jars/netty-transport-native-unix-common-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/parquet-hadoop-1.13.1.jar":"System Classpath","/opt/spark/jars/curator-framework-2.13.0.jar":"System Classpath","/opt/spark/jars/jackson-core-asl-1.9.13.jar":"System Classpath","/opt/spark/jars/jackson-dataformat-yaml-2.15.2.jar":"System Classpath","/opt/spark/jars/arrow-memory-netty-12.0.1.jar":"System Classpath","/opt/spark/jars/stream-2.9.6.jar":"System Classpath","/opt/spark/jars/hive-cli-2.3.9.jar":"System Classpath","/opt/spark/jars/kubernetes-model-events-6.7.2.jar":"System Classpath","/opt/spark/jars/spark-graphx_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/jackson-datatype-jsr310-2.15.2.jar":"System Classpath","/opt/spark/jars/avro-ipc-1.11.2.jar":"System Classpath","/opt/spark/jars/rocksdbjni-8.3.2.jar":"System Classpath","/opt/spark/jars/bundle-2.29.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-node-6.7.2.jar":"System Classpath","/opt/spark/jars/commons-compiler-3.1.9.jar":"System Classpath","/opt/spark/jars/ST4-4.0.4.jar":"System Classpath","/opt/spark/jars/spark-kvstore_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/log4j-1.2-api-2.20.0.jar":"System Classpath","/opt/spark/jars/hadoop-client-api-3.4.1.jar":"System Classpath","/opt/spark/jars/datasketches-memory-2.1.0.jar":"System Classpath","/opt/spark/jars/spark-mllib_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/kubernetes-client-api-6.7.2.jar":"System Classpath","/opt/spark/jars/arrow-format-12.0.1.jar":"System Classpath","/opt/spark/jars/arpack-3.0.3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-resource-6.7.2.jar":"System Classpath","/opt/spark/jars/osgi-resource-locator-1.0.3.jar":"System Classpath","/opt/spark/jars/zstd-jni-1.5.5-4.jar":"System Classpath","/opt/spark/jars/jakarta.ws.rs-api-2.1.6.jar":"System Classpath","/opt/spark/jars/hadoop-shaded-guava-1.1.1.jar":"System Classpath","/opt/spark/jars/okio-1.17.6.jar":"System Classpath","/opt/spark/jars/hadoop-yarn-server-web-proxy-3.4.1.jar":"System Classpath","/opt/spark/jars/hk2-utils-2.6.1.jar":"System Classpath","/opt/spark/jars/audience-annotations-0.5.0.jar":"System Classpath","/opt/spark/jars/flatbuffers-java-1.12.0.jar":"System Classpath","/opt/spark/jars/janino-3.1.9.jar":"System Classpath","/opt/spark/jars/aircompressor-0.27.jar":"System Classpath","/opt/spark/jars/commons-math3-3.6.1.jar":"System Classpath","/opt/spark/jars/transaction-api-1.1.jar":"System Classpath","/opt/spark/jars/kubernetes-model-storageclass-6.7.2.jar":"System Classpath","/opt/spark/jars/libfb303-0.9.3.jar":"System Classpath","/opt/spark/jars/snappy-java-1.1.10.5.jar":"System Classpath","/opt/spark/jars/hive-shims-common-2.3.9.jar":"System Classpath","/opt/spark/jars/jersey-container-servlet-core-2.40.jar":"System Classpath","/opt/spark/jars/netty-codec-http2-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/pickle-1.3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-flowcontrol-6.7.2.jar":"System Classpath","/opt/spark/jars/threeten-extra-1.7.1.jar":"System Classpath","/opt/spark/jars/spark-network-shuffle_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-apps-6.7.2.jar":"System Classpath","/opt/spark/jars/javax.jdo-3.2.0-m3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-extensions-6.7.2.jar":"System Classpath","/opt/spark/jars/netty-codec-socks-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/jersey-container-servlet-2.40.jar":"System Classpath","/opt/spark/jars/zjsonpatch-0.3.0.jar":"System Classpath","/opt/spark/jars/commons-collections4-4.4.jar":"System Classpath"}} +{"Event":"SparkListenerApplicationStart","App Name":"NewYorkTaxiData_2025_06_27_00_24_44","App ID":"spark-110be3a8424d4a2789cb88134418217b","Timestamp":1750983884577,"User":"spark"} +{"Event":"SparkListenerJobStart","Job ID":0,"Submission Time":1750983918532,"Stage Infos":[{"Stage ID":0,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":1,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"1\",\"name\":\"mapPartitions\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[0],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":0,"Name":"ParallelCollectionRDD","Scope":"{\"id\":\"0\",\"name\":\"parallelize\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:563)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[0],"Properties":{"spark.rdd.scope":"{\"id\":\"2\",\"name\":\"collect\"}","spark.rdd.scope.noOverride":"true"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":0,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":1,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"1\",\"name\":\"mapPartitions\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[0],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":0,"Name":"ParallelCollectionRDD","Scope":"{\"id\":\"0\",\"name\":\"parallelize\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:563)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983918544,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.rdd.scope":"{\"id\":\"2\",\"name\":\"collect\"}","resource.executor.cores":"1","spark.rdd.scope.noOverride":"true"}} +{"Event":"SparkListenerExecutorAdded","Timestamp":1750983953852,"Executor ID":"3","Executor Info":{"Host":"100.64.216.237","Total Cores":1,"Log Urls":{},"Attributes":{},"Resources":{},"Resource Profile Id":0,"Registration Time":1750983953852}} +{"Event":"SparkListenerExecutorAdded","Timestamp":1750983953853,"Executor ID":"4","Executor Info":{"Host":"100.64.138.5","Total Cores":1,"Log Urls":{},"Attributes":{},"Resources":{},"Resource Profile Id":0,"Registration Time":1750983953853}} +{"Event":"SparkListenerExecutorAdded","Timestamp":1750983953853,"Executor ID":"1","Executor Info":{"Host":"100.64.221.138","Total Cores":1,"Log Urls":{},"Attributes":{},"Resources":{},"Resource Profile Id":0,"Registration Time":1750983953853}} +{"Event":"SparkListenerExecutorAdded","Timestamp":1750983953860,"Executor ID":"2","Executor Info":{"Host":"100.64.162.9","Total Cores":1,"Log Urls":{},"Attributes":{},"Resources":{},"Resource Profile Id":0,"Registration Time":1750983953860}} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"3","Host":"100.64.216.237","Port":35755},"Maximum Memory":2388236697,"Timestamp":1750983953909,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"1","Host":"100.64.221.138","Port":43395},"Maximum Memory":2388236697,"Timestamp":1750983953910,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"4","Host":"100.64.138.5","Port":34097},"Maximum Memory":2388236697,"Timestamp":1750983953910,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"2","Host":"100.64.162.9","Port":43483},"Maximum Memory":2388236697,"Timestamp":1750983953918,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerTaskStart","Stage ID":0,"Stage Attempt ID":0,"Task Info":{"Task ID":0,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983953947,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":0,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":0,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983953947,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983956078,"Failed":false,"Killed":false,"Accumulables":[{"ID":1,"Name":"internal.metrics.executorDeserializeTime","Update":301,"Value":301,"Internal":true,"Count Failed Values":true},{"ID":2,"Name":"internal.metrics.executorDeserializeCpuTime","Update":241759717,"Value":241759717,"Internal":true,"Count Failed Values":true},{"ID":3,"Name":"internal.metrics.executorRunTime","Update":1773,"Value":1773,"Internal":true,"Count Failed Values":true},{"ID":4,"Name":"internal.metrics.executorCpuTime","Update":92913313,"Value":92913313,"Internal":true,"Count Failed Values":true},{"ID":5,"Name":"internal.metrics.resultSize","Update":2470,"Value":2470,"Internal":true,"Count Failed Values":true},{"ID":6,"Name":"internal.metrics.jvmGCTime","Update":20,"Value":20,"Internal":true,"Count Failed Values":true},{"ID":7,"Name":"internal.metrics.resultSerializationTime","Update":5,"Value":5,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":301,"Executor Deserialize CPU Time":241759717,"Executor Run Time":1773,"Executor CPU Time":92913313,"Peak Execution Memory":0,"Result Size":2470,"JVM GC Time":20,"Result Serialization Time":5,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":0,"Records Read":0},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":0,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":1,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"1\",\"name\":\"mapPartitions\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[0],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":0,"Name":"ParallelCollectionRDD","Scope":"{\"id\":\"0\",\"name\":\"parallelize\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:563)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983918544,"Completion Time":1750983956084,"Accumulables":[{"ID":1,"Name":"internal.metrics.executorDeserializeTime","Value":301,"Internal":true,"Count Failed Values":true},{"ID":2,"Name":"internal.metrics.executorDeserializeCpuTime","Value":241759717,"Internal":true,"Count Failed Values":true},{"ID":3,"Name":"internal.metrics.executorRunTime","Value":1773,"Internal":true,"Count Failed Values":true},{"ID":4,"Name":"internal.metrics.executorCpuTime","Value":92913313,"Internal":true,"Count Failed Values":true},{"ID":5,"Name":"internal.metrics.resultSize","Value":2470,"Internal":true,"Count Failed Values":true},{"ID":6,"Name":"internal.metrics.jvmGCTime","Value":20,"Internal":true,"Count Failed Values":true},{"ID":7,"Name":"internal.metrics.resultSerializationTime","Value":5,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":0,"Completion Time":1750983956086,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart","executionId":0,"rootExecutionId":0,"description":"showString at NativeMethodAccessorImpl.java:0","details":"org.apache.spark.sql.Dataset.showString(Dataset.scala:315)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","physicalPlanDescription":"== Physical Plan ==\nCollectLimit (4)\n+- * Project (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct\n\n(2) ColumnarToRow [codegen id : 1]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(3) Project [codegen id : 1]\nOutput [20]: [toprettystring(VendorID#0L, Some(Etc/UTC)) AS toprettystring(VendorID)#80, toprettystring(tpep_pickup_datetime#1, Some(Etc/UTC)) AS toprettystring(tpep_pickup_datetime)#81, toprettystring(tpep_dropoff_datetime#2, Some(Etc/UTC)) AS toprettystring(tpep_dropoff_datetime)#82, toprettystring(passenger_count#3, Some(Etc/UTC)) AS toprettystring(passenger_count)#83, toprettystring(trip_distance#4, Some(Etc/UTC)) AS toprettystring(trip_distance)#84, toprettystring(RatecodeID#5, Some(Etc/UTC)) AS toprettystring(RatecodeID)#85, toprettystring(store_and_fwd_flag#6, Some(Etc/UTC)) AS toprettystring(store_and_fwd_flag)#86, toprettystring(PULocationID#7L, Some(Etc/UTC)) AS toprettystring(PULocationID)#87, toprettystring(DOLocationID#8L, Some(Etc/UTC)) AS toprettystring(DOLocationID)#88, toprettystring(payment_type#9L, Some(Etc/UTC)) AS toprettystring(payment_type)#89, toprettystring(fare_amount#10, Some(Etc/UTC)) AS toprettystring(fare_amount)#90, toprettystring(extra#11, Some(Etc/UTC)) AS toprettystring(extra)#91, toprettystring(mta_tax#12, Some(Etc/UTC)) AS toprettystring(mta_tax)#92, toprettystring(tip_amount#13, Some(Etc/UTC)) AS toprettystring(tip_amount)#93, toprettystring(tolls_amount#14, Some(Etc/UTC)) AS toprettystring(tolls_amount)#94, toprettystring(improvement_surcharge#15, Some(Etc/UTC)) AS toprettystring(improvement_surcharge)#95, toprettystring(total_amount#16, Some(Etc/UTC)) AS toprettystring(total_amount)#96, toprettystring(congestion_surcharge#17, Some(Etc/UTC)) AS toprettystring(congestion_surcharge)#97, toprettystring(airport_fee#18, Some(Etc/UTC)) AS toprettystring(airport_fee)#98, 2025-06-27 00:25:56.642038 AS toprettystring(current_date)#99]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(4) CollectLimit\nInput [20]: [toprettystring(VendorID)#80, toprettystring(tpep_pickup_datetime)#81, toprettystring(tpep_dropoff_datetime)#82, toprettystring(passenger_count)#83, toprettystring(trip_distance)#84, toprettystring(RatecodeID)#85, toprettystring(store_and_fwd_flag)#86, toprettystring(PULocationID)#87, toprettystring(DOLocationID)#88, toprettystring(payment_type)#89, toprettystring(fare_amount)#90, toprettystring(extra)#91, toprettystring(mta_tax)#92, toprettystring(tip_amount)#93, toprettystring(tolls_amount)#94, toprettystring(improvement_surcharge)#95, toprettystring(total_amount)#96, toprettystring(congestion_surcharge)#97, toprettystring(airport_fee)#98, toprettystring(current_date)#99]\nArguments: 21\n\n","sparkPlanInfo":{"nodeName":"CollectLimit","simpleString":"CollectLimit 21","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"Project","simpleString":"Project [toprettystring(VendorID#0L, Some(Etc/UTC)) AS toprettystring(VendorID)#80, toprettystring(tpep_pickup_datetime#1, Some(Etc/UTC)) AS toprettystring(tpep_pickup_datetime)#81, toprettystring(tpep_dropoff_datetime#2, Some(Etc/UTC)) AS toprettystring(tpep_dropoff_datetime)#82, toprettystring(passenger_count#3, Some(Etc/UTC)) AS toprettystring(passenger_count)#83, toprettystring(trip_distance#4, Some(Etc/UTC)) AS toprettystring(trip_distance)#84, toprettystring(RatecodeID#5, Some(Etc/UTC)) AS toprettystring(RatecodeID)#85, toprettystring(store_and_fwd_flag#6, Some(Etc/UTC)) AS toprettystring(store_and_fwd_flag)#86, toprettystring(PULocationID#7L, Some(Etc/UTC)) AS toprettystring(PULocationID)#87, toprettystring(DOLocationID#8L, Some(Etc/UTC)) AS toprettystring(DOLocationID)#88, toprettystring(payment_type#9L, Some(Etc/UTC)) AS toprettystring(payment_type)#89, toprettystring(fare_amount#10, Some(Etc/UTC)) AS toprettystring(fare_amount)#90, toprettystring(extra#11, Some(Etc/UTC)) AS toprettystring(extra)#91, toprettystring(mta_tax#12, Some(Etc/UTC)) AS toprettystring(mta_tax)#92, toprettystring(tip_amount#13, Some(Etc/UTC)) AS toprettystring(tip_amount)#93, toprettystring(tolls_amount#14, Some(Etc/UTC)) AS toprettystring(tolls_amount)#94, toprettystring(improvement_surcharge#15, Some(Etc/UTC)) AS toprettystring(improvement_surcharge)#95, toprettystring(total_amount#16, Some(Etc/UTC)) AS toprettystring(total_amount)#96, toprettystring(congestion_surcharge#17, Some(Etc/UTC)) AS toprettystring(congestion_surcharge)#97, toprettystring(airport_fee#18, Some(Etc/UTC)) AS toprettystring(airport_fee)#98, 2025-06-27 00:25:56.642038 AS toprettystring(current_date)#99]","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [VendorID#0L,tpep_pickup_datetime#1,tpep_dropoff_datetime#2,passenger_count#3,trip_distance#4,RatecodeID#5,store_and_fwd_flag#6,PULocationID#7L,DOLocationID#8L,payment_type#9L,fare_amount#10,extra#11,mta_tax#12,tip_amount#13,tolls_amount#14,improvement_surcharge#15,total_amount#16,congestion_surcharge#17,airport_fee#18] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":61,"metricType":"sum"},{"name":"scan time","accumulatorId":60,"metricType":"timing"},{"name":"metadata time","accumulatorId":62,"metricType":"timing"},{"name":"size of files read","accumulatorId":63,"metricType":"size"},{"name":"number of output rows","accumulatorId":59,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":57,"metricType":"sum"},{"name":"number of input batches","accumulatorId":58,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":56,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":54,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":48,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":55,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":49,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":46,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":43,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":52,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":45,"metricType":"sum"},{"name":"records read","accumulatorId":42,"metricType":"sum"},{"name":"local bytes read","accumulatorId":40,"metricType":"size"},{"name":"fetch wait time","accumulatorId":41,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":38,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":44,"metricType":"sum"},{"name":"local blocks read","accumulatorId":37,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":47,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":36,"metricType":"sum"},{"name":"local merged bytes read","accumulatorId":50,"metricType":"size"},{"name":"remote reqs duration","accumulatorId":51,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":39,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":53,"metricType":"size"}]},"time":1750983957434,"modifiedConfigs":{},"jobTags":[]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":0,"accumUpdates":[[61,51],[62,4],[63,1945137399]]} +{"Event":"SparkListenerJobStart","Job ID":1,"Submission Time":1750983958326,"Stage Infos":[{"Stage ID":1,"Stage Attempt ID":0,"Stage Name":"showString at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":5,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"10\",\"name\":\"mapPartitionsInternal\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[4],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":2,"Name":"FileScanRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":4,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"5\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[3],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":3,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[2],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.showString(Dataset.scala:315)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[1],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"0","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"0","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":1,"Stage Attempt ID":0,"Stage Name":"showString at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":5,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"10\",\"name\":\"mapPartitionsInternal\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[4],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":2,"Name":"FileScanRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":4,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"5\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[3],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":3,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[2],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.showString(Dataset.scala:315)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983958329,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"0","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"0","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":1,"Stage Attempt ID":0,"Task Info":{"Task ID":1,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983958350,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":1,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":1,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983958350,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983961400,"Failed":false,"Killed":false,"Accumulables":[{"ID":57,"Name":"number of output rows","Update":"4096","Value":"4096","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":58,"Name":"number of input batches","Update":"1","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":59,"Name":"number of output rows","Update":"4096","Value":"4096","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":60,"Name":"scan time","Update":"2380","Value":"2380","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":64,"Name":"internal.metrics.executorDeserializeTime","Update":326,"Value":326,"Internal":true,"Count Failed Values":true},{"ID":65,"Name":"internal.metrics.executorDeserializeCpuTime","Update":292055128,"Value":292055128,"Internal":true,"Count Failed Values":true},{"ID":66,"Name":"internal.metrics.executorRunTime","Update":2689,"Value":2689,"Internal":true,"Count Failed Values":true},{"ID":67,"Name":"internal.metrics.executorCpuTime","Update":2292010070,"Value":2292010070,"Internal":true,"Count Failed Values":true},{"ID":68,"Name":"internal.metrics.resultSize","Update":3678,"Value":3678,"Internal":true,"Count Failed Values":true},{"ID":69,"Name":"internal.metrics.jvmGCTime","Update":20,"Value":20,"Internal":true,"Count Failed Values":true},{"ID":70,"Name":"internal.metrics.resultSerializationTime","Update":3,"Value":3,"Internal":true,"Count Failed Values":true},{"ID":95,"Name":"internal.metrics.input.bytesRead","Update":38137744,"Value":38137744,"Internal":true,"Count Failed Values":true},{"ID":96,"Name":"internal.metrics.input.recordsRead","Update":4096,"Value":4096,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":326,"Executor Deserialize CPU Time":292055128,"Executor Run Time":2689,"Executor CPU Time":2292010070,"Peak Execution Memory":0,"Result Size":3678,"JVM GC Time":20,"Result Serialization Time":3,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":38137744,"Records Read":4096},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":1,"Stage Attempt ID":0,"Stage Name":"showString at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":5,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"10\",\"name\":\"mapPartitionsInternal\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[4],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":2,"Name":"FileScanRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":4,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"5\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[3],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":3,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[2],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.showString(Dataset.scala:315)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983958329,"Completion Time":1750983961401,"Accumulables":[{"ID":57,"Name":"number of output rows","Value":"4096","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":58,"Name":"number of input batches","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":59,"Name":"number of output rows","Value":"4096","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":60,"Name":"scan time","Value":"2380","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":64,"Name":"internal.metrics.executorDeserializeTime","Value":326,"Internal":true,"Count Failed Values":true},{"ID":65,"Name":"internal.metrics.executorDeserializeCpuTime","Value":292055128,"Internal":true,"Count Failed Values":true},{"ID":66,"Name":"internal.metrics.executorRunTime","Value":2689,"Internal":true,"Count Failed Values":true},{"ID":67,"Name":"internal.metrics.executorCpuTime","Value":2292010070,"Internal":true,"Count Failed Values":true},{"ID":68,"Name":"internal.metrics.resultSize","Value":3678,"Internal":true,"Count Failed Values":true},{"ID":69,"Name":"internal.metrics.jvmGCTime","Value":20,"Internal":true,"Count Failed Values":true},{"ID":70,"Name":"internal.metrics.resultSerializationTime","Value":3,"Internal":true,"Count Failed Values":true},{"ID":95,"Name":"internal.metrics.input.bytesRead","Value":38137744,"Internal":true,"Count Failed Values":true},{"ID":96,"Name":"internal.metrics.input.recordsRead","Value":4096,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":1,"Completion Time":1750983961402,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionEnd","executionId":0,"time":1750983962737,"errorMessage":""} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart","executionId":1,"rootExecutionId":1,"description":"count at NativeMethodAccessorImpl.java:0","details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (5)\n+- HashAggregate (4)\n +- Exchange (3)\n +- HashAggregate (2)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput: []\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct<>\n\n(2) HashAggregate\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(3) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=27]\n\n(4) HashAggregate\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(5) AdaptiveSparkPlan\nOutput [1]: [count#162L]\nArguments: isFinalPlan=false\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=false","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[count(1)])","children":[{"nodeName":"Exchange","simpleString":"Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=27]","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[partial_count(1)])","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<>","children":[],"metadata":{"Location":"InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]","ReadSchema":"struct<>","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":135,"metricType":"sum"},{"name":"scan time","accumulatorId":134,"metricType":"timing"},{"name":"metadata time","accumulatorId":136,"metricType":"timing"},{"name":"size of files read","accumulatorId":137,"metricType":"size"},{"name":"number of output rows","accumulatorId":133,"metricType":"sum"}]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":129,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":130,"metricType":"timing"},{"name":"peak memory","accumulatorId":128,"metricType":"size"},{"name":"number of output rows","accumulatorId":127,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":132,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":131,"metricType":"average"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":125,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":119,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":126,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":120,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":117,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":114,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":123,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":116,"metricType":"sum"},{"name":"records read","accumulatorId":113,"metricType":"sum"},{"name":"local bytes read","accumulatorId":111,"metricType":"size"},{"name":"fetch wait time","accumulatorId":112,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":109,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":115,"metricType":"sum"},{"name":"local blocks read","accumulatorId":108,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":118,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":107,"metricType":"sum"},{"name":"data size","accumulatorId":105,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":121,"metricType":"size"},{"name":"number of partitions","accumulatorId":106,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":122,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":110,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":124,"metricType":"size"}]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":101,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":102,"metricType":"timing"},{"name":"peak memory","accumulatorId":100,"metricType":"size"},{"name":"number of output rows","accumulatorId":99,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":104,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":103,"metricType":"average"}]}],"metadata":{},"metrics":[]},"time":1750983962944,"modifiedConfigs":{},"jobTags":[]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate","executionId":1,"physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (10)\n+- == Current Plan ==\n HashAggregate (6)\n +- ShuffleQueryStage (5)\n +- Exchange (4)\n +- * HashAggregate (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n+- == Initial Plan ==\n HashAggregate (9)\n +- Exchange (8)\n +- HashAggregate (7)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput: []\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct<>\n\n(2) ColumnarToRow [codegen id : 1]\nInput: []\n\n(3) HashAggregate [codegen id : 1]\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(4) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=39]\n\n(5) ShuffleQueryStage\nOutput [1]: [count#165L]\nArguments: 0\n\n(6) HashAggregate\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(7) HashAggregate\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(8) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=27]\n\n(9) HashAggregate\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(10) AdaptiveSparkPlan\nOutput [1]: [count#162L]\nArguments: isFinalPlan=false\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=false","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[count(1)])","children":[{"nodeName":"ShuffleQueryStage","simpleString":"ShuffleQueryStage 0","children":[{"nodeName":"Exchange","simpleString":"Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=39]","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[partial_count(1)])","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<>","children":[],"metadata":{"Location":"InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]","ReadSchema":"struct<>","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":135,"metricType":"sum"},{"name":"scan time","accumulatorId":134,"metricType":"timing"},{"name":"metadata time","accumulatorId":136,"metricType":"timing"},{"name":"size of files read","accumulatorId":137,"metricType":"size"},{"name":"number of output rows","accumulatorId":133,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":173,"metricType":"sum"},{"name":"number of input batches","accumulatorId":174,"metricType":"sum"}]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":169,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":170,"metricType":"timing"},{"name":"peak memory","accumulatorId":168,"metricType":"size"},{"name":"number of output rows","accumulatorId":167,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":172,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":171,"metricType":"average"}]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":166,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":164,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":158,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":165,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":159,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":156,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":153,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":162,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":155,"metricType":"sum"},{"name":"records read","accumulatorId":152,"metricType":"sum"},{"name":"local bytes read","accumulatorId":150,"metricType":"size"},{"name":"fetch wait time","accumulatorId":151,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":148,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":154,"metricType":"sum"},{"name":"local blocks read","accumulatorId":147,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":157,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":146,"metricType":"sum"},{"name":"data size","accumulatorId":144,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":160,"metricType":"size"},{"name":"number of partitions","accumulatorId":145,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":161,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":149,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":163,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":140,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":141,"metricType":"timing"},{"name":"peak memory","accumulatorId":139,"metricType":"size"},{"name":"number of output rows","accumulatorId":138,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":143,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":142,"metricType":"average"}]}],"metadata":{},"metrics":[]}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":1,"accumUpdates":[[135,51],[136,0],[137,1945137399]]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":1,"accumUpdates":[[145,1]]} +{"Event":"SparkListenerJobStart","Job ID":2,"Submission Time":1750983963140,"Stage Infos":[{"Stage ID":2,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":17,"RDD Info":[{"RDD ID":9,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[8],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":8,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"16\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[7],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":7,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[6],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":6,"Name":"FileScanRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[2],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"1","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":2,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":17,"RDD Info":[{"RDD ID":9,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[8],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":8,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"16\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[7],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":7,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[6],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":6,"Name":"FileScanRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983963144,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"1","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":2,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983963233,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":3,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750983963235,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":4,"Index":2,"Attempt":0,"Partition ID":2,"Launch Time":1750983963236,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":5,"Index":3,"Attempt":0,"Partition ID":3,"Launch Time":1750983963236,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":6,"Index":4,"Attempt":0,"Partition ID":4,"Launch Time":1750983963925,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":2,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983963233,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983963927,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"526","Value":"526","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"16","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"59","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"6974263","Value":"6974263","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"571","Value":"571","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"554","Value":"554","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"1806","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":61,"Value":61,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":53914010,"Value":53914010,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":616,"Value":616,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":231036847,"Value":231036847,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2176,"Value":2176,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Update":1,"Value":1,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":59,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":1,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":6974263,"Value":6974263,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":31206,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":7391793,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":61,"Executor Deserialize CPU Time":53914010,"Executor Run Time":616,"Executor CPU Time":231036847,"Peak Execution Memory":0,"Result Size":2176,"JVM GC Time":0,"Result Serialization Time":1,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":6974263,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":7,"Index":5,"Attempt":0,"Partition ID":5,"Launch Time":1750983964489,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":6,"Index":4,"Attempt":0,"Partition ID":4,"Launch Time":1750983963925,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983964490,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"539","Value":"1065","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"32","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"118","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"2","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"547201","Value":"7521464","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"549","Value":"1120","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"2","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"548","Value":"1102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"3612","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":4,"Value":65,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":4149520,"Value":58063530,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":551,"Value":1167,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":110954458,"Value":341991305,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":4309,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":118,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":2,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":547201,"Value":7521464,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":62412,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":14783586,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":4,"Executor Deserialize CPU Time":4149520,"Executor Run Time":551,"Executor CPU Time":110954458,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":547201,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":8,"Index":6,"Attempt":0,"Partition ID":6,"Launch Time":1750983964658,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":4,"Index":2,"Attempt":0,"Partition ID":2,"Launch Time":1750983963236,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983964659,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"969","Value":"2034","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"48","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"177","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"3","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"7342253","Value":"14863717","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"1019","Value":"2139","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"3","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"1005","Value":"2107","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"5418","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":182,"Value":247,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":126747158,"Value":184810688,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":1228,"Value":2395,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":500888602,"Value":842879907,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2176,"Value":6485,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Update":1,"Value":2,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":177,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":3,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":7342253,"Value":14863717,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":93618,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":22175379,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":182,"Executor Deserialize CPU Time":126747158,"Executor Run Time":1228,"Executor CPU Time":500888602,"Peak Execution Memory":0,"Result Size":2176,"JVM GC Time":0,"Result Serialization Time":1,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":7342253,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":9,"Index":7,"Attempt":0,"Partition ID":7,"Launch Time":1750983965146,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":7,"Index":5,"Attempt":0,"Partition ID":5,"Launch Time":1750983964489,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983965147,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"637","Value":"2671","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"64","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"236","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"4","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"369795","Value":"15233512","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"642","Value":"2781","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"4","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"642","Value":"2749","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"7224","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":250,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3436973,"Value":188247661,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":645,"Value":3040,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":91222942,"Value":934102849,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":8618,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":236,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":4,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":369795,"Value":15233512,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":124824,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":29567172,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3436973,"Executor Run Time":645,"Executor CPU Time":91222942,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":369795,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":10,"Index":8,"Attempt":0,"Partition ID":8,"Launch Time":1750983965411,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":8,"Index":6,"Attempt":0,"Partition ID":6,"Launch Time":1750983964658,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983965412,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"722","Value":"3393","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"80","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"295","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"5","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"500613","Value":"15734125","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"738","Value":"3519","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"5","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"737","Value":"3486","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"9030","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":4,"Value":254,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":4040794,"Value":192288455,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":740,"Value":3780,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":111906774,"Value":1046009623,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":10751,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":295,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":5,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":500613,"Value":15734125,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":156030,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":36958965,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":197860416,"JVMOffHeapMemory":101614056,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":502037,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":502037,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16842509,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9902387200,"ProcessTreeJVMRSSMemory":624971776,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":3,"MinorGCTime":27,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":27},"Task Metrics":{"Executor Deserialize Time":4,"Executor Deserialize CPU Time":4040794,"Executor Run Time":740,"Executor CPU Time":111906774,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":500613,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":11,"Index":9,"Attempt":0,"Partition ID":9,"Launch Time":1750983965738,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":9,"Index":7,"Attempt":0,"Partition ID":7,"Launch Time":1750983965146,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983965739,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"571","Value":"3964","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"96","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"354","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"6","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"527846","Value":"16261971","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"578","Value":"4097","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"6","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"578","Value":"4064","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"10836","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":257,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3273782,"Value":195562237,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":581,"Value":4361,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":80237899,"Value":1126247522,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":12884,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":354,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":6,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":527846,"Value":16261971,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":187236,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":44350758,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3273782,"Executor Run Time":581,"Executor CPU Time":80237899,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":527846,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":12,"Index":10,"Attempt":0,"Partition ID":10,"Launch Time":1750983966067,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":10,"Index":8,"Attempt":0,"Partition ID":8,"Launch Time":1750983965411,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983966068,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"636","Value":"4600","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"112","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"413","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"514370","Value":"16776341","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"642","Value":"4739","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"641","Value":"4705","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"12642","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":260,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3882663,"Value":199444900,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":644,"Value":5005,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":87877720,"Value":1214125242,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":15017,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":413,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":7,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":514370,"Value":16776341,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":218442,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":51742551,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3882663,"Executor Run Time":644,"Executor CPU Time":87877720,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":514370,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":13,"Index":11,"Attempt":0,"Partition ID":11,"Launch Time":1750983966270,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":3,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750983963235,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983966271,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"2268","Value":"6868","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"128","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"472","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"8","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"7064232","Value":"23840573","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"2316","Value":"7055","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"8","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"2302","Value":"7007","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"14448","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":376,"Value":636,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":316699220,"Value":516144120,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":2626,"Value":7631,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":1912124457,"Value":3126249699,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2217,"Value":17234,"Internal":true,"Count Failed Values":true},{"ID":180,"Name":"internal.metrics.jvmGCTime","Update":23,"Value":23,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":4,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":472,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":8,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":7064232,"Value":23840573,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":249648,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":59134344,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":376,"Executor Deserialize CPU Time":316699220,"Executor Run Time":2626,"Executor CPU Time":1912124457,"Peak Execution Memory":0,"Result Size":2217,"JVM GC Time":23,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":7064232,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":14,"Index":12,"Attempt":0,"Partition ID":12,"Launch Time":1750983966447,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":11,"Index":9,"Attempt":0,"Partition ID":9,"Launch Time":1750983965738,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983966448,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"689","Value":"7557","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"144","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"531","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"9","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"497465","Value":"24338038","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"695","Value":"7750","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"9","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"695","Value":"7702","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"16254","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":638,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2945074,"Value":519089194,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":697,"Value":8328,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":76684344,"Value":3202934043,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":19367,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":531,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":9,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":497465,"Value":24338038,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":280854,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":66526137,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2945074,"Executor Run Time":697,"Executor CPU Time":76684344,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":497465,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":15,"Index":13,"Attempt":0,"Partition ID":13,"Launch Time":1750983966572,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":5,"Index":3,"Attempt":0,"Partition ID":3,"Launch Time":1750983963236,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983966573,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"2570","Value":"10127","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"160","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"590","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"10","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"7230742","Value":"31568780","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"2620","Value":"10370","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"10","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"2604","Value":"10306","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"18060","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":372,"Value":1010,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":323595231,"Value":842684425,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":2930,"Value":11258,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":2127676305,"Value":5330610348,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2217,"Value":21584,"Internal":true,"Count Failed Values":true},{"ID":180,"Name":"internal.metrics.jvmGCTime","Update":22,"Value":45,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":6,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":590,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":10,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":7230742,"Value":31568780,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":312060,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":73917930,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":372,"Executor Deserialize CPU Time":323595231,"Executor Run Time":2930,"Executor CPU Time":2127676305,"Peak Execution Memory":0,"Result Size":2217,"JVM GC Time":22,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":7230742,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":16,"Index":14,"Attempt":0,"Partition ID":14,"Launch Time":1750983966731,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":12,"Index":10,"Attempt":0,"Partition ID":10,"Launch Time":1750983966067,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983966732,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"647","Value":"10774","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"176","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"649","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"11","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"364828","Value":"31933608","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"652","Value":"11022","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"11","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"651","Value":"10957","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"19866","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1012,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2689022,"Value":845373447,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":654,"Value":11912,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":82704593,"Value":5413314941,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":23717,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":649,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":11,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":364828,"Value":31933608,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":343266,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":81309723,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2689022,"Executor Run Time":654,"Executor CPU Time":82704593,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":364828,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":17,"Index":15,"Attempt":0,"Partition ID":15,"Launch Time":1750983966962,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":13,"Index":11,"Attempt":0,"Partition ID":11,"Launch Time":1750983966270,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983966963,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"660","Value":"11434","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"192","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"708","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"12","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"380039","Value":"32313647","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"669","Value":"11691","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"12","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"668","Value":"11625","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"21672","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":4,"Value":1016,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":4331468,"Value":849704915,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":680,"Value":12592,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":106033948,"Value":5519348889,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":25848,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":708,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":12,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":380039,"Value":32313647,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":374472,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":88701516,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":4,"Executor Deserialize CPU Time":4331468,"Executor Run Time":680,"Executor CPU Time":106033948,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":380039,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":18,"Index":16,"Attempt":0,"Partition ID":16,"Launch Time":1750983967041,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":14,"Index":12,"Attempt":0,"Partition ID":12,"Launch Time":1750983966447,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983967042,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"580","Value":"12014","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"208","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"767","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"13","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"509656","Value":"32823303","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"583","Value":"12274","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"13","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"583","Value":"12208","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"23478","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1018,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2517599,"Value":852222514,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":585,"Value":13177,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":80595595,"Value":5599944484,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":27981,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":767,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":13,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":509656,"Value":32823303,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":405678,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":96093309,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2517599,"Executor Run Time":585,"Executor CPU Time":80595595,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":509656,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":15,"Index":13,"Attempt":0,"Partition ID":13,"Launch Time":1750983966572,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983967270,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"659","Value":"12673","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"224","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"826","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"14","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"553425","Value":"33376728","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"670","Value":"12944","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"14","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"669","Value":"12877","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"25284","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":5,"Value":1023,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":5418291,"Value":857640805,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":683,"Value":13860,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":120451071,"Value":5720395555,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":30112,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":826,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":14,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":553425,"Value":33376728,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":436884,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":103485102,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":5,"Executor Deserialize CPU Time":5418291,"Executor Run Time":683,"Executor CPU Time":120451071,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":553425,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":16,"Index":14,"Attempt":0,"Partition ID":14,"Launch Time":1750983966731,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983967438,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"689","Value":"13362","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"240","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"885","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"15","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"539937","Value":"33916665","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"694","Value":"13638","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"15","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"693","Value":"13570","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"27090","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1026,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3010044,"Value":860650849,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":696,"Value":14556,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":76920493,"Value":5797316048,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":32245,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":885,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":15,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":539937,"Value":33916665,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":468090,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":110876895,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3010044,"Executor Run Time":696,"Executor CPU Time":76920493,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":539937,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":17,"Index":15,"Attempt":0,"Partition ID":15,"Launch Time":1750983966962,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983967571,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"591","Value":"13953","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"256","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"944","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"16","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"347438","Value":"34264103","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"595","Value":"14233","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"16","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"595","Value":"14165","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"28896","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1029,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3447158,"Value":864098007,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":597,"Value":15153,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":80583722,"Value":5877899770,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":34376,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":944,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":16,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":347438,"Value":34264103,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":499296,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":118268688,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3447158,"Executor Run Time":597,"Executor CPU Time":80583722,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":347438,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":18,"Index":16,"Attempt":0,"Partition ID":16,"Launch Time":1750983967041,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983967615,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"558","Value":"14511","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"272","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1003","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"469018","Value":"34733121","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"561","Value":"14794","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"561","Value":"14726","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"30702","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1031,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2918370,"Value":867016377,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":563,"Value":15716,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":66946758,"Value":5944846528,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":36509,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1003,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":17,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":469018,"Value":34733121,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":530502,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":125660481,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2918370,"Executor Run Time":563,"Executor CPU Time":66946758,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":469018,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":2,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":17,"RDD Info":[{"RDD ID":9,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[8],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":8,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"16\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[7],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":7,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[6],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":6,"Name":"FileScanRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983963144,"Completion Time":1750983967616,"Accumulables":[{"ID":133,"Name":"number of output rows","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Value":"14511","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Value":"272","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Value":"1003","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Value":"34733121","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Value":"14794","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Value":"14726","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Value":"30702","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Value":1031,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Value":867016377,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Value":15716,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Value":5944846528,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Value":36509,"Internal":true,"Count Failed Values":true},{"ID":180,"Name":"internal.metrics.jvmGCTime","Value":45,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Value":6,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Value":1003,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Value":17,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Value":34733121,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Value":530502,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Value":125660481,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":2,"Completion Time":1750983967620,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate","executionId":1,"physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (10)\n+- == Final Plan ==\n * HashAggregate (6)\n +- ShuffleQueryStage (5), Statistics(sizeInBytes=272.0 B, rowCount=17)\n +- Exchange (4)\n +- * HashAggregate (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n+- == Initial Plan ==\n HashAggregate (9)\n +- Exchange (8)\n +- HashAggregate (7)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput: []\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct<>\n\n(2) ColumnarToRow [codegen id : 1]\nInput: []\n\n(3) HashAggregate [codegen id : 1]\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(4) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=39]\n\n(5) ShuffleQueryStage\nOutput [1]: [count#165L]\nArguments: 0\n\n(6) HashAggregate [codegen id : 2]\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(7) HashAggregate\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(8) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=27]\n\n(9) HashAggregate\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(10) AdaptiveSparkPlan\nOutput [1]: [count#162L]\nArguments: isFinalPlan=true\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=true","children":[{"nodeName":"WholeStageCodegen (2)","simpleString":"WholeStageCodegen (2)","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[count(1)])","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"ShuffleQueryStage","simpleString":"ShuffleQueryStage 0","children":[{"nodeName":"Exchange","simpleString":"Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=39]","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[partial_count(1)])","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<>","children":[],"metadata":{"Location":"InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]","ReadSchema":"struct<>","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":135,"metricType":"sum"},{"name":"scan time","accumulatorId":134,"metricType":"timing"},{"name":"metadata time","accumulatorId":136,"metricType":"timing"},{"name":"size of files read","accumulatorId":137,"metricType":"size"},{"name":"number of output rows","accumulatorId":133,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":173,"metricType":"sum"},{"name":"number of input batches","accumulatorId":174,"metricType":"sum"}]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":169,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":170,"metricType":"timing"},{"name":"peak memory","accumulatorId":168,"metricType":"size"},{"name":"number of output rows","accumulatorId":167,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":172,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":171,"metricType":"average"}]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":166,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":164,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":158,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":165,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":159,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":156,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":153,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":162,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":155,"metricType":"sum"},{"name":"records read","accumulatorId":152,"metricType":"sum"},{"name":"local bytes read","accumulatorId":150,"metricType":"size"},{"name":"fetch wait time","accumulatorId":151,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":148,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":154,"metricType":"sum"},{"name":"local blocks read","accumulatorId":147,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":157,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":146,"metricType":"sum"},{"name":"data size","accumulatorId":144,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":160,"metricType":"size"},{"name":"number of partitions","accumulatorId":145,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":161,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":149,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":163,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":213,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":214,"metricType":"timing"},{"name":"peak memory","accumulatorId":212,"metricType":"size"},{"name":"number of output rows","accumulatorId":211,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":216,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":215,"metricType":"average"}]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":210,"metricType":"timing"}]}],"metadata":{},"metrics":[]}} +{"Event":"SparkListenerJobStart","Job ID":3,"Submission Time":1750983967658,"Stage Infos":[{"Stage ID":3,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":17,"RDD Info":[{"RDD ID":9,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[8],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":8,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"16\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[7],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":7,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[6],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":6,"Name":"FileScanRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},{"Stage ID":4,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":12,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"26\",\"name\":\"mapPartitionsInternal\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[11],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":11,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"21\",\"name\":\"WholeStageCodegen (2)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[10],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":10,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"25\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[9],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[3],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[3,4],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.scope":"{\"id\":\"27\",\"name\":\"collect\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"1","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":4,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":12,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"26\",\"name\":\"mapPartitionsInternal\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[11],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":11,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"21\",\"name\":\"WholeStageCodegen (2)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[10],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":10,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"25\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[9],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[3],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983967663,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.scope":"{\"id\":\"27\",\"name\":\"collect\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"1","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":4,"Stage Attempt ID":0,"Task Info":{"Task ID":19,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983967734,"Executor ID":"3","Host":"100.64.216.237","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":4,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":19,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983967734,"Executor ID":"3","Host":"100.64.216.237","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983967899,"Failed":false,"Killed":false,"Accumulables":[{"ID":146,"Name":"remote blocks read","Update":"10","Value":"10","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":147,"Name":"local blocks read","Update":"7","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":148,"Name":"remote bytes read","Update":"590","Value":"590","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":150,"Name":"local bytes read","Update":"413","Value":"413","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":151,"Name":"fetch wait time","Update":"0","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":152,"Name":"records read","Update":"17","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":161,"Name":"remote reqs duration","Update":"37","Value":"37","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":210,"Name":"duration","Update":"7","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":211,"Name":"number of output rows","Update":"1","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":214,"Name":"time in aggregation build","Update":"7","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":217,"Name":"internal.metrics.executorDeserializeTime","Update":18,"Value":18,"Internal":true,"Count Failed Values":true},{"ID":218,"Name":"internal.metrics.executorDeserializeCpuTime","Update":11921976,"Value":11921976,"Internal":true,"Count Failed Values":true},{"ID":219,"Name":"internal.metrics.executorRunTime","Update":137,"Value":137,"Internal":true,"Count Failed Values":true},{"ID":220,"Name":"internal.metrics.executorCpuTime","Update":71635215,"Value":71635215,"Internal":true,"Count Failed Values":true},{"ID":221,"Name":"internal.metrics.resultSize","Update":3995,"Value":3995,"Internal":true,"Count Failed Values":true},{"ID":228,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Update":10,"Value":10,"Internal":true,"Count Failed Values":true},{"ID":229,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Update":7,"Value":7,"Internal":true,"Count Failed Values":true},{"ID":230,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Update":590,"Value":590,"Internal":true,"Count Failed Values":true},{"ID":231,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":232,"Name":"internal.metrics.shuffle.read.localBytesRead","Update":413,"Value":413,"Internal":true,"Count Failed Values":true},{"ID":233,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":234,"Name":"internal.metrics.shuffle.read.recordsRead","Update":17,"Value":17,"Internal":true,"Count Failed Values":true},{"ID":235,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":236,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":237,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":238,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":239,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":240,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":241,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":242,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":243,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Update":37,"Value":37,"Internal":true,"Count Failed Values":true},{"ID":244,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Update":0,"Value":0,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":18,"Executor Deserialize CPU Time":11921976,"Executor Run Time":137,"Executor CPU Time":71635215,"Peak Execution Memory":0,"Result Size":3995,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":10,"Local Blocks Fetched":7,"Fetch Wait Time":0,"Remote Bytes Read":590,"Remote Bytes Read To Disk":0,"Local Bytes Read":413,"Total Records Read":17,"Remote Requests Duration":37,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":0,"Records Read":0},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":4,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":12,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"26\",\"name\":\"mapPartitionsInternal\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[11],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":11,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"21\",\"name\":\"WholeStageCodegen (2)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[10],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":10,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"25\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[9],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[3],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983967663,"Completion Time":1750983967901,"Accumulables":[{"ID":146,"Name":"remote blocks read","Value":"10","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":147,"Name":"local blocks read","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":148,"Name":"remote bytes read","Value":"590","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":150,"Name":"local bytes read","Value":"413","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":151,"Name":"fetch wait time","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":152,"Name":"records read","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":161,"Name":"remote reqs duration","Value":"37","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":210,"Name":"duration","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":211,"Name":"number of output rows","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":214,"Name":"time in aggregation build","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":217,"Name":"internal.metrics.executorDeserializeTime","Value":18,"Internal":true,"Count Failed Values":true},{"ID":218,"Name":"internal.metrics.executorDeserializeCpuTime","Value":11921976,"Internal":true,"Count Failed Values":true},{"ID":219,"Name":"internal.metrics.executorRunTime","Value":137,"Internal":true,"Count Failed Values":true},{"ID":220,"Name":"internal.metrics.executorCpuTime","Value":71635215,"Internal":true,"Count Failed Values":true},{"ID":221,"Name":"internal.metrics.resultSize","Value":3995,"Internal":true,"Count Failed Values":true},{"ID":228,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Value":10,"Internal":true,"Count Failed Values":true},{"ID":229,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Value":7,"Internal":true,"Count Failed Values":true},{"ID":230,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Value":590,"Internal":true,"Count Failed Values":true},{"ID":231,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Value":0,"Internal":true,"Count Failed Values":true},{"ID":232,"Name":"internal.metrics.shuffle.read.localBytesRead","Value":413,"Internal":true,"Count Failed Values":true},{"ID":233,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Value":0,"Internal":true,"Count Failed Values":true},{"ID":234,"Name":"internal.metrics.shuffle.read.recordsRead","Value":17,"Internal":true,"Count Failed Values":true},{"ID":235,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Value":0,"Internal":true,"Count Failed Values":true},{"ID":236,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Value":0,"Internal":true,"Count Failed Values":true},{"ID":237,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":238,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":239,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":240,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":241,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Value":0,"Internal":true,"Count Failed Values":true},{"ID":242,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Value":0,"Internal":true,"Count Failed Values":true},{"ID":243,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Value":37,"Internal":true,"Count Failed Values":true},{"ID":244,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Value":0,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":3,"Completion Time":1750983967901,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionEnd","executionId":1,"time":1750983967903,"errorMessage":""} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart","executionId":2,"rootExecutionId":2,"description":"parquet at NativeMethodAccessorImpl.java:0","details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (6)\n+- Execute InsertIntoHadoopFsRelationCommand (5)\n +- WriteFiles (4)\n +- Exchange (3)\n +- Project (2)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct\n\n(2) Project\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 00:25:56.642038 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(3) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=65]\n\n(4) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(5) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(6) AdaptiveSparkPlan\nOutput: []\nArguments: isFinalPlan=false\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=false","children":[{"nodeName":"Execute InsertIntoHadoopFsRelationCommand","simpleString":"Execute InsertIntoHadoopFsRelationCommand s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]","children":[{"nodeName":"WriteFiles","simpleString":"WriteFiles","children":[{"nodeName":"Exchange","simpleString":"Exchange RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=65]","children":[{"nodeName":"Project","simpleString":"Project [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 00:25:56.642038 AS current_date#38]","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [VendorID#0L,tpep_pickup_datetime#1,tpep_dropoff_datetime#2,passenger_count#3,trip_distance#4,RatecodeID#5,store_and_fwd_flag#6,PULocationID#7L,DOLocationID#8L,payment_type#9L,fare_amount#10,extra#11,mta_tax#12,tip_amount#13,tolls_amount#14,improvement_surcharge#15,total_amount#16,congestion_surcharge#17,airport_fee#18] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":282,"metricType":"sum"},{"name":"scan time","accumulatorId":281,"metricType":"timing"},{"name":"metadata time","accumulatorId":283,"metricType":"timing"},{"name":"size of files read","accumulatorId":284,"metricType":"size"},{"name":"number of output rows","accumulatorId":280,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":278,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":272,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":279,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":273,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":270,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":267,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":276,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":269,"metricType":"sum"},{"name":"records read","accumulatorId":266,"metricType":"sum"},{"name":"local bytes read","accumulatorId":264,"metricType":"size"},{"name":"fetch wait time","accumulatorId":265,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":262,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":268,"metricType":"sum"},{"name":"local blocks read","accumulatorId":261,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":271,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":260,"metricType":"sum"},{"name":"data size","accumulatorId":258,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":274,"metricType":"size"},{"name":"number of partitions","accumulatorId":259,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":275,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":263,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":277,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"task commit time","accumulatorId":256,"metricType":"timing"},{"name":"number of written files","accumulatorId":252,"metricType":"sum"},{"name":"job commit time","accumulatorId":257,"metricType":"timing"},{"name":"number of output rows","accumulatorId":254,"metricType":"sum"},{"name":"number of dynamic part","accumulatorId":255,"metricType":"sum"},{"name":"written output","accumulatorId":253,"metricType":"size"}]}],"metadata":{},"metrics":[]},"time":1750983967966,"modifiedConfigs":{},"jobTags":[]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate","executionId":2,"physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (12)\n+- == Current Plan ==\n Execute InsertIntoHadoopFsRelationCommand (7)\n +- WriteFiles (6)\n +- ShuffleQueryStage (5)\n +- Exchange (4)\n +- * Project (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n+- == Initial Plan ==\n Execute InsertIntoHadoopFsRelationCommand (11)\n +- WriteFiles (10)\n +- Exchange (9)\n +- Project (8)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct\n\n(2) ColumnarToRow [codegen id : 1]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(3) Project [codegen id : 1]\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 00:25:56.642038 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(4) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=80]\n\n(5) ShuffleQueryStage\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: 0\n\n(6) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(7) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(8) Project\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 00:25:56.642038 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(9) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=65]\n\n(10) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(11) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(12) AdaptiveSparkPlan\nOutput: []\nArguments: isFinalPlan=false\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=false","children":[{"nodeName":"Execute InsertIntoHadoopFsRelationCommand","simpleString":"Execute InsertIntoHadoopFsRelationCommand s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]","children":[{"nodeName":"WriteFiles","simpleString":"WriteFiles","children":[{"nodeName":"ShuffleQueryStage","simpleString":"ShuffleQueryStage 0","children":[{"nodeName":"Exchange","simpleString":"Exchange RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=80]","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"Project","simpleString":"Project [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 00:25:56.642038 AS current_date#38]","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [VendorID#0L,tpep_pickup_datetime#1,tpep_dropoff_datetime#2,passenger_count#3,trip_distance#4,RatecodeID#5,store_and_fwd_flag#6,PULocationID#7L,DOLocationID#8L,payment_type#9L,fare_amount#10,extra#11,mta_tax#12,tip_amount#13,tolls_amount#14,improvement_surcharge#15,total_amount#16,congestion_surcharge#17,airport_fee#18] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":282,"metricType":"sum"},{"name":"scan time","accumulatorId":281,"metricType":"timing"},{"name":"metadata time","accumulatorId":283,"metricType":"timing"},{"name":"size of files read","accumulatorId":284,"metricType":"size"},{"name":"number of output rows","accumulatorId":280,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":308,"metricType":"sum"},{"name":"number of input batches","accumulatorId":309,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":307,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":305,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":299,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":306,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":300,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":297,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":294,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":303,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":296,"metricType":"sum"},{"name":"records read","accumulatorId":293,"metricType":"sum"},{"name":"local bytes read","accumulatorId":291,"metricType":"size"},{"name":"fetch wait time","accumulatorId":292,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":289,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":295,"metricType":"sum"},{"name":"local blocks read","accumulatorId":288,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":298,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":287,"metricType":"sum"},{"name":"data size","accumulatorId":285,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":301,"metricType":"size"},{"name":"number of partitions","accumulatorId":286,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":302,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":290,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":304,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"task commit time","accumulatorId":256,"metricType":"timing"},{"name":"number of written files","accumulatorId":252,"metricType":"sum"},{"name":"job commit time","accumulatorId":257,"metricType":"timing"},{"name":"number of output rows","accumulatorId":254,"metricType":"sum"},{"name":"number of dynamic part","accumulatorId":255,"metricType":"sum"},{"name":"written output","accumulatorId":253,"metricType":"size"}]}],"metadata":{},"metrics":[]}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":2,"accumUpdates":[[282,51],[283,0],[284,1945137399]]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":2,"accumUpdates":[[286,2]]} +{"Event":"SparkListenerJobStart","Job ID":4,"Submission Time":1750983968128,"Stage Infos":[{"Stage ID":5,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":17,"RDD Info":[{"RDD ID":17,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[16],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":16,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[15],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":15,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"36\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[14],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":14,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[13],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":13,"Name":"FileScanRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[5],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"2","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"2","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":5,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":17,"RDD Info":[{"RDD ID":17,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[16],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":16,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[15],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":15,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"36\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[14],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":14,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[13],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":13,"Name":"FileScanRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983968131,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"2","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"2","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":20,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983968139,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":21,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750983968140,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":22,"Index":2,"Attempt":0,"Partition ID":2,"Launch Time":1750983968140,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":23,"Index":3,"Attempt":0,"Partition ID":3,"Launch Time":1750983968140,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":24,"Index":4,"Attempt":0,"Partition ID":4,"Launch Time":1750983985001,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":22,"Index":2,"Attempt":0,"Partition ID":2,"Launch Time":1750983968140,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983985002,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3159","Value":"3159","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"1299239496","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"316901240","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"300151938","Value":"300151938","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"7225","Value":"7225","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"1806","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":15,"Value":15,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":9255877,"Value":9255877,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16836,"Value":16836,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":14874484338,"Value":14874484338,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2079,"Value":2079,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":54,"Value":54,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":2,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":316901240,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":7391793,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":300151938,"Value":300151938,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":114444762,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":7391793,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2113392264,"JVMOffHeapMemory":119347528,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1490613,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612103029,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12655787,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10242043904,"ProcessTreeJVMRSSMemory":3120824320,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":13,"MinorGCTime":79,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":79},"Task Metrics":{"Executor Deserialize Time":15,"Executor Deserialize CPU Time":9255877,"Executor Run Time":16836,"Executor CPU Time":14874484338,"Peak Execution Memory":0,"Result Size":2079,"JVM GC Time":54,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":300151938,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":25,"Index":5,"Attempt":0,"Partition ID":5,"Launch Time":1750983985222,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":20,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750983968139,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983985223,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3172","Value":"6331","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"2598478992","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"633802480","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"304712736","Value":"604864674","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"7162","Value":"14387","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"3612","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":85,"Value":100,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":17874103,"Value":27129980,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16989,"Value":33825,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":15536794336,"Value":30411278674,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":4113,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":49,"Value":103,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":633802480,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":14783586,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":304712736,"Value":604864674,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":228889524,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":14783586,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":1999967792,"JVMOffHeapMemory":111721176,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10238988288,"ProcessTreeJVMRSSMemory":2777853952,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":11,"MinorGCTime":78,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":78},"Task Metrics":{"Executor Deserialize Time":85,"Executor Deserialize CPU Time":17874103,"Executor Run Time":16989,"Executor CPU Time":15536794336,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":49,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":304712736,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":26,"Index":6,"Attempt":0,"Partition ID":6,"Launch Time":1750983985725,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":21,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750983968140,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983985726,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3740","Value":"10071","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"3897718488","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"950703720","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"307133780","Value":"911998454","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"7679","Value":"22066","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"5418","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":16,"Value":116,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":10028892,"Value":37158872,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":17560,"Value":51385,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":15482399834,"Value":45893678508,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":6149,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":43,"Value":146,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":950703720,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":22175379,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":307133780,"Value":911998454,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":343334286,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":22175379,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2402648944,"JVMOffHeapMemory":115802296,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16848975,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10243186688,"ProcessTreeJVMRSSMemory":2942275584,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":10,"MinorGCTime":70,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":70},"Task Metrics":{"Executor Deserialize Time":16,"Executor Deserialize CPU Time":10028892,"Executor Run Time":17560,"Executor CPU Time":15482399834,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":43,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":307133780,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":27,"Index":7,"Attempt":0,"Partition ID":7,"Launch Time":1750983985948,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":23,"Index":3,"Attempt":0,"Partition ID":3,"Launch Time":1750983968140,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750983985949,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"4102","Value":"14173","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"5196957984","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"1267604960","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"304614037","Value":"1216612491","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"7949","Value":"30015","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"7224","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":82,"Value":198,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":13453257,"Value":50612129,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":17717,"Value":69102,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":15329711362,"Value":61223389870,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":8183,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":45,"Value":191,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":1267604960,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":29567172,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":304614037,"Value":1216612491,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":457779048,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":29567172,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2085798272,"JVMOffHeapMemory":112242520,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10171875328,"ProcessTreeJVMRSSMemory":2642079744,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":10,"MinorGCTime":75,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":75},"Task Metrics":{"Executor Deserialize Time":82,"Executor Deserialize CPU Time":13453257,"Executor Run Time":17717,"Executor CPU Time":15329711362,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":45,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":304614037,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":28,"Index":8,"Attempt":0,"Partition ID":8,"Launch Time":1750984000325,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":25,"Index":5,"Attempt":0,"Partition ID":5,"Launch Time":1750983985222,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984000326,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2619","Value":"16792","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"6496197480","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"1584506200","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"308193923","Value":"1524806414","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5614","Value":"35629","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"9030","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":201,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3482510,"Value":54094639,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15090,"Value":84192,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13540205739,"Value":74763595609,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2077,"Value":10260,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":56,"Value":247,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":4,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":1584506200,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":36958965,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":308193923,"Value":1524806414,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":572223810,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":36958965,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2171052440,"JVMOffHeapMemory":114081112,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10238988288,"ProcessTreeJVMRSSMemory":3085496320,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":34,"MinorGCTime":132,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":132},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3482510,"Executor Run Time":15090,"Executor CPU Time":13540205739,"Peak Execution Memory":0,"Result Size":2077,"JVM GC Time":56,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":308193923,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":29,"Index":9,"Attempt":0,"Partition ID":9,"Launch Time":1750984000644,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":24,"Index":4,"Attempt":0,"Partition ID":4,"Launch Time":1750983985001,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984000645,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3317","Value":"20109","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"7795436976","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"1901407440","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"301290471","Value":"1826096885","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6169","Value":"41798","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"10836","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":203,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2544503,"Value":56639142,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15633,"Value":99825,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13310656811,"Value":88074252420,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2079,"Value":12339,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":50,"Value":297,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":6,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":1901407440,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":44350758,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":301290471,"Value":1826096885,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":686668572,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":44350758,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2112970368,"JVMOffHeapMemory":117475592,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1490613,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612103029,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12655787,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10242043904,"ProcessTreeJVMRSSMemory":3164770304,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":36,"MinorGCTime":130,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":130},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2544503,"Executor Run Time":15633,"Executor CPU Time":13310656811,"Peak Execution Memory":0,"Result Size":2079,"JVM GC Time":50,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":301290471,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":30,"Index":10,"Attempt":0,"Partition ID":10,"Launch Time":1750984001623,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":27,"Index":7,"Attempt":0,"Partition ID":7,"Launch Time":1750983985948,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984001624,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2739","Value":"22848","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"9094676472","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"2218308680","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"310630748","Value":"2136727633","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6153","Value":"47951","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"12642","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":206,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3378610,"Value":60017752,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15665,"Value":115490,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":14065608393,"Value":102139860813,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":14373,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":10,"Value":307,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":2218308680,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":51742551,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":310630748,"Value":2136727633,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":801113334,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":51742551,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3483541984,"JVMOffHeapMemory":114642928,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10238984192,"ProcessTreeJVMRSSMemory":3885121536,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":13,"MinorGCTime":85,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":85},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3378610,"Executor Run Time":15665,"Executor CPU Time":14065608393,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":10,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":310630748,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":31,"Index":11,"Attempt":0,"Partition ID":11,"Launch Time":1750984001909,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":26,"Index":6,"Attempt":0,"Partition ID":6,"Launch Time":1750983985725,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984001910,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3188","Value":"26036","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"10393915968","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"2535209920","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"316344291","Value":"2453071924","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6539","Value":"54490","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"14448","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":209,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3261660,"Value":63279412,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16173,"Value":131663,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":14192907235,"Value":116332768048,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":16409,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":2,"Value":309,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":2535209920,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":59134344,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":316344291,"Value":2453071924,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":915558096,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":59134344,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":4208296816,"JVMOffHeapMemory":117345872,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16848975,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10243186688,"ProcessTreeJVMRSSMemory":4461654016,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":10,"MinorGCTime":70,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":70},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3261660,"Executor Run Time":16173,"Executor CPU Time":14192907235,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":2,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":316344291,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":32,"Index":12,"Attempt":0,"Partition ID":12,"Launch Time":1750984015391,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":29,"Index":9,"Attempt":0,"Partition ID":9,"Launch Time":1750984000644,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984015392,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2689","Value":"28725","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"11693155464","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"2852111160","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"297729827","Value":"2750801751","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5462","Value":"59952","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"16254","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":211,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2541019,"Value":65820431,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14736,"Value":146399,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13025798192,"Value":129358566240,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2079,"Value":18488,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":51,"Value":360,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":8,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":2852111160,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":66526137,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":297729827,"Value":2750801751,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1030002858,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":66526137,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2143723296,"JVMOffHeapMemory":118471128,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1490613,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612103029,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12655787,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10242043904,"ProcessTreeJVMRSSMemory":3173888000,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":59,"MinorGCTime":180,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":180},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2541019,"Executor Run Time":14736,"Executor CPU Time":13025798192,"Peak Execution Memory":0,"Result Size":2079,"JVM GC Time":51,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":297729827,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":33,"Index":13,"Attempt":0,"Partition ID":13,"Launch Time":1750984015909,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":28,"Index":8,"Attempt":0,"Partition ID":8,"Launch Time":1750984000325,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984015910,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3400","Value":"32125","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"12992394960","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"3169012400","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"300660967","Value":"3051462718","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6285","Value":"66237","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"18060","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":214,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3115541,"Value":68935972,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15572,"Value":161971,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13183069114,"Value":142541635354,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2077,"Value":20565,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":59,"Value":419,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":10,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":3169012400,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":73917930,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":300660967,"Value":3051462718,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1144447620,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":73917930,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2077234928,"JVMOffHeapMemory":115214600,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10238988288,"ProcessTreeJVMRSSMemory":3245383680,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":61,"MinorGCTime":192,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":192},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3115541,"Executor Run Time":15572,"Executor CPU Time":13183069114,"Peak Execution Memory":0,"Result Size":2077,"JVM GC Time":59,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":300660967,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":34,"Index":14,"Attempt":0,"Partition ID":14,"Launch Time":1750984017059,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":31,"Index":11,"Attempt":0,"Partition ID":11,"Launch Time":1750984001909,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984017060,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2941","Value":"35066","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"14291634456","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"3485913640","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"313148923","Value":"3364611641","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5558","Value":"71795","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"19866","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":216,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2577761,"Value":71513733,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15141,"Value":177112,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13242834777,"Value":155784470131,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":22601,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":5,"Value":424,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":3485913640,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":81309723,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":313148923,"Value":3364611641,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1258892382,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":81309723,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3668272480,"JVMOffHeapMemory":115251848,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16848975,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10243186688,"ProcessTreeJVMRSSMemory":4529758208,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":13,"MinorGCTime":77,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":77},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2577761,"Executor Run Time":15141,"Executor CPU Time":13242834777,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":5,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":313148923,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":35,"Index":15,"Attempt":0,"Partition ID":15,"Launch Time":1750984017642,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":30,"Index":10,"Attempt":0,"Partition ID":10,"Launch Time":1750984001623,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984017643,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3573","Value":"38639","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"15590873952","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"3802814880","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"326765098","Value":"3691376739","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6611","Value":"78406","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"21672","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":219,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3247257,"Value":74760990,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16009,"Value":193121,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13596327482,"Value":169380797613,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":24635,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":10,"Value":434,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":3802814880,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":88701516,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":326765098,"Value":3691376739,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1373337144,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":88701516,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2777583120,"JVMOffHeapMemory":115656072,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10238984192,"ProcessTreeJVMRSSMemory":4602392576,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":16,"MinorGCTime":95,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":95},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3247257,"Executor Run Time":16009,"Executor CPU Time":13596327482,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":10,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":326765098,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":36,"Index":16,"Attempt":0,"Partition ID":16,"Launch Time":1750984030478,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":32,"Index":12,"Attempt":0,"Partition ID":12,"Launch Time":1750984015391,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984030479,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2988","Value":"41627","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"16890113448","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"4119716120","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"303866776","Value":"3995243515","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5748","Value":"84154","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"23478","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":221,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2260274,"Value":77021264,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15075,"Value":208196,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13057237257,"Value":182438034870,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2079,"Value":26714,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":49,"Value":483,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":12,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":4119716120,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":96093309,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":303866776,"Value":3995243515,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1487781906,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":96093309,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2103793288,"JVMOffHeapMemory":119211544,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1490613,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612103029,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12655787,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10242043904,"ProcessTreeJVMRSSMemory":3174260736,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":82,"MinorGCTime":230,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":230},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2260274,"Executor Run Time":15075,"Executor CPU Time":13057237257,"Peak Execution Memory":0,"Result Size":2079,"JVM GC Time":49,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":303866776,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":33,"Index":13,"Attempt":0,"Partition ID":13,"Launch Time":1750984015909,"Executor ID":"2","Host":"100.64.162.9","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984031175,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3123","Value":"44750","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"18189352944","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"4436617360","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"302530375","Value":"4297773890","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5896","Value":"90050","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"25284","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":224,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3141552,"Value":80162816,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15254,"Value":223450,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13132105345,"Value":195570140215,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2077,"Value":28791,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":52,"Value":535,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":14,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":4436617360,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":103485102,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":302530375,"Value":4297773890,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1602226668,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":103485102,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2146690800,"JVMOffHeapMemory":116176056,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10238988288,"ProcessTreeJVMRSSMemory":3249741824,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":86,"MinorGCTime":243,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":243},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3141552,"Executor Run Time":15254,"Executor CPU Time":13132105345,"Peak Execution Memory":0,"Result Size":2077,"JVM GC Time":52,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":302530375,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":34,"Index":14,"Attempt":0,"Partition ID":14,"Launch Time":1750984017059,"Executor ID":"1","Host":"100.64.221.138","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984033070,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3775","Value":"48525","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"19488592440","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"4753518600","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"314774457","Value":"4612548347","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6413","Value":"96463","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"27090","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":226,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2604985,"Value":82767801,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16002,"Value":239452,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13301782422,"Value":208871922637,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":30827,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":8,"Value":543,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":4753518600,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":110876895,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":314774457,"Value":4612548347,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1716671430,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":110876895,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2965690248,"JVMOffHeapMemory":116167072,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16848975,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10243186688,"ProcessTreeJVMRSSMemory":4566544384,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":16,"MinorGCTime":85,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":85},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2604985,"Executor Run Time":16002,"Executor CPU Time":13301782422,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":8,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":314774457,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":35,"Index":15,"Attempt":0,"Partition ID":15,"Launch Time":1750984017642,"Executor ID":"4","Host":"100.64.138.5","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984034475,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3163","Value":"51688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"20787831936","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"5070419840","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"325902136","Value":"4938450483","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6141","Value":"102604","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"28896","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":228,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2912362,"Value":85680163,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16823,"Value":256275,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":14778063455,"Value":223649986092,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":32861,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":7,"Value":550,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":5070419840,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":118268688,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":325902136,"Value":4938450483,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1831116192,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":118268688,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3423505936,"JVMOffHeapMemory":116099424,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":994380,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611606796,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10238984192,"ProcessTreeJVMRSSMemory":4638560256,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":19,"MinorGCTime":102,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":102},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2912362,"Executor Run Time":16823,"Executor CPU Time":14778063455,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":7,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":325902136,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":36,"Index":16,"Attempt":0,"Partition ID":16,"Launch Time":1750984030478,"Executor ID":"3","Host":"100.64.216.237","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984045590,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3454","Value":"55142","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"22087071432","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316901240","Value":"5387321080","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"303168742","Value":"5241619225","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6183","Value":"108787","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"30702","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":230,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2525172,"Value":88205335,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15101,"Value":271376,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":12655052060,"Value":236305038152,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2079,"Value":34940,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":50,"Value":600,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":16,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316901240,"Value":5387321080,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":125660481,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":303168742,"Value":5241619225,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1945560954,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":125660481,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2133403784,"JVMOffHeapMemory":119905064,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1490613,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612103029,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12655787,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10242043904,"ProcessTreeJVMRSSMemory":3191775232,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":106,"MinorGCTime":279,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":279},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2525172,"Executor Run Time":15101,"Executor CPU Time":12655052060,"Peak Execution Memory":0,"Result Size":2079,"JVM GC Time":50,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316901240,"Shuffle Write Time":303168742,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":5,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":17,"RDD Info":[{"RDD ID":17,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[16],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":16,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[15],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":15,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"36\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[14],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":14,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[13],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":13,"Name":"FileScanRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750983968131,"Completion Time":1750984045591,"Accumulables":[{"ID":280,"Name":"number of output rows","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Value":"55142","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Value":"22087071432","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Value":"5387321080","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Value":"5241619225","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Value":"108787","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Value":"30702","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Value":230,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Value":88205335,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Value":271376,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Value":236305038152,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Value":34940,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Value":600,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Value":16,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Value":5387321080,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Value":125660481,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Value":5241619225,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Value":1945560954,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Value":125660481,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":4,"Completion Time":1750984045592,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate","executionId":2,"physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (12)\n+- == Final Plan ==\n Execute InsertIntoHadoopFsRelationCommand (7)\n +- WriteFiles (6)\n +- ShuffleQueryStage (5), Statistics(sizeInBytes=20.6 GiB, rowCount=1.26E+8)\n +- Exchange (4)\n +- * Project (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n+- == Initial Plan ==\n Execute InsertIntoHadoopFsRelationCommand (11)\n +- WriteFiles (10)\n +- Exchange (9)\n +- Project (8)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct\n\n(2) ColumnarToRow [codegen id : 1]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(3) Project [codegen id : 1]\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 00:25:56.642038 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(4) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=80]\n\n(5) ShuffleQueryStage\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: 0\n\n(6) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(7) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(8) Project\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 00:25:56.642038 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(9) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=65]\n\n(10) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(11) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(12) AdaptiveSparkPlan\nOutput: []\nArguments: isFinalPlan=true\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=true","children":[{"nodeName":"Execute InsertIntoHadoopFsRelationCommand","simpleString":"Execute InsertIntoHadoopFsRelationCommand s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]","children":[{"nodeName":"WriteFiles","simpleString":"WriteFiles","children":[{"nodeName":"ShuffleQueryStage","simpleString":"ShuffleQueryStage 0","children":[{"nodeName":"Exchange","simpleString":"Exchange RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=80]","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"Project","simpleString":"Project [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 00:25:56.642038 AS current_date#38]","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [VendorID#0L,tpep_pickup_datetime#1,tpep_dropoff_datetime#2,passenger_count#3,trip_distance#4,RatecodeID#5,store_and_fwd_flag#6,PULocationID#7L,DOLocationID#8L,payment_type#9L,fare_amount#10,extra#11,mta_tax#12,tip_amount#13,tolls_amount#14,improvement_surcharge#15,total_amount#16,congestion_surcharge#17,airport_fee#18] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":282,"metricType":"sum"},{"name":"scan time","accumulatorId":281,"metricType":"timing"},{"name":"metadata time","accumulatorId":283,"metricType":"timing"},{"name":"size of files read","accumulatorId":284,"metricType":"size"},{"name":"number of output rows","accumulatorId":280,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":308,"metricType":"sum"},{"name":"number of input batches","accumulatorId":309,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":307,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":305,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":299,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":306,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":300,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":297,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":294,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":303,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":296,"metricType":"sum"},{"name":"records read","accumulatorId":293,"metricType":"sum"},{"name":"local bytes read","accumulatorId":291,"metricType":"size"},{"name":"fetch wait time","accumulatorId":292,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":289,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":295,"metricType":"sum"},{"name":"local blocks read","accumulatorId":288,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":298,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":287,"metricType":"sum"},{"name":"data size","accumulatorId":285,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":301,"metricType":"size"},{"name":"number of partitions","accumulatorId":286,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":302,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":290,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":304,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"task commit time","accumulatorId":349,"metricType":"timing"},{"name":"number of written files","accumulatorId":345,"metricType":"sum"},{"name":"job commit time","accumulatorId":350,"metricType":"timing"},{"name":"number of output rows","accumulatorId":347,"metricType":"sum"},{"name":"number of dynamic part","accumulatorId":348,"metricType":"sum"},{"name":"written output","accumulatorId":346,"metricType":"size"}]}],"metadata":{},"metrics":[]}} +{"Event":"SparkListenerJobStart","Job ID":5,"Submission Time":1750984046008,"Stage Infos":[{"Stage ID":6,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":17,"RDD Info":[{"RDD ID":17,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[16],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":16,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[15],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":15,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"36\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[14],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":14,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[13],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":13,"Name":"FileScanRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":17,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},{"Stage ID":7,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":2,"RDD Info":[{"RDD ID":19,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"41\",\"name\":\"WriteFiles\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[18],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":18,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"43\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[17],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[6],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[6,7],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"2","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"2","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":7,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":2,"RDD Info":[{"RDD ID":19,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"41\",\"name\":\"WriteFiles\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[18],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":18,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"43\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[17],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[6],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750984046009,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750983884577","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_00_24_44","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.122.12","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-3a9e8397aec45f6f-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-110be3a8424d4a2789cb88134418217b","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"2","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.122.12","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750983883971","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"1ffa6acb-7695-4ec6-8790-c2f8a4f761f1","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"2","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":7,"Stage Attempt ID":0,"Task Info":{"Task ID":37,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750984046038,"Executor ID":"4","Host":"100.64.138.5","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":7,"Stage Attempt ID":0,"Task Info":{"Task ID":38,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750984046039,"Executor ID":"3","Host":"100.64.216.237","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":7,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":38,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750984046039,"Executor ID":"3","Host":"100.64.216.237","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984170092,"Failed":false,"Killed":false,"Accumulables":[{"ID":287,"Name":"remote blocks read","Update":"12","Value":"12","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":288,"Name":"local blocks read","Update":"5","Value":"5","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":289,"Name":"remote bytes read","Update":"1901407860","Value":"1901407860","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":291,"Name":"local bytes read","Update":"792254150","Value":"792254150","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":292,"Name":"fetch wait time","Update":"0","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":293,"Name":"records read","Update":"62830237","Value":"62830237","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":302,"Name":"remote reqs duration","Update":"1682","Value":"1682","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":349,"Name":"task commit time","Update":"2214","Value":"2214","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":351,"Name":"internal.metrics.executorDeserializeTime","Update":45,"Value":45,"Internal":true,"Count Failed Values":true},{"ID":352,"Name":"internal.metrics.executorDeserializeCpuTime","Update":37593188,"Value":37593188,"Internal":true,"Count Failed Values":true},{"ID":353,"Name":"internal.metrics.executorRunTime","Update":123995,"Value":123995,"Internal":true,"Count Failed Values":true},{"ID":354,"Name":"internal.metrics.executorCpuTime","Update":120789382453,"Value":120789382453,"Internal":true,"Count Failed Values":true},{"ID":355,"Name":"internal.metrics.resultSize","Update":4826,"Value":4826,"Internal":true,"Count Failed Values":true},{"ID":356,"Name":"internal.metrics.jvmGCTime","Update":157,"Value":157,"Internal":true,"Count Failed Values":true},{"ID":357,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":2,"Internal":true,"Count Failed Values":true},{"ID":362,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Update":12,"Value":12,"Internal":true,"Count Failed Values":true},{"ID":363,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Update":5,"Value":5,"Internal":true,"Count Failed Values":true},{"ID":364,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Update":1901407860,"Value":1901407860,"Internal":true,"Count Failed Values":true},{"ID":365,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":366,"Name":"internal.metrics.shuffle.read.localBytesRead","Update":792254150,"Value":792254150,"Internal":true,"Count Failed Values":true},{"ID":367,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":368,"Name":"internal.metrics.shuffle.read.recordsRead","Update":62830237,"Value":62830237,"Internal":true,"Count Failed Values":true},{"ID":369,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":370,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":371,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":372,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":373,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":374,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":375,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":376,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":377,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Update":1682,"Value":1682,"Internal":true,"Count Failed Values":true},{"ID":378,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":384,"Name":"internal.metrics.output.bytesWritten","Update":1351323194,"Value":1351323194,"Internal":true,"Count Failed Values":true},{"ID":385,"Name":"internal.metrics.output.recordsWritten","Update":62830237,"Value":62830237,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3603929104,"JVMOffHeapMemory":134197400,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1835751,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1835751,"OffHeapUnifiedMemory":0,"DirectPoolMemory":330459240,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10580037632,"ProcessTreeJVMRSSMemory":5095907328,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":125,"MinorGCTime":432,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":432},"Task Metrics":{"Executor Deserialize Time":45,"Executor Deserialize CPU Time":37593188,"Executor Run Time":123995,"Executor CPU Time":120789382453,"Peak Execution Memory":0,"Result Size":4826,"JVM GC Time":157,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":12,"Local Blocks Fetched":5,"Fetch Wait Time":0,"Remote Bytes Read":1901407860,"Remote Bytes Read To Disk":0,"Local Bytes Read":792254150,"Total Records Read":62830237,"Remote Requests Duration":1682,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":0,"Records Read":0},"Output Metrics":{"Bytes Written":1351323194,"Records Written":62830237},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":7,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":37,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750984046038,"Executor ID":"4","Host":"100.64.138.5","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750984182934,"Failed":false,"Killed":false,"Accumulables":[{"ID":287,"Name":"remote blocks read","Update":"13","Value":"25","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":288,"Name":"local blocks read","Update":"4","Value":"9","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":289,"Name":"remote bytes read","Update":"2059856590","Value":"3961264450","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":291,"Name":"local bytes read","Update":"633802480","Value":"1426056630","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":292,"Name":"fetch wait time","Update":"0","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":293,"Name":"records read","Update":"62830244","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":302,"Name":"remote reqs duration","Update":"1629","Value":"3311","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":349,"Name":"task commit time","Update":"2819","Value":"5033","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":351,"Name":"internal.metrics.executorDeserializeTime","Update":55,"Value":100,"Internal":true,"Count Failed Values":true},{"ID":352,"Name":"internal.metrics.executorDeserializeCpuTime","Update":48630909,"Value":86224097,"Internal":true,"Count Failed Values":true},{"ID":353,"Name":"internal.metrics.executorRunTime","Update":136830,"Value":260825,"Internal":true,"Count Failed Values":true},{"ID":354,"Name":"internal.metrics.executorCpuTime","Update":133145802304,"Value":253935184757,"Internal":true,"Count Failed Values":true},{"ID":355,"Name":"internal.metrics.resultSize","Update":4826,"Value":9652,"Internal":true,"Count Failed Values":true},{"ID":356,"Name":"internal.metrics.jvmGCTime","Update":96,"Value":253,"Internal":true,"Count Failed Values":true},{"ID":357,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":4,"Internal":true,"Count Failed Values":true},{"ID":362,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Update":13,"Value":25,"Internal":true,"Count Failed Values":true},{"ID":363,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Update":4,"Value":9,"Internal":true,"Count Failed Values":true},{"ID":364,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Update":2059856590,"Value":3961264450,"Internal":true,"Count Failed Values":true},{"ID":365,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":366,"Name":"internal.metrics.shuffle.read.localBytesRead","Update":633802480,"Value":1426056630,"Internal":true,"Count Failed Values":true},{"ID":367,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":368,"Name":"internal.metrics.shuffle.read.recordsRead","Update":62830244,"Value":125660481,"Internal":true,"Count Failed Values":true},{"ID":369,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":370,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":371,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":372,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":373,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":374,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":375,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":376,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":377,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Update":1629,"Value":3311,"Internal":true,"Count Failed Values":true},{"ID":378,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":384,"Name":"internal.metrics.output.bytesWritten","Update":1351572967,"Value":2702896161,"Internal":true,"Count Failed Values":true},{"ID":385,"Name":"internal.metrics.output.recordsWritten","Update":62830244,"Value":125660481,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2764891600,"JVMOffHeapMemory":130704632,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1339518,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1339518,"OffHeapUnifiedMemory":0,"DirectPoolMemory":330378149,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10580033536,"ProcessTreeJVMRSSMemory":5133750272,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":33,"MinorGCTime":198,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":198},"Task Metrics":{"Executor Deserialize Time":55,"Executor Deserialize CPU Time":48630909,"Executor Run Time":136830,"Executor CPU Time":133145802304,"Peak Execution Memory":0,"Result Size":4826,"JVM GC Time":96,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":13,"Local Blocks Fetched":4,"Fetch Wait Time":0,"Remote Bytes Read":2059856590,"Remote Bytes Read To Disk":0,"Local Bytes Read":633802480,"Total Records Read":62830244,"Remote Requests Duration":1629,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":0,"Records Read":0},"Output Metrics":{"Bytes Written":1351572967,"Records Written":62830244},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":7,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":2,"RDD Info":[{"RDD ID":19,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"41\",\"name\":\"WriteFiles\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[18],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":18,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"43\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[17],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[6],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750984046009,"Completion Time":1750984182935,"Accumulables":[{"ID":287,"Name":"remote blocks read","Value":"25","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":288,"Name":"local blocks read","Value":"9","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":289,"Name":"remote bytes read","Value":"3961264450","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":291,"Name":"local bytes read","Value":"1426056630","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":292,"Name":"fetch wait time","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":293,"Name":"records read","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":302,"Name":"remote reqs duration","Value":"3311","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":349,"Name":"task commit time","Value":"5033","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":351,"Name":"internal.metrics.executorDeserializeTime","Value":100,"Internal":true,"Count Failed Values":true},{"ID":352,"Name":"internal.metrics.executorDeserializeCpuTime","Value":86224097,"Internal":true,"Count Failed Values":true},{"ID":353,"Name":"internal.metrics.executorRunTime","Value":260825,"Internal":true,"Count Failed Values":true},{"ID":354,"Name":"internal.metrics.executorCpuTime","Value":253935184757,"Internal":true,"Count Failed Values":true},{"ID":355,"Name":"internal.metrics.resultSize","Value":9652,"Internal":true,"Count Failed Values":true},{"ID":356,"Name":"internal.metrics.jvmGCTime","Value":253,"Internal":true,"Count Failed Values":true},{"ID":357,"Name":"internal.metrics.resultSerializationTime","Value":4,"Internal":true,"Count Failed Values":true},{"ID":362,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Value":25,"Internal":true,"Count Failed Values":true},{"ID":363,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Value":9,"Internal":true,"Count Failed Values":true},{"ID":364,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Value":3961264450,"Internal":true,"Count Failed Values":true},{"ID":365,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Value":0,"Internal":true,"Count Failed Values":true},{"ID":366,"Name":"internal.metrics.shuffle.read.localBytesRead","Value":1426056630,"Internal":true,"Count Failed Values":true},{"ID":367,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Value":0,"Internal":true,"Count Failed Values":true},{"ID":368,"Name":"internal.metrics.shuffle.read.recordsRead","Value":125660481,"Internal":true,"Count Failed Values":true},{"ID":369,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Value":0,"Internal":true,"Count Failed Values":true},{"ID":370,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Value":0,"Internal":true,"Count Failed Values":true},{"ID":371,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":372,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":373,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":374,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":375,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Value":0,"Internal":true,"Count Failed Values":true},{"ID":376,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Value":0,"Internal":true,"Count Failed Values":true},{"ID":377,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Value":3311,"Internal":true,"Count Failed Values":true},{"ID":378,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Value":0,"Internal":true,"Count Failed Values":true},{"ID":384,"Name":"internal.metrics.output.bytesWritten","Value":2702896161,"Internal":true,"Count Failed Values":true},{"ID":385,"Name":"internal.metrics.output.recordsWritten","Value":125660481,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":5,"Completion Time":1750984182935,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":2,"accumUpdates":[[345,2],[350,5548],[347,125660481],[348,0],[346,2702896161]]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionEnd","executionId":2,"time":1750984188491,"errorMessage":""} +{"Event":"SparkListenerApplicationEnd","Timestamp":1750984188493} diff --git a/examples/basic/events/eventlog_v2_spark-cc4d115f011443d787f03a71a476a745/appstatus_spark-cc4d115f011443d787f03a71a476a745 b/examples/basic/events/eventlog_v2_spark-cc4d115f011443d787f03a71a476a745/appstatus_spark-cc4d115f011443d787f03a71a476a745 new file mode 100644 index 0000000..e69de29 diff --git a/examples/basic/events/eventlog_v2_spark-cc4d115f011443d787f03a71a476a745/events_1_spark-cc4d115f011443d787f03a71a476a745 b/examples/basic/events/eventlog_v2_spark-cc4d115f011443d787f03a71a476a745/events_1_spark-cc4d115f011443d787f03a71a476a745 new file mode 100644 index 0000000..eb333d4 --- /dev/null +++ b/examples/basic/events/eventlog_v2_spark-cc4d115f011443d787f03a71a476a745/events_1_spark-cc4d115f011443d787f03a71a476a745 @@ -0,0 +1,200 @@ +{"Event":"SparkListenerLogStart","Spark Version":"3.5.3"} +{"Event":"SparkListenerResourceProfileAdded","Resource Profile Id":0,"Executor Resource Requests":{"memoryOverhead":{"Resource Name":"memoryOverhead","Amount":4096,"Discovery Script":"","Vendor":""},"cores":{"Resource Name":"cores","Amount":1,"Discovery Script":"","Vendor":""},"memory":{"Resource Name":"memory","Amount":4096,"Discovery Script":"","Vendor":""},"offHeap":{"Resource Name":"offHeap","Amount":0,"Discovery Script":"","Vendor":""}},"Task Resource Requests":{"cpus":{"Resource Name":"cpus","Amount":1.0}}} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"driver","Host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","Port":7079},"Maximum Memory":2388236697,"Timestamp":1750996614851,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerEnvironmentUpdate","JVM Information":{"Java Home":"/opt/java/openjdk","Java Version":"17.0.12 (Eclipse Adoptium)","Scala Version":"version 2.12.18"},"Spark Properties":{"spark.speculation":"false","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.submission.waitAppCompletion":"false","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.serializer.objectStreamReset":"100","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.namespace":"spark-team-a","spark.eventLog.enabled":"true","spark.executor.memoryOverhead":"4g","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.driver.port":"7078","spark.rdd.compress":"True","spark.kubernetes.executor.label.version":"3.5.3","spark.driver.blockManager.port":"7079","spark.hadoop.fs.s3a.path.style.access":"true","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.network.timeout":"2400","spark.hadoop.fs.s3a.connection.maximum":"200","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.scheduler.mode":"FIFO","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.memory":"4g","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.executor.instances":"4","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.submit.pyFiles":"","spark.app.submitTime":"1750996611643","spark.driver.memoryOverhead":"4g","spark.kubernetes.memoryOverheadFactor":"0.4","spark.driver.bindAddress":"100.64.63.89","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.kubernetes.resource.type":"python","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.app.startTime":"1750996612238","spark.executor.id":"driver","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.limit.cores":"3400m","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.driver.cores":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.driver.limit.cores":"1200m","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.executor.label.app":"taxi-trip","spark.ui.prometheus.enabled":"true","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.driver.label.queue":"root.test","spark.executor.memory":"4g","spark.local.dir":"/data","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.cores":"1","spark.executor.processTreeMetrics.enabled":"true","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.hadoop.fs.s3a.readahead.range":"256K","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.rolling.enabled":"true","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true"},"Hadoop Properties":{"hadoop.service.shutdown.timeout":"30s","yarn.resourcemanager.amlauncher.thread-count":"50","yarn.sharedcache.enabled":"false","fs.s3a.connection.maximum":"200","yarn.nodemanager.numa-awareness.numactl.cmd":"/usr/bin/numactl","fs.viewfs.overload.scheme.target.o3fs.impl":"org.apache.hadoop.fs.ozone.OzoneFileSystem","fs.s3a.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","yarn.app.mapreduce.am.scheduler.heartbeat.interval-ms":"1000","yarn.timeline-service.timeline-client.number-of-async-entities-to-merge":"10","hadoop.security.kms.client.timeout":"60","hadoop.http.authentication.kerberos.principal":"HTTP/_HOST@LOCALHOST","mapreduce.jobhistory.loadedjob.tasks.max":"-1","yarn.resourcemanager.application-tag-based-placement.enable":"false","mapreduce.framework.name":"local","yarn.sharedcache.uploader.server.thread-count":"50","yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds.min":"3600","yarn.nodemanager.linux-container-executor.nonsecure-mode.user-pattern":"^[_.A-Za-z0-9][-@_.A-Za-z0-9]{0,255}?[$]?$","tfile.fs.output.buffer.size":"262144","yarn.app.mapreduce.am.job.task.listener.thread-count":"30","yarn.nodemanager.node-attributes.resync-interval-ms":"120000","yarn.nodemanager.container-log-monitor.interval-ms":"60000","hadoop.security.groups.cache.background.reload.threads":"3","yarn.resourcemanager.webapp.cross-origin.enabled":"false","fs.AbstractFileSystem.ftp.impl":"org.apache.hadoop.fs.ftp.FtpFs","fs.viewfs.overload.scheme.target.gs.impl":"com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS","hadoop.registry.secure":"false","hadoop.shell.safely.delete.limit.num.files":"100","mapreduce.job.acl-view-job":" ","fs.s3a.retry.limit":"7","mapreduce.jobhistory.loadedjobs.cache.size":"5","mapreduce.outputcommitter.factory.scheme.abfs":"org.apache.hadoop.fs.azurebfs.commit.AzureManifestCommitterFactory","yarn.router.interceptor.user-thread-pool.allow-core-thread-time-out":"false","yarn.log-aggregation.enable-local-cleanup":"true","fs.viewfs.overload.scheme.target.s3a.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","yarn.nodemanager.amrmproxy.enabled":"false","yarn.timeline-service.entity-group-fs-store.with-user-dir":"false","mapreduce.shuffle.pathcache.expire-after-access-minutes":"5","mapreduce.input.fileinputformat.split.minsize":"0","yarn.resourcemanager.container.liveness-monitor.interval-ms":"600000","yarn.resourcemanager.client.thread-count":"50","io.seqfile.compress.blocksize":"1000000","yarn.nodemanager.runtime.linux.docker.allowed-container-runtimes":"runc","fs.viewfs.overload.scheme.target.http.impl":"org.apache.hadoop.fs.http.HttpFileSystem","yarn.nodemanager.least-load-policy-selector.fail-on-error":"true","yarn.resourcemanager.nodemanagers.heartbeat-interval-slowdown-factor":"1.0","yarn.sharedcache.checksum.algo.impl":"org.apache.hadoop.yarn.sharedcache.ChecksumSHA256Impl","yarn.router.submit.interval.time":"10ms","yarn.nodemanager.amrmproxy.interceptor-class.pipeline":"org.apache.hadoop.yarn.server.nodemanager.amrmproxy.DefaultRequestInterceptor","yarn.timeline-service.entity-group-fs-store.leveldb-cache-read-cache-size":"10485760","mapreduce.reduce.shuffle.fetch.retry.interval-ms":"1000","mapreduce.task.profile.maps":"0-2","yarn.scheduler.include-port-in-node-name":"false","yarn.nodemanager.admin-env":"MALLOC_ARENA_MAX=$MALLOC_ARENA_MAX","yarn.resourcemanager.node-removal-untracked.timeout-ms":"60000","yarn.router.interceptor.user-thread-pool.keep-alive-time":"30s","mapreduce.am.max-attempts":"2","hadoop.security.kms.client.failover.sleep.base.millis":"100","fs.s3a.connection.ttl":"5m","yarn.router.asc-interceptor-max-size":"1MB","mapreduce.jobhistory.webapp.https.address":"0.0.0.0:19890","yarn.node-labels.fs-store.impl.class":"org.apache.hadoop.yarn.nodelabels.FileSystemNodeLabelsStore","yarn.nodemanager.collector-service.address":"${yarn.nodemanager.hostname}:8048","fs.trash.checkpoint.interval":"0","yarn.nodemanager.opportunistic-containers-queue-policy":"BY_QUEUE_LEN","mapreduce.job.map.output.collector.class":"org.apache.hadoop.mapred.MapTask$MapOutputBuffer","yarn.federation.gpg.policy.generator.load-based.pending.maximum":"1000","yarn.resourcemanager.node-ip-cache.expiry-interval-secs":"-1","hadoop.http.authentication.signature.secret.file":"*********(redacted)","hadoop.jetty.logs.serve.aliases":"true","yarn.resourcemanager.placement-constraints.handler":"disabled","yarn.timeline-service.handler-thread-count":"10","yarn.resourcemanager.max-completed-applications":"1000","yarn.nodemanager.aux-services.manifest.enabled":"false","yarn.resourcemanager.system-metrics-publisher.enabled":"false","yarn.resourcemanager.placement-constraints.algorithm.class":"org.apache.hadoop.yarn.server.resourcemanager.scheduler.constraint.algorithm.DefaultPlacementAlgorithm","yarn.sharedcache.webapp.address":"0.0.0.0:8788","fs.s3a.select.input.csv.quote.escape.character":"\\\\","yarn.resourcemanager.delegation.token.renew-interval":"*********(redacted)","yarn.sharedcache.nm.uploader.replication.factor":"10","hadoop.security.groups.negative-cache.secs":"30","yarn.app.mapreduce.task.container.log.backups":"0","mapreduce.reduce.skip.proc-count.auto-incr":"true","yarn.dispatcher.print-thread-pool.core-pool-size":"1","hadoop.security.group.mapping.ldap.posix.attr.gid.name":"gidNumber","ipc.client.fallback-to-simple-auth-allowed":"false","yarn.nodemanager.resource.memory.enforced":"true","yarn.federation.gpg.policy.generator.interval-ms":"3600000","yarn.resourcemanager.system-metrics-publisher.timeline-server-v1.enable-batch":"false","yarn.client.failover-proxy-provider":"org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider","yarn.federation.state-store.sql.idle-time-out":"10m","yarn.timeline-service.http-authentication.simple.anonymous.allowed":"true","ha.health-monitor.check-interval.ms":"1000","io.compression.codec.zstd.level":"3","yarn.nodemanager.runtime.linux.runc.host-pid-namespace.allowed":"false","hadoop.metrics.jvm.use-thread-mxbean":"false","ipc.[port_number].faircallqueue.multiplexer.weights":"8,4,2,1","yarn.acl.reservation-enable":"false","yarn.resourcemanager.store.class":"org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore","ipc.[port_number].callqueue.overflow.trigger.failover":"false","yarn.app.mapreduce.am.hard-kill-timeout-ms":"10000","fs.s3a.etag.checksum.enabled":"false","yarn.nodemanager.container-metrics.enable":"true","mapreduce.outputcommitter.factory.scheme.gs":"org.apache.hadoop.mapreduce.lib.output.committer.manifest.ManifestCommitterFactory","ha.health-monitor.rpc.connect.max.retries":"1","yarn.timeline-service.client.fd-clean-interval-secs":"60","yarn.resourcemanager.nodemanagers.heartbeat-interval-scaling-enable":"false","yarn.resourcemanager.nodemanagers.heartbeat-interval-ms":"1000","hadoop.common.configuration.version":"3.0.0","yarn.nodemanager.remote-app-log-dir-suffix":"logs","yarn.nodemanager.container-log-monitor.dir-size-limit-bytes":"1000000000","yarn.nodemanager.windows-container.cpu-limit.enabled":"false","yarn.nodemanager.runtime.linux.docker.privileged-containers.allowed":"false","file.blocksize":"67108864","hadoop.http.idle_timeout.ms":"60000","hadoop.registry.zk.retry.ceiling.ms":"60000","ipc.client.connection.idle-scan-interval.ms":"10000","yarn.scheduler.configuration.leveldb-store.path":"${hadoop.tmp.dir}/yarn/system/confstore","yarn.sharedcache.store.in-memory.initial-delay-mins":"10","mapreduce.jobhistory.principal":"jhs/_HOST@REALM.TLD","mapreduce.map.skip.proc-count.auto-incr":"true","fs.s3a.committer.name":"file","mapreduce.task.profile.reduces":"0-2","hadoop.zk.num-retries":"1000","yarn.webapp.xfs-filter.enabled":"true","fs.viewfs.overload.scheme.target.hdfs.impl":"org.apache.hadoop.hdfs.DistributedFileSystem","seq.io.sort.mb":"100","fs.iostatistics.logging.level":"debug","yarn.scheduler.configuration.max.version":"100","yarn.timeline-service.webapp.https.address":"${yarn.timeline-service.hostname}:8190","yarn.resourcemanager.scheduler.address":"${yarn.resourcemanager.hostname}:8030","yarn.node-labels.enabled":"false","yarn.resourcemanager.webapp.ui-actions.enabled":"true","mapreduce.task.timeout":"600000","yarn.sharedcache.client-server.thread-count":"50","hadoop.security.groups.shell.command.timeout":"0s","hadoop.security.crypto.cipher.suite":"AES/CTR/NoPadding","yarn.nodemanager.elastic-memory-control.oom-handler":"org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.resources.DefaultOOMHandler","yarn.resourcemanager.connect.max-wait.ms":"900000","fs.defaultFS":"file:///","yarn.minicluster.use-rpc":"false","fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","ipc.[port_number].decay-scheduler.decay-factor":"0.5","fs.har.impl.disable.cache":"true","yarn.webapp.ui2.enable":"false","io.compression.codec.bzip2.library":"system-native","yarn.webapp.filter-invalid-xml-chars":"false","yarn.nodemanager.runtime.linux.runc.layer-mounts-interval-secs":"600","fs.s3a.select.input.csv.record.delimiter":"\\n","fs.s3a.change.detection.source":"etag","ipc.[port_number].backoff.enable":"false","yarn.nodemanager.distributed-scheduling.enabled":"false","yarn.federation.cache.class":"org.apache.hadoop.yarn.server.federation.cache.FederationJCache","mapreduce.shuffle.connection-keep-alive.timeout":"5","yarn.resourcemanager.webapp.https.address":"${yarn.resourcemanager.hostname}:8090","yarn.webapp.enable-rest-app-submissions":"true","mapreduce.jobhistory.address":"0.0.0.0:10020","yarn.resourcemanager.nm-tokens.master-key-rolling-interval-secs":"*********(redacted)","yarn.is.minicluster":"false","yarn.nodemanager.address":"${yarn.nodemanager.hostname}:0","fs.abfss.impl":"org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem","fs.AbstractFileSystem.s3a.impl":"org.apache.hadoop.fs.s3a.S3A","ipc.server.metrics.update.runner.interval":"5000","mapreduce.task.combine.progress.records":"10000","yarn.resourcemanager.epoch.range":"0","yarn.resourcemanager.am.max-attempts":"2","yarn.nodemanager.runtime.linux.runc.image-toplevel-dir":"/runc-root","yarn.nodemanager.linux-container-executor.cgroups.hierarchy":"/hadoop-yarn","io.compression.codec.lz4.use.lz4hc":"false","fs.AbstractFileSystem.wasbs.impl":"org.apache.hadoop.fs.azure.Wasbs","yarn.timeline-service.entity-group-fs-store.cache-store-class":"org.apache.hadoop.yarn.server.timeline.MemoryTimelineStore","yarn.nodemanager.runtime.linux.runc.allowed-container-networks":"host,none,bridge","fs.ftp.transfer.mode":"BLOCK_TRANSFER_MODE","ipc.server.log.slow.rpc":"false","ipc.server.reuseaddr":"true","fs.ftp.timeout":"0","yarn.resourcemanager.node-labels.provider.fetch-interval-ms":"1800000","fs.AbstractFileSystem.o3fs.impl":"org.apache.hadoop.fs.ozone.OzFs","yarn.router.webapp.https.address":"0.0.0.0:8091","yarn.resourcemanager.enable-node-untracked-without-include-path":"false","yarn.nodemanager.webapp.cross-origin.enabled":"false","yarn.federation.gpg.subcluster.heartbeat.expiration-ms":"30m","fs.wasb.impl":"org.apache.hadoop.fs.azure.NativeAzureFileSystem","yarn.resourcemanager.auto-update.containers":"false","yarn.app.mapreduce.am.job.committer.cancel-timeout":"60000","yarn.scheduler.configuration.zk-store.parent-path":"/confstore","yarn.nodemanager.default-container-executor.log-dirs.permissions":"710","yarn.app.attempt.diagnostics.limit.kc":"64","fs.viewfs.overload.scheme.target.swebhdfs.impl":"org.apache.hadoop.hdfs.web.SWebHdfsFileSystem","yarn.client.failover-no-ha-proxy-provider":"org.apache.hadoop.yarn.client.DefaultNoHARMFailoverProxyProvider","fs.s3a.change.detection.mode":"server","ftp.bytes-per-checksum":"512","yarn.nodemanager.resource.memory-mb":"-1","fs.AbstractFileSystem.abfs.impl":"org.apache.hadoop.fs.azurebfs.Abfs","yarn.timeline-service.writer.flush-interval-seconds":"60","fs.s3a.fast.upload.active.blocks":"4","yarn.resourcemanager.submission-preprocessor.enabled":"false","hadoop.security.credential.clear-text-fallback":"true","yarn.nodemanager.collector-service.thread-count":"5","ipc.[port_number].scheduler.impl":"org.apache.hadoop.ipc.DefaultRpcScheduler","fs.azure.secure.mode":"false","mapreduce.jobhistory.joblist.cache.size":"20000","fs.ftp.host":"0.0.0.0","yarn.timeline-service.writer.async.queue.capacity":"100","yarn.router.webapp.appsinfo-cached-count":"100","yarn.resourcemanager.fs.state-store.num-retries":"0","yarn.resourcemanager.nodemanager-connect-retries":"10","yarn.nodemanager.log-aggregation.num-log-files-per-app":"30","hadoop.security.kms.client.encrypted.key.cache.low-watermark":"0.3f","fs.s3a.committer.magic.enabled":"true","yarn.timeline-service.client.max-retries":"30","dfs.ha.fencing.ssh.connect-timeout":"30000","yarn.log-aggregation-enable":"false","yarn.system-metrics-publisher.enabled":"false","mapreduce.reduce.markreset.buffer.percent":"0.0","fs.AbstractFileSystem.viewfs.impl":"org.apache.hadoop.fs.viewfs.ViewFs","yarn.resourcemanager.nodemanagers.heartbeat-interval-speedup-factor":"1.0","mapreduce.task.io.sort.factor":"10","yarn.nodemanager.amrmproxy.client.thread-count":"25","ha.failover-controller.new-active.rpc-timeout.ms":"60000","yarn.nodemanager.container-localizer.java.opts":"-Xmx256m","mapreduce.jobhistory.datestring.cache.size":"200000","mapreduce.job.acl-modify-job":" ","yarn.nodemanager.windows-container.memory-limit.enabled":"false","yarn.timeline-service.webapp.address":"${yarn.timeline-service.hostname}:8188","yarn.app.mapreduce.am.job.committer.commit-window":"10000","yarn.nodemanager.container-manager.thread-count":"20","yarn.minicluster.fixed.ports":"false","hadoop.tags.system":"YARN,HDFS,NAMENODE,DATANODE,REQUIRED,SECURITY,KERBEROS,PERFORMANCE,CLIENT\n ,SERVER,DEBUG,DEPRECATED,COMMON,OPTIONAL","yarn.cluster.max-application-priority":"0","yarn.timeline-service.ttl-enable":"true","mapreduce.jobhistory.recovery.store.fs.uri":"${hadoop.tmp.dir}/mapred/history/recoverystore","yarn.nodemanager.least-load-policy-selector.enabled":"false","yarn.nodemanager.least-load-policy-selector.pending-container.threshold":"10000","hadoop.caller.context.signature.max.size":"40","ipc.[port_number].decay-scheduler.backoff.responsetime.enable":"false","yarn.client.load.resource-types.from-server":"false","ha.zookeeper.session-timeout.ms":"10000","ipc.[port_number].decay-scheduler.metrics.top.user.count":"10","tfile.io.chunk.size":"1048576","yarn.dispatcher.print-events-info.threshold":"5000","yarn.nodemanager.log-container-debug-info-on-error.enabled":"false","mapreduce.job.speculative.slowtaskthreshold":"1.0","io.serializations":"org.apache.hadoop.io.serializer.WritableSerialization, org.apache.hadoop.io.serializer.avro.AvroSpecificSerialization, org.apache.hadoop.io.serializer.avro.AvroReflectSerialization","hadoop.security.kms.client.failover.sleep.max.millis":"2000","hadoop.security.group.mapping.ldap.directory.search.timeout":"10000","yarn.scheduler.configuration.store.max-logs":"1000","yarn.nodemanager.dispatcher.metric.enable":"false","yarn.nodemanager.node-attributes.provider.fetch-interval-ms":"600000","yarn.nodemanager.local-cache.max-files-per-directory":"8192","hadoop.http.cross-origin.enabled":"false","hadoop.zk.acl":"world:anyone:rwcda","yarn.nodemanager.runtime.linux.runc.image-tag-to-manifest-plugin.num-manifests-to-cache":"10","mapreduce.map.sort.spill.percent":"0.80","yarn.timeline-service.entity-group-fs-store.scan-interval-seconds":"60","yarn.node-attribute.fs-store.impl.class":"org.apache.hadoop.yarn.server.resourcemanager.nodelabels.FileSystemNodeAttributeStore","fs.s3a.retry.interval":"500ms","yarn.timeline-service.client.best-effort":"false","yarn.resourcemanager.webapp.delegation-token-auth-filter.enabled":"*********(redacted)","hadoop.security.group.mapping.ldap.posix.attr.uid.name":"uidNumber","fs.AbstractFileSystem.swebhdfs.impl":"org.apache.hadoop.fs.SWebHdfs","yarn.nodemanager.elastic-memory-control.timeout-sec":"5","fs.s3a.select.enabled":"true","mapreduce.ifile.readahead":"true","yarn.timeline-service.leveldb-timeline-store.ttl-interval-ms":"300000","yarn.timeline-service.reader.webapp.address":"${yarn.timeline-service.webapp.address}","yarn.resourcemanager.placement-constraints.algorithm.pool-size":"1","yarn.timeline-service.hbase.coprocessor.jar.hdfs.location":"/hbase/coprocessor/hadoop-yarn-server-timelineservice.jar","hadoop.security.kms.client.encrypted.key.cache.num.refill.threads":"2","yarn.webapp.ui1.tools.enable":"true","yarn.resourcemanager.scheduler.class":"org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler","yarn.app.mapreduce.am.command-opts":"-Xmx1024m","hadoop.http.sni.host.check.enabled":"false","mapreduce.cluster.local.dir":"${hadoop.tmp.dir}/mapred/local","io.mapfile.bloom.error.rate":"0.005","fs.client.resolve.topology.enabled":"false","yarn.nodemanager.runtime.linux.allowed-runtimes":"default","yarn.sharedcache.store.class":"org.apache.hadoop.yarn.server.sharedcachemanager.store.InMemorySCMStore","ha.failover-controller.graceful-fence.rpc-timeout.ms":"5000","ftp.replication":"3","fs.getspaceused.jitterMillis":"60000","hadoop.security.uid.cache.secs":"14400","mapreduce.job.maxtaskfailures.per.tracker":"3","ipc.scheduler.impl":"org.apache.hadoop.ipc.DefaultRpcScheduler","yarn.resourcemanager.zk-client-ssl.enabled":"false","io.skip.checksum.errors":"false","yarn.nodemanager.log.trigger.delete.by-size.enabled":"false","yarn.app.mapreduce.client-am.ipc.max-retries-on-timeouts":"3","yarn.timeline-service.webapp.xfs-filter.xframe-options":"SAMEORIGIN","fs.s3a.connection.timeout":"1200000","yarn.app.mapreduce.am.webapp.https.enabled":"false","mapreduce.job.max.split.locations":"15","yarn.resourcemanager.nm-container-queuing.max-queue-length":"15","yarn.resourcemanager.delegation-token.always-cancel":"*********(redacted)","hadoop.registry.zk.session.timeout.ms":"60000","yarn.federation.cache-ttl.secs":"300","mapreduce.jvm.system-properties-to-log":"os.name,os.version,java.home,java.runtime.version,java.vendor,java.version,java.vm.name,java.class.path,java.io.tmpdir,user.dir,user.name","yarn.resourcemanager.opportunistic-container-allocation.nodes-used":"10","yarn.timeline-service.entity-group-fs-store.active-dir":"/tmp/entity-file-history/active","mapreduce.shuffle.transfer.buffer.size":"131072","yarn.timeline-service.client.retry-interval-ms":"1000","yarn.timeline-service.flowname.max-size":"0","yarn.http.policy":"HTTP_ONLY","fs.s3a.socket.send.buffer":"8192","fs.AbstractFileSystem.abfss.impl":"org.apache.hadoop.fs.azurebfs.Abfss","yarn.sharedcache.uploader.server.address":"0.0.0.0:8046","yarn.resourcemanager.delegation-token.max-conf-size-bytes":"*********(redacted)","hadoop.http.authentication.token.validity":"*********(redacted)","mapreduce.shuffle.max.connections":"0","yarn.minicluster.yarn.nodemanager.resource.memory-mb":"4096","mapreduce.job.emit-timeline-data":"false","yarn.nodemanager.resource.system-reserved-memory-mb":"-1","hadoop.kerberos.min.seconds.before.relogin":"60","mapreduce.jobhistory.move.thread-count":"3","yarn.resourcemanager.application-tag-based-placement.force-lowercase":"true","yarn.resourcemanager.admin.client.thread-count":"1","yarn.dispatcher.drain-events.timeout":"300000","ipc.[port_number].decay-scheduler.backoff.responsetime.thresholds":"10s,20s,30s,40s","fs.s3a.buffer.dir":"${env.LOCAL_DIRS:-${hadoop.tmp.dir}}/s3a","hadoop.ssl.enabled.protocols":"TLSv1.2","mapreduce.jobhistory.admin.address":"0.0.0.0:10033","yarn.log-aggregation-status.time-out.ms":"600000","ipc.server.max.response.size":"1048576","fs.s3a.accesspoint.required":"false","mapreduce.shuffle.port":"13562","yarn.resourcemanager.max-log-aggregation-diagnostics-in-memory":"10","yarn.nodemanager.health-checker.interval-ms":"600000","yarn.resourcemanager.proxy.connection.timeout":"60000","yarn.router.clientrm.interceptor-class.pipeline":"org.apache.hadoop.yarn.server.router.clientrm.DefaultClientRequestInterceptor","yarn.resourcemanager.zk-appid-node.split-index":"0","ftp.blocksize":"67108864","yarn.nodemanager.runtime.linux.sandbox-mode.local-dirs.permissions":"read","yarn.router.rmadmin.interceptor-class.pipeline":"org.apache.hadoop.yarn.server.router.rmadmin.DefaultRMAdminRequestInterceptor","yarn.nodemanager.log-container-debug-info.enabled":"true","yarn.resourcemanager.activities-manager.app-activities.max-queue-length":"100","yarn.resourcemanager.application-https.policy":"NONE","yarn.client.max-cached-nodemanagers-proxies":"0","yarn.nodemanager.linux-container-executor.cgroups.delete-delay-ms":"20","yarn.nodemanager.delete.debug-delay-sec":"0","yarn.nodemanager.pmem-check-enabled":"true","yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage":"90.0","mapreduce.app-submission.cross-platform":"false","yarn.resourcemanager.work-preserving-recovery.scheduling-wait-ms":"10000","yarn.nodemanager.container-retry-minimum-interval-ms":"1000","yarn.federation.gpg.application.cleaner.contact.router.spec":"3,10,600000","hadoop.security.groups.cache.secs":"300","yarn.federation.enabled":"false","yarn.workflow-id.tag-prefix":"workflowid:","fs.azure.local.sas.key.mode":"false","yarn.federation.gpg.policy.generator.class":"org.apache.hadoop.yarn.server.globalpolicygenerator.policygenerator.NoOpGlobalPolicy","ipc.maximum.data.length":"134217728","fs.s3a.endpoint":"s3.amazonaws.com","mapreduce.shuffle.max.threads":"0","yarn.router.pipeline.cache-max-size":"25","yarn.resourcemanager.nm-container-queuing.load-comparator":"QUEUE_LENGTH","ipc.server.tcpnodelay":"true","yarn.resourcemanager.resource-tracker.nm.ip-hostname-check":"false","hadoop.security.authorization":"false","mapreduce.job.complete.cancel.delegation.tokens":"*********(redacted)","fs.s3a.paging.maximum":"5000","nfs.exports.allowed.hosts":"* rw","yarn.nodemanager.amrmproxy.ha.enable":"false","yarn.router.webapp.appsinfo-enabled":"false","fs.AbstractFileSystem.gs.impl":"com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS","mapreduce.jobhistory.http.policy":"HTTP_ONLY","yarn.sharedcache.store.in-memory.check-period-mins":"720","hadoop.security.group.mapping.ldap.ssl":"false","fs.s3a.downgrade.syncable.exceptions":"true","yarn.client.application-client-protocol.poll-interval-ms":"200","yarn.scheduler.configuration.leveldb-store.compaction-interval-secs":"86400","yarn.timeline-service.writer.class":"org.apache.hadoop.yarn.server.timelineservice.storage.HBaseTimelineWriterImpl","ha.zookeeper.parent-znode":"/hadoop-ha","yarn.resourcemanager.submission-preprocessor.file-refresh-interval-ms":"60000","yarn.nodemanager.log-aggregation.policy.class":"org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AllContainerLogAggregationPolicy","mapreduce.reduce.shuffle.merge.percent":"0.66","hadoop.security.group.mapping.ldap.search.filter.group":"(objectClass=group)","yarn.resourcemanager.placement-constraints.scheduler.pool-size":"1","yarn.resourcemanager.activities-manager.cleanup-interval-ms":"5000","yarn.nodemanager.resourcemanager.minimum.version":"NONE","mapreduce.job.speculative.speculative-cap-running-tasks":"0.1","yarn.admin.acl":"*","ipc.[port_number].identity-provider.impl":"org.apache.hadoop.ipc.UserIdentityProvider","yarn.nodemanager.recovery.supervised":"false","yarn.sharedcache.admin.thread-count":"1","yarn.resourcemanager.ha.automatic-failover.enabled":"true","yarn.nodemanager.container-log-monitor.total-size-limit-bytes":"10000000000","mapreduce.reduce.skip.maxgroups":"0","mapreduce.reduce.shuffle.connect.timeout":"180000","yarn.federation.amrmproxy.register.uam.retry-count":"3","yarn.nodemanager.health-checker.scripts":"script","yarn.resourcemanager.address":"${yarn.resourcemanager.hostname}:8032","ipc.client.ping":"true","mapreduce.task.local-fs.write-limit.bytes":"-1","fs.adl.oauth2.access.token.provider.type":"*********(redacted)","mapreduce.shuffle.ssl.file.buffer.size":"65536","yarn.resourcemanager.ha.automatic-failover.embedded":"true","yarn.nodemanager.resource-plugins.gpu.docker-plugin":"nvidia-docker-v1","fs.s3a.multipart.purge":"false","yarn.scheduler.configuration.store.class":"file","yarn.resourcemanager.nm-container-queuing.queue-limit-stdev":"1.0f","mapreduce.job.end-notification.max.attempts":"5","mapreduce.output.fileoutputformat.compress.codec":"org.apache.hadoop.io.compress.DefaultCodec","yarn.nodemanager.container-monitor.procfs-tree.smaps-based-rss.enabled":"false","ipc.client.bind.wildcard.addr":"false","yarn.resourcemanager.webapp.rest-csrf.enabled":"false","ha.health-monitor.connect-retry-interval.ms":"1000","yarn.nodemanager.keytab":"/etc/krb5.keytab","yarn.federation.cache-entity.nums":"1000","hadoop.security.resolver.impl":"org.apache.hadoop.net.DNSDomainNameResolver","mapreduce.jobhistory.keytab":"/etc/security/keytab/jhs.service.keytab","fs.s3a.threads.max":"96","yarn.nodemanager.runtime.linux.docker.image-update":"false","mapreduce.reduce.shuffle.input.buffer.percent":"0.70","fs.viewfs.overload.scheme.target.abfss.impl":"org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem","yarn.dispatcher.cpu-monitor.samples-per-min":"60","hadoop.security.token.service.use_ip":"*********(redacted)","yarn.nodemanager.runtime.linux.docker.allowed-container-networks":"host,none,bridge","yarn.nodemanager.node-labels.resync-interval-ms":"120000","hadoop.tmp.dir":"/tmp/hadoop-${user.name}","mapreduce.job.maps":"2","mapreduce.jobhistory.webapp.rest-csrf.custom-header":"X-XSRF-Header","mapreduce.job.end-notification.max.retry.interval":"5000","yarn.log-aggregation.retain-check-interval-seconds":"-1","yarn.resourcemanager.resource-tracker.client.thread-count":"50","yarn.nodemanager.containers-launcher.class":"org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainersLauncher","yarn.rm.system-metrics-publisher.emit-container-events":"false","yarn.timeline-service.leveldb-timeline-store.start-time-read-cache-size":"10000","yarn.resourcemanager.ha.automatic-failover.zk-base-path":"/yarn-leader-election","io.seqfile.local.dir":"${hadoop.tmp.dir}/io/local","fs.AbstractFileSystem.wasb.impl":"org.apache.hadoop.fs.azure.Wasb","mapreduce.client.submit.file.replication":"10","io.compression.codec.lzo.buffersize":"65536","mapreduce.jobhistory.minicluster.fixed.ports":"false","fs.s3a.multipart.threshold":"128M","yarn.resourcemanager.webapp.xfs-filter.xframe-options":"SAMEORIGIN","ipc.callqueue.impl":"java.util.concurrent.LinkedBlockingQueue","mapreduce.jobhistory.done-dir":"${yarn.app.mapreduce.am.staging-dir}/history/done","ipc.server.purge.interval":"15","ipc.client.idlethreshold":"4000","yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage":"false","mapreduce.reduce.input.buffer.percent":"0.0","yarn.nodemanager.runtime.linux.docker.userremapping-gid-threshold":"1","yarn.nodemanager.webapp.rest-csrf.enabled":"false","fs.ftp.host.port":"21","ipc.ping.interval":"60000","yarn.resourcemanager.history-writer.multi-threaded-dispatcher.pool-size":"10","yarn.router.interceptor.user-thread-pool.maximum-pool-size":"5","yarn.resourcemanager.admin.address":"${yarn.resourcemanager.hostname}:8033","file.client-write-packet-size":"65536","ipc.client.kill.max":"10","mapreduce.reduce.speculative":"true","hadoop.security.key.default.bitlength":"128","mapreduce.job.reducer.unconditional-preempt.delay.sec":"300","yarn.nodemanager.disk-health-checker.interval-ms":"120000","yarn.nodemanager.log.deletion-threads-count":"4","fs.s3a.committer.abort.pending.uploads":"true","yarn.webapp.filter-entity-list-by-user":"false","yarn.resourcemanager.activities-manager.app-activities.ttl-ms":"600000","ipc.client.connection.maxidletime":"10000","mapreduce.task.io.sort.mb":"100","yarn.nodemanager.localizer.client.thread-count":"5","yarn.federation.gpg.policy.generator.load-based.edit.maximum":"3","io.erasurecode.codec.rs.rawcoders":"rs_native,rs_java","io.erasurecode.codec.rs-legacy.rawcoders":"rs-legacy_java","yarn.sharedcache.admin.address":"0.0.0.0:8047","yarn.resourcemanager.placement-constraints.algorithm.iterator":"SERIAL","yarn.nodemanager.localizer.cache.cleanup.interval-ms":"600000","hadoop.security.crypto.codec.classes.aes.ctr.nopadding":"org.apache.hadoop.crypto.OpensslAesCtrCryptoCodec, org.apache.hadoop.crypto.JceAesCtrCryptoCodec","mapreduce.job.cache.limit.max-resources-mb":"0","fs.s3a.connection.ssl.enabled":"true","yarn.nodemanager.process-kill-wait.ms":"5000","mapreduce.job.hdfs-servers":"${fs.defaultFS}","yarn.apps.cache.size":"1000","yarn.app.mapreduce.am.webapp.https.client.auth":"false","hadoop.workaround.non.threadsafe.getpwuid":"true","fs.df.interval":"60000","ipc.[port_number].decay-scheduler.thresholds":"13,25,50","yarn.federation.gpg.webapp.https.address":"0.0.0.0:8070","ipc.server.read.threadpool.size":"1","fs.s3a.audit.enabled":"true","fs.s3a.multiobjectdelete.enable":"true","yarn.sharedcache.cleaner.resource-sleep-ms":"0","ipc.server.read.connection-queue.size":"100","yarn.nodemanager.disk-health-checker.min-healthy-disks":"0.25","hadoop.shell.missing.defaultFs.warning":"false","io.file.buffer.size":"65536","fs.viewfs.overload.scheme.target.wasb.impl":"org.apache.hadoop.fs.azure.NativeAzureFileSystem","hadoop.security.group.mapping.ldap.search.attr.member":"member","hadoop.security.random.device.file.path":"/dev/urandom","ipc.cost-provider.impl":"org.apache.hadoop.ipc.DefaultCostProvider","hadoop.security.sensitive-config-keys":"*********(redacted)","fs.viewfs.overload.scheme.target.file.impl":"org.apache.hadoop.fs.LocalFileSystem","yarn.federation.gpg.application.cleaner.interval-ms":"-1s","hadoop.rpc.socket.factory.class.default":"org.apache.hadoop.net.StandardSocketFactory","yarn.intermediate-data-encryption.enable":"false","yarn.nodemanager.least-load-policy-selector.use-active-core":"false","yarn.resourcemanager.connect.retry-interval.ms":"30000","yarn.nodemanager.container.stderr.pattern":"{*stderr*,*STDERR*}","yarn.apps.cache.expire":"30s","ipc.server.log.slow.rpc.threshold.ms":"0","yarn.scheduler.minimum-allocation-mb":"1024","yarn.app.mapreduce.am.staging-dir":"/tmp/hadoop-yarn/staging","mapreduce.reduce.shuffle.read.timeout":"180000","hadoop.http.cross-origin.max-age":"1800","io.erasurecode.codec.xor.rawcoders":"xor_native,xor_java","fs.s3a.connection.establish.timeout":"30s","mapreduce.job.running.map.limit":"0","yarn.minicluster.control-resource-monitoring":"false","hadoop.ssl.require.client.cert":"false","hadoop.kerberos.kinit.command":"kinit","yarn.apps.cache.enable":"false","yarn.federation.non-ha.enabled":"false","yarn.federation.state-store.class":"org.apache.hadoop.yarn.server.federation.store.impl.MemoryFederationStateStore","yarn.federation.state-store.heartbeat.initial-delay":"30s","mapreduce.reduce.log.level":"INFO","hadoop.security.dns.log-slow-lookups.threshold.ms":"1000","mapreduce.job.ubertask.enable":"false","adl.http.timeout":"-1","yarn.resourcemanager.placement-constraints.retry-attempts":"3","hadoop.caller.context.enabled":"false","hadoop.security.group.mapping.ldap.num.attempts":"3","yarn.nodemanager.vmem-pmem-ratio":"2.1","hadoop.rpc.protection":"authentication","ha.health-monitor.rpc-timeout.ms":"45000","yarn.nodemanager.remote-app-log-dir":"/tmp/logs","hadoop.zk.timeout-ms":"10000","yarn.nodemanager.resource.pcores-vcores-multiplier":"1.0","yarn.nodemanager.runtime.linux.sandbox-mode":"disabled","ipc.client.connect.max.retries.on.sasl":"5","yarn.app.mapreduce.am.containerlauncher.threadpool-initial-size":"10","fs.viewfs.overload.scheme.target.webhdfs.impl":"org.apache.hadoop.hdfs.web.WebHdfsFileSystem","yarn.router.webapp.proxy.enable":"true","fs.s3a.committer.threads":"8","hadoop.zk.retry-interval-ms":"1000","hadoop.http.metrics.enabled":"true","hadoop.security.crypto.buffer.size":"8192","yarn.nodemanager.node-labels.provider.fetch-interval-ms":"600000","mapreduce.jobhistory.recovery.store.leveldb.path":"${hadoop.tmp.dir}/mapred/history/recoverystore","yarn.client.failover-retries-on-socket-timeouts":"0","fs.s3a.ssl.channel.mode":"default_jsse","yarn.nodemanager.resource.memory.enabled":"false","fs.azure.authorization.caching.enable":"true","hadoop.security.instrumentation.requires.admin":"false","yarn.nodemanager.delete.thread-count":"4","mapreduce.job.finish-when-all-reducers-done":"true","hadoop.registry.jaas.context":"Client","yarn.resourcemanager.delegation.token.remove-scan-interval":"*********(redacted)","yarn.timeline-service.leveldb-timeline-store.path":"${hadoop.tmp.dir}/yarn/timeline","io.map.index.interval":"128","yarn.resourcemanager.nm-container-queuing.max-queue-wait-time-ms":"100","fs.abfs.impl":"org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem","mapreduce.job.counters.max":"120","ipc.identity-provider.impl":"org.apache.hadoop.ipc.UserIdentityProvider","mapreduce.jobhistory.webapp.rest-csrf.enabled":"false","yarn.timeline-service.store-class":"org.apache.hadoop.yarn.server.timeline.LeveldbTimelineStore","mapreduce.jobhistory.move.interval-ms":"180000","yarn.federation.amrmproxy.register.uam.interval":"100ms","yarn.resourcemanager.node-labels.provider.update-newly-registered-nodes-interval-ms":"30000","fs.s3a.change.detection.version.required":"true","yarn.nodemanager.localizer.fetch.thread-count":"4","yarn.resourcemanager.scheduler.client.thread-count":"50","hadoop.ssl.hostname.verifier":"DEFAULT","yarn.timeline-service.leveldb-state-store.path":"${hadoop.tmp.dir}/yarn/timeline","mapreduce.job.classloader":"false","mapreduce.task.profile.map.params":"${mapreduce.task.profile.params}","ipc.client.connect.timeout":"20000","hadoop.security.auth_to_local.mechanism":"hadoop","yarn.timeline-service.app-collector.linger-period.ms":"60000","yarn.fs-store.file.replication":"0","yarn.nm.liveness-monitor.expiry-interval-ms":"600000","yarn.resourcemanager.reservation-system.planfollower.time-step":"1000","yarn.resourcemanager.proxy.timeout.enabled":"true","yarn.resourcemanager.activities-manager.scheduler-activities.ttl-ms":"600000","yarn.nodemanager.runtime.linux.docker.enable-userremapping.allowed":"true","yarn.webapp.api-service.enable":"false","yarn.nodemanager.recovery.enabled":"false","mapreduce.job.end-notification.retry.interval":"1000","fs.du.interval":"600000","fs.ftp.impl":"org.apache.hadoop.fs.ftp.FTPFileSystem","yarn.nodemanager.container.stderr.tail.bytes":"4096","yarn.nodemanager.disk-health-checker.disk-free-space-threshold.enabled":"true","io.compression.codec.snappy.buffersize":"262144","hadoop.security.group.mapping.ldap.read.timeout.ms":"60000","hadoop.security.groups.cache.warn.after.ms":"5000","file.bytes-per-checksum":"512","mapreduce.outputcommitter.factory.scheme.s3a":"org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory","io.erasurecode.codec.native.enabled":"true","hadoop.security.groups.cache.background.reload":"false","yarn.nodemanager.container-monitor.enabled":"true","yarn.nodemanager.elastic-memory-control.enabled":"false","fs.AbstractFileSystem.ofs.impl":"org.apache.hadoop.fs.ozone.RootedOzFs","net.topology.script.number.args":"100","mapreduce.task.merge.progress.records":"10000","yarn.nodemanager.localizer.address":"${yarn.nodemanager.hostname}:8040","yarn.timeline-service.keytab":"/etc/krb5.keytab","mapreduce.reduce.shuffle.fetch.retry.timeout-ms":"30000","yarn.resourcemanager.rm.container-allocation.expiry-interval-ms":"600000","yarn.nodemanager.container-executor.exit-code-file.timeout-ms":"2000","mapreduce.fileoutputcommitter.algorithm.version":"1","yarn.router.webapp.cross-origin.enabled":"false","yarn.resourcemanager.work-preserving-recovery.enabled":"true","mapreduce.map.skip.maxrecords":"0","yarn.sharedcache.root-dir":"/sharedcache","fs.s3a.retry.throttle.limit":"20","fs.trash.clean.trashroot.enable":"false","hadoop.http.authentication.type":"simple","fs.viewfs.overload.scheme.target.oss.impl":"org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem","yarn.federation.gpg.policy.generator.interval":"1h","mapreduce.job.cache.limit.max-resources":"0","mapreduce.task.userlog.limit.kb":"0","ipc.[port_number].weighted-cost.handler":"1","yarn.resourcemanager.scheduler.monitor.enable":"false","ipc.client.connect.max.retries":"10","hadoop.registry.zk.retry.times":"5","yarn.nodemanager.resource-monitor.interval-ms":"3000","yarn.nodemanager.resource-plugins.gpu.allowed-gpu-devices":"auto","mapreduce.job.sharedcache.mode":"disabled","yarn.federation.state-store.sql.minimum-idle":"1","yarn.nodemanager.webapp.rest-csrf.custom-header":"X-XSRF-Header","mapreduce.shuffle.listen.queue.size":"128","yarn.scheduler.configuration.mutation.acl-policy.class":"org.apache.hadoop.yarn.server.resourcemanager.scheduler.DefaultConfigurationMutationACLPolicy","yarn.federation.gpg.subcluster.cleaner.interval-ms":"-1ms","mapreduce.map.cpu.vcores":"1","yarn.log-aggregation.file-formats":"TFile","yarn.timeline-service.client.fd-retain-secs":"300","fs.s3a.select.output.csv.field.delimiter":",","yarn.nodemanager.health-checker.timeout-ms":"1200000","hadoop.user.group.static.mapping.overrides":"dr.who=;","fs.azure.sas.expiry.period":"90d","fs.s3a.select.output.csv.record.delimiter":"\\n","mapreduce.jobhistory.recovery.store.class":"org.apache.hadoop.mapreduce.v2.hs.HistoryServerFileSystemStateStoreService","fs.viewfs.overload.scheme.target.https.impl":"org.apache.hadoop.fs.http.HttpsFileSystem","yarn.federation.gpg.policy.generator.readonly":"false","yarn.router.deregister.subcluster.enabled":"true","yarn.resourcemanager.fail-fast":"${yarn.fail-fast}","yarn.resourcemanager.proxy-user-privileges.enabled":"false","yarn.router.webapp.interceptor-class.pipeline":"org.apache.hadoop.yarn.server.router.webapp.DefaultRequestInterceptorREST","yarn.nodemanager.resource.memory.cgroups.soft-limit-percentage":"90.0","mapreduce.job.reducer.preempt.delay.sec":"0","hadoop.util.hash.type":"murmur","yarn.nodemanager.disk-validator":"basic","yarn.app.mapreduce.client.job.max-retries":"3","fs.viewfs.overload.scheme.target.ftp.impl":"org.apache.hadoop.fs.ftp.FTPFileSystem","mapreduce.reduce.shuffle.retry-delay.max.ms":"60000","hadoop.security.group.mapping.ldap.connection.timeout.ms":"60000","mapreduce.task.profile.params":"-agentlib:hprof=cpu=samples,heap=sites,force=n,thread=y,verbose=n,file=%s","yarn.app.mapreduce.shuffle.log.backups":"0","yarn.nodemanager.container-diagnostics-maximum-size":"10000","hadoop.registry.zk.retry.interval.ms":"1000","yarn.federation.gpg.scheduled.executor.threads":"10","yarn.nodemanager.linux-container-executor.cgroups.delete-timeout-ms":"1000","yarn.nodemanager.aux-services.%s.classpath":"NONE","fs.AbstractFileSystem.file.impl":"org.apache.hadoop.fs.local.LocalFs","yarn.federation.gpg.webapp.connect-timeout":"30s","yarn.nodemanager.log-aggregation.roll-monitoring-interval-seconds":"-1","mapreduce.jobhistory.cleaner.interval-ms":"86400000","hadoop.registry.zk.quorum":"localhost:2181","yarn.nodemanager.runtime.linux.runc.allowed-container-runtimes":"runc","mapreduce.output.fileoutputformat.compress":"false","yarn.resourcemanager.am-rm-tokens.master-key-rolling-interval-secs":"*********(redacted)","fs.s3a.assumed.role.session.duration":"30m","hadoop.security.group.mapping.ldap.conversion.rule":"none","hadoop.ssl.server.conf":"ssl-server.xml","fs.s3a.retry.throttle.interval":"100ms","yarn.router.subcluster.cleaner.interval.time":"60s","yarn.nodemanager.log.delete.threshold":"100g","seq.io.sort.factor":"100","fs.viewfs.overload.scheme.target.ofs.impl":"org.apache.hadoop.fs.ozone.RootedOzoneFileSystem","yarn.sharedcache.cleaner.initial-delay-mins":"10","mapreduce.client.completion.pollinterval":"5000","hadoop.ssl.keystores.factory.class":"org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory","yarn.resourcemanager.nodestore-rootdir.retry-interval-ms":"1000","yarn.app.mapreduce.am.resource.cpu-vcores":"1","yarn.timeline-service.enabled":"false","yarn.nodemanager.runtime.linux.docker.capabilities":"CHOWN,DAC_OVERRIDE,FSETID,FOWNER,MKNOD,NET_RAW,SETGID,SETUID,SETFCAP,SETPCAP,NET_BIND_SERVICE,SYS_CHROOT,KILL,AUDIT_WRITE","yarn.acl.enable":"false","yarn.timeline-service.entity-group-fs-store.done-dir":"/tmp/entity-file-history/done/","hadoop.security.group.mapping.ldap.num.attempts.before.failover":"3","mapreduce.task.profile":"false","yarn.federation.gpg.application.cleaner.class":"org.apache.hadoop.yarn.server.globalpolicygenerator.applicationcleaner.DefaultApplicationCleaner","hadoop.prometheus.endpoint.enabled":"false","yarn.resourcemanager.fs.state-store.uri":"${hadoop.tmp.dir}/yarn/system/rmstore","mapreduce.jobhistory.always-scan-user-dir":"false","yarn.nodemanager.opportunistic-containers-use-pause-for-preemption":"false","yarn.nodemanager.linux-container-executor.nonsecure-mode.local-user":"nobody","yarn.timeline-service.reader.class":"org.apache.hadoop.yarn.server.timelineservice.storage.HBaseTimelineReaderImpl","yarn.resourcemanager.configuration.provider-class":"org.apache.hadoop.yarn.LocalConfigurationProvider","yarn.nodemanager.runtime.linux.docker.userremapping-uid-threshold":"1","yarn.resourcemanager.configuration.file-system-based-store":"/yarn/conf","fs.creation.parallel.count":"64","mapreduce.job.cache.limit.max-single-resource-mb":"0","yarn.nodemanager.runtime.linux.docker.stop.grace-period":"10","yarn.federation.state-store.sql.max-life-time":"30m","yarn.resourcemanager.resource-profiles.source-file":"resource-profiles.json","mapreduce.job.dfs.storage.capacity.kill-limit-exceed":"false","yarn.nodemanager.resource.percentage-physical-cpu-limit":"100","mapreduce.jobhistory.client.thread-count":"10","tfile.fs.input.buffer.size":"262144","mapreduce.client.progressmonitor.pollinterval":"1000","yarn.nodemanager.log-dirs":"${yarn.log.dir}/userlogs","yarn.resourcemanager.opportunistic.max.container-allocation.per.am.heartbeat":"-1","fs.automatic.close":"true","yarn.resourcemanager.delegation-token-renewer.thread-retry-interval":"*********(redacted)","yarn.resourcemanager.node-labels.am.allow-non-exclusive-allocation":"false","fs.s3a.select.input.csv.quote.character":"\"","yarn.nodemanager.hostname":"0.0.0.0","ipc.[port_number].cost-provider.impl":"org.apache.hadoop.ipc.DefaultCostProvider","yarn.nodemanager.runtime.linux.runc.manifest-to-resources-plugin":"org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.runtime.runc.HdfsManifestToResourcesPlugin","yarn.nodemanager.remote-app-log-dir-include-older":"true","yarn.nodemanager.resource.memory.cgroups.swappiness":"0","ftp.stream-buffer-size":"4096","yarn.fail-fast":"false","yarn.nodemanager.runtime.linux.runc.layer-mounts-to-keep":"100","yarn.timeline-service.app-aggregation-interval-secs":"15","hadoop.security.group.mapping.ldap.search.filter.user":"(&(objectClass=user)(sAMAccountName={0}))","yarn.resourcemanager.nodestore-rootdir.num-retries":"1000","ipc.[port_number].weighted-cost.lockshared":"10","yarn.nodemanager.container-localizer.log.level":"INFO","yarn.timeline-service.address":"${yarn.timeline-service.hostname}:10200","mapreduce.job.ubertask.maxmaps":"9","fs.s3a.threads.keepalivetime":"60s","mapreduce.jobhistory.webapp.rest-csrf.methods-to-ignore":"GET,OPTIONS,HEAD","mapreduce.task.files.preserve.failedtasks":"false","yarn.app.mapreduce.client.job.retry-interval":"2000","ha.failover-controller.graceful-fence.connection.retries":"1","fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","fs.s3a.select.output.csv.quote.escape.character":"\\\\","yarn.dispatcher.print-thread-pool.maximum-pool-size":"5","yarn.resourcemanager.delegation.token.max-lifetime":"*********(redacted)","hadoop.kerberos.keytab.login.autorenewal.enabled":"false","yarn.timeline-service.client.drain-entities.timeout.ms":"2000","hadoop.caller.context.separator":",","yarn.nodemanager.resource-plugins.fpga.vendor-plugin.class":"org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.fpga.IntelFpgaOpenclPlugin","yarn.resourcemanager.nodemanagers.heartbeat-interval-min-ms":"1000","yarn.timeline-service.entity-group-fs-store.summary-store":"org.apache.hadoop.yarn.server.timeline.LeveldbTimelineStore","mapreduce.reduce.cpu.vcores":"1","mapreduce.job.encrypted-intermediate-data.buffer.kb":"128","hadoop.security.crypto.codec.classes.sm4.ctr.nopadding":"org.apache.hadoop.crypto.OpensslSm4CtrCryptoCodec, org.apache.hadoop.crypto.JceSm4CtrCryptoCodec","yarn.federation.gpg.webapp.read-timeout":"30s","fs.client.resolve.remote.symlinks":"true","yarn.nodemanager.webapp.https.address":"0.0.0.0:8044","hadoop.http.cross-origin.allowed-origins":"*","mapreduce.job.encrypted-intermediate-data":"false","yarn.nodemanager.disk-health-checker.disk-utilization-threshold.enabled":"true","fs.s3a.executor.capacity":"16","yarn.timeline-service.entity-group-fs-store.retain-seconds":"604800","yarn.resourcemanager.metrics.runtime.buckets":"60,300,1440","yarn.timeline-service.generic-application-history.max-applications":"10000","yarn.nodemanager.local-dirs":"${hadoop.tmp.dir}/nm-local-dir","mapreduce.shuffle.connection-keep-alive.enable":"false","yarn.node-labels.configuration-type":"centralized","fs.s3a.path.style.access":"true","yarn.nodemanager.aux-services.mapreduce_shuffle.class":"org.apache.hadoop.mapred.ShuffleHandler","yarn.sharedcache.store.in-memory.staleness-period-mins":"10080","fs.adl.impl":"org.apache.hadoop.fs.adl.AdlFileSystem","yarn.resourcemanager.application.max-tags":"10","hadoop.domainname.resolver.impl":"org.apache.hadoop.net.DNSDomainNameResolver","yarn.resourcemanager.nodemanager.minimum.version":"NONE","mapreduce.jobhistory.webapp.xfs-filter.xframe-options":"SAMEORIGIN","yarn.app.mapreduce.am.staging-dir.erasurecoding.enabled":"false","net.topology.impl":"org.apache.hadoop.net.NetworkTopology","io.map.index.skip":"0","yarn.timeline-service.reader.webapp.https.address":"${yarn.timeline-service.webapp.https.address}","fs.ftp.data.connection.mode":"ACTIVE_LOCAL_DATA_CONNECTION_MODE","mapreduce.job.local-fs.single-disk-limit.check.kill-limit-exceed":"true","fs.azure.buffer.dir":"${env.LOCAL_DIRS:-${hadoop.tmp.dir}}/abfs","yarn.scheduler.maximum-allocation-vcores":"4","hadoop.http.cross-origin.allowed-headers":"X-Requested-With,Content-Type,Accept,Origin","yarn.nodemanager.log-aggregation.compression-type":"none","yarn.timeline-service.version":"1.0f","yarn.ipc.rpc.class":"org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC","mapreduce.reduce.maxattempts":"4","yarn.resourcemanager.system-metrics-publisher.timeline-server-v1.batch-size":"1000","hadoop.security.dns.log-slow-lookups.enabled":"false","mapreduce.job.committer.setup.cleanup.needed":"true","hadoop.security.secure.random.impl":"org.apache.hadoop.crypto.random.OpensslSecureRandom","mapreduce.job.running.reduce.limit":"0","fs.s3a.select.errors.include.sql":"false","ipc.maximum.response.length":"134217728","yarn.resourcemanager.webapp.rest-csrf.methods-to-ignore":"GET,OPTIONS,HEAD","mapreduce.job.token.tracking.ids.enabled":"*********(redacted)","hadoop.caller.context.max.size":"128","yarn.nodemanager.runtime.linux.docker.host-pid-namespace.allowed":"false","yarn.nodemanager.runtime.linux.docker.delayed-removal.allowed":"false","hadoop.registry.system.acls":"sasl:yarn@, sasl:mapred@, sasl:hdfs@","yarn.nodemanager.recovery.dir":"${hadoop.tmp.dir}/yarn-nm-recovery","yarn.federation.gpg.policy.generator.load-based.weight.minimum":"0","fs.s3a.fast.upload.buffer":"disk","mapreduce.jobhistory.intermediate-done-dir":"${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate","yarn.app.mapreduce.shuffle.log.separate":"true","yarn.log-aggregation.debug.filesize":"104857600","yarn.dispatcher.print-thread-pool.keep-alive-time":"10s","yarn.router.subcluster.heartbeat.expiration.time":"30m","fs.s3a.max.total.tasks":"32","fs.s3a.readahead.range":"256K","hadoop.http.authentication.simple.anonymous.allowed":"true","fs.s3a.fast.upload":"true","fs.s3a.attempts.maximum":"5","yarn.federation.amrmproxy.allocation.history.max.entry":"100","hadoop.registry.zk.connection.timeout.ms":"15000","yarn.resourcemanager.delegation-token-renewer.thread-count":"*********(redacted)","yarn.resourcemanager.delegation-token-renewer.thread-timeout":"*********(redacted)","yarn.timeline-service.leveldb-timeline-store.start-time-write-cache-size":"10000","yarn.nodemanager.aux-services.manifest.reload-ms":"0","yarn.nodemanager.emit-container-events":"true","yarn.resourcemanager.resource-profiles.enabled":"false","yarn.timeline-service.hbase-schema.prefix":"prod.","fs.azure.authorization":"false","mapreduce.map.log.level":"INFO","ha.failover-controller.active-standby-elector.zk.op.retries":"3","yarn.resourcemanager.decommissioning-nodes-watcher.poll-interval-secs":"20","mapreduce.output.fileoutputformat.compress.type":"RECORD","yarn.resourcemanager.leveldb-state-store.path":"${hadoop.tmp.dir}/yarn/system/rmstore","yarn.timeline-service.webapp.rest-csrf.custom-header":"X-XSRF-Header","mapreduce.task.spill.files.count.limit":"-1","mapreduce.ifile.readahead.bytes":"4194304","yarn.sharedcache.app-checker.class":"org.apache.hadoop.yarn.server.sharedcachemanager.RemoteAppChecker","yarn.nodemanager.linux-container-executor.nonsecure-mode.limit-users":"true","yarn.nodemanager.resource.detect-hardware-capabilities":"false","mapreduce.cluster.acls.enabled":"false","mapreduce.job.speculative.retry-after-no-speculate":"1000","fs.viewfs.overload.scheme.target.abfs.impl":"org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem","yarn.federation.gpg.webapp.address":"0.0.0.0:8069","hadoop.security.group.mapping.ldap.search.group.hierarchy.levels":"0","fs.s3a.input.fadvise":"random","yarn.resourcemanager.fs.state-store.retry-interval-ms":"1000","file.stream-buffer-size":"4096","yarn.resourcemanager.application-timeouts.monitor.interval-ms":"3000","mapreduce.map.output.compress.codec":"org.apache.hadoop.io.compress.DefaultCodec","mapreduce.map.speculative":"true","yarn.nodemanager.runtime.linux.runc.image-tag-to-manifest-plugin.hdfs-hash-file":"/runc-root/image-tag-to-hash","mapreduce.job.speculative.retry-after-speculate":"15000","yarn.federation.failover.random.order":"false","yarn.nodemanager.linux-container-executor.cgroups.mount":"false","yarn.app.mapreduce.am.container.log.backups":"0","yarn.app.mapreduce.am.log.level":"INFO","yarn.nodemanager.runtime.linux.runc.image-tag-to-manifest-plugin":"org.apache.hadoop.yarn.server.nodemanager.containermanager.linux.runtime.runc.ImageTagToManifestPlugin","io.bytes.per.checksum":"512","mapreduce.job.reduce.slowstart.completedmaps":"0.05","yarn.timeline-service.http-authentication.type":"simple","hadoop.security.group.mapping.ldap.search.attr.group.name":"cn","yarn.nodemanager.resource-plugins.fpga.allowed-fpga-devices":"auto","yarn.timeline-service.client.internal-timers-ttl-secs":"420","io.compression.codec.zstd.buffersize":"0","fs.s3a.select.output.csv.quote.character":"\"","hadoop.http.logs.enabled":"true","fs.s3a.block.size":"32M","yarn.sharedcache.client-server.address":"0.0.0.0:8045","yarn.nodemanager.logaggregation.threadpool-size-max":"100","yarn.resourcemanager.hostname":"0.0.0.0","ipc.callqueue.overflow.trigger.failover":"false","yarn.resourcemanager.delegation.key.update-interval":"86400000","mapreduce.reduce.shuffle.fetch.retry.enabled":"${yarn.nodemanager.recovery.enabled}","mapreduce.map.memory.mb":"-1","mapreduce.task.skip.start.attempts":"2","fs.AbstractFileSystem.hdfs.impl":"org.apache.hadoop.fs.Hdfs","yarn.nodemanager.disk-health-checker.enable":"true","fs.s3a.select.output.csv.quote.fields":"always","ipc.client.tcpnodelay":"true","ipc.client.rpc-timeout.ms":"120000","yarn.nodemanager.webapp.rest-csrf.methods-to-ignore":"GET,OPTIONS,HEAD","yarn.resourcemanager.delegation-token-renewer.thread-retry-max-attempts":"*********(redacted)","ipc.client.low-latency":"false","yarn.scheduler.skip.node.multiplier":"2","mapreduce.input.lineinputformat.linespermap":"1","yarn.router.interceptor.user.threadpool-size":"5","ipc.client.connect.max.retries.on.timeouts":"45","yarn.timeline-service.leveldb-timeline-store.read-cache-size":"104857600","fs.AbstractFileSystem.har.impl":"org.apache.hadoop.fs.HarFs","mapreduce.job.split.metainfo.maxsize":"10000000","yarn.am.liveness-monitor.expiry-interval-ms":"900000","yarn.resourcemanager.container-tokens.master-key-rolling-interval-secs":"*********(redacted)","yarn.timeline-service.entity-group-fs-store.app-cache-size":"10","yarn.nodemanager.runtime.linux.runc.hdfs-manifest-to-resources-plugin.stat-cache-timeout-interval-secs":"360","fs.s3a.socket.recv.buffer":"8192","ipc.backoff.enable":"false","rpc.metrics.timeunit":"MILLISECONDS","yarn.resourcemanager.resource-tracker.address":"${yarn.resourcemanager.hostname}:8031","yarn.nodemanager.node-labels.provider.fetch-timeout-ms":"1200000","mapreduce.job.heap.memory-mb.ratio":"0.8","yarn.resourcemanager.leveldb-state-store.compaction-interval-secs":"3600","yarn.resourcemanager.webapp.rest-csrf.custom-header":"X-XSRF-Header","yarn.nodemanager.pluggable-device-framework.enabled":"false","yarn.scheduler.configuration.fs.path":"file://${hadoop.tmp.dir}/yarn/system/schedconf","mapreduce.client.output.filter":"FAILED","hadoop.http.filter.initializers":"org.apache.hadoop.http.lib.StaticUserWebFilter","mapreduce.reduce.memory.mb":"-1","yarn.timeline-service.hostname":"0.0.0.0","file.replication":"1","yarn.nodemanager.container-metrics.unregister-delay-ms":"10000","yarn.nodemanager.container-metrics.period-ms":"-1","mapreduce.fileoutputcommitter.task.cleanup.enabled":"false","yarn.nodemanager.log.retain-seconds":"10800","yarn.timeline-service.entity-group-fs-store.cleaner-interval-seconds":"3600","ipc.[port_number].callqueue.impl":"java.util.concurrent.LinkedBlockingQueue","yarn.resourcemanager.keytab":"/etc/krb5.keytab","hadoop.security.group.mapping.providers.combined":"true","mapreduce.reduce.merge.inmem.threshold":"1000","yarn.timeline-service.recovery.enabled":"false","fs.azure.saskey.usecontainersaskeyforallaccess":"true","yarn.sharedcache.nm.uploader.thread-count":"20","yarn.resourcemanager.nodemanager-graceful-decommission-timeout-secs":"3600","ipc.[port_number].weighted-cost.lockfree":"1","mapreduce.shuffle.ssl.enabled":"false","yarn.timeline-service.hbase.coprocessor.app-final-value-retention-milliseconds":"259200000","mapreduce.jvm.add-opens-as-default":"true","yarn.nodemanager.opportunistic-containers-max-queue-length":"0","yarn.resourcemanager.state-store.max-completed-applications":"${yarn.resourcemanager.max-completed-applications}","mapreduce.job.speculative.minimum-allowed-tasks":"10","fs.s3a.aws.credentials.provider":"*********(redacted)","yarn.log-aggregation.retain-seconds":"-1","yarn.router.interceptor.allow-partial-result.enable":"false","yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb":"0","mapreduce.jobhistory.max-age-ms":"604800000","hadoop.http.cross-origin.allowed-methods":"GET,POST,HEAD","mapreduce.task.ping-for-liveliness-check.enabled":"false","yarn.resourcemanager.opportunistic-container-allocation.enabled":"false","fs.azure.enable.readahead":"true","mapreduce.jobhistory.webapp.address":"0.0.0.0:19888","hadoop.system.tags":"YARN,HDFS,NAMENODE,DATANODE,REQUIRED,SECURITY,KERBEROS,PERFORMANCE,CLIENT\n ,SERVER,DEBUG,DEPRECATED,COMMON,OPTIONAL","yarn.federation.gpg.webapp.cross-origin.enabled":"false","yarn.log-aggregation.file-controller.TFile.class":"org.apache.hadoop.yarn.logaggregation.filecontroller.tfile.LogAggregationTFileController","yarn.client.nodemanager-connect.max-wait-ms":"180000","yarn.resourcemanager.webapp.address":"${yarn.resourcemanager.hostname}:8088","mapreduce.jobhistory.recovery.enable":"false","mapreduce.reduce.shuffle.parallelcopies":"5","fs.AbstractFileSystem.webhdfs.impl":"org.apache.hadoop.fs.WebHdfs","fs.trash.interval":"0","yarn.app.mapreduce.client.max-retries":"3","hadoop.security.authentication":"simple","mapreduce.task.profile.reduce.params":"${mapreduce.task.profile.params}","yarn.app.mapreduce.am.resource.mb":"1536","mapreduce.input.fileinputformat.list-status.num-threads":"1","io.compression.codec.lzo.class":"org.apache.hadoop.io.compress.LzoCodec","yarn.nodemanager.container-executor.class":"org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor","yarn.router.interceptor.user-thread-pool.minimum-pool-size":"5","io.mapfile.bloom.size":"1048576","yarn.timeline-service.ttl-ms":"604800000","yarn.resourcemanager.nm-container-queuing.min-queue-length":"5","yarn.nodemanager.resource.cpu-vcores":"-1","yarn.federation.state-store.clean-up-retry-sleep-time":"1s","mapreduce.job.reduces":"1","fs.s3a.multipart.size":"64M","fs.s3a.select.input.csv.comment.marker":"#","yarn.scheduler.minimum-allocation-vcores":"1","mapreduce.job.speculative.speculative-cap-total-tasks":"0.01","hadoop.ssl.client.conf":"ssl-client.xml","mapreduce.job.queuename":"default","mapreduce.job.encrypted-intermediate-data-key-size-bits":"128","fs.iostatistics.thread.level.enabled":"true","ipc.[port_number].weighted-cost.response":"1","yarn.nodemanager.webapp.xfs-filter.xframe-options":"SAMEORIGIN","ha.health-monitor.sleep-after-disconnect.ms":"1000","yarn.app.mapreduce.shuffle.log.limit.kb":"0","hadoop.security.group.mapping":"org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback","yarn.client.application-client-protocol.poll-timeout-ms":"-1","mapreduce.jobhistory.jhist.format":"binary","mapreduce.task.stuck.timeout-ms":"600000","yarn.resourcemanager.application.max-tag.length":"100","yarn.resourcemanager.ha.enabled":"false","dfs.client.ignore.namenode.default.kms.uri":"false","hadoop.http.staticuser.user":"dr.who","mapreduce.task.exit.timeout.check-interval-ms":"20000","mapreduce.jobhistory.intermediate-user-done-dir.permissions":"770","mapreduce.task.exit.timeout":"60000","yarn.nodemanager.linux-container-executor.resources-handler.class":"org.apache.hadoop.yarn.server.nodemanager.util.DefaultLCEResourcesHandler","mapreduce.reduce.shuffle.memory.limit.percent":"0.25","yarn.resourcemanager.reservation-system.enable":"false","mapreduce.map.output.compress":"false","ha.zookeeper.acl":"world:anyone:rwcda","yarn.federation.state-store.sql.conn-time-out":"10s","io.compression.codec.lz4.buffersize":"262144","ipc.server.max.connections":"0","yarn.nodemanager.runtime.linux.docker.default-container-network":"host","yarn.router.webapp.address":"0.0.0.0:8089","yarn.scheduler.maximum-allocation-mb":"8192","yarn.resourcemanager.scheduler.monitor.policies":"org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy","yarn.sharedcache.cleaner.period-mins":"1440","ipc.client.async.calls.max":"100","yarn.nodemanager.resource-plugins.gpu.docker-plugin.nvidia-docker-v1.endpoint":"http://localhost:3476/v1.0/docker/cli","yarn.app.mapreduce.am.container.log.limit.kb":"0","ipc.client.connect.retry.interval":"1000","yarn.timeline-service.http-cross-origin.enabled":"false","fs.wasbs.impl":"org.apache.hadoop.fs.azure.NativeAzureFileSystem$Secure","yarn.resourcemanager.nodemanagers.heartbeat-interval-max-ms":"1000","hadoop.http.jmx.nan-filter.enabled":"false","yarn.router.scheduled.executor.threads":"1","yarn.federation.subcluster-resolver.class":"org.apache.hadoop.yarn.server.federation.resolver.DefaultSubClusterResolverImpl","yarn.resourcemanager.zk-state-store.parent-path":"/rmstore","fs.s3a.select.input.csv.field.delimiter":",","yarn.nodemanager.least-load-policy-selector.multiplier":"50000","mapreduce.jobhistory.cleaner.enable":"true","yarn.timeline-service.client.fd-flush-interval-secs":"10","hadoop.security.kms.client.encrypted.key.cache.expiry":"43200000","yarn.client.nodemanager-client-async.thread-pool-max-size":"500","mapreduce.map.maxattempts":"4","yarn.resourcemanager.nm-container-queuing.sorting-nodes-interval-ms":"1000","fs.s3a.committer.staging.tmp.path":"tmp/staging","yarn.nodemanager.sleep-delay-before-sigkill.ms":"250","yarn.resourcemanager.nm-container-queuing.min-queue-wait-time-ms":"10","mapreduce.job.end-notification.retry.attempts":"0","yarn.nodemanager.resource.count-logical-processors-as-cores":"false","hadoop.registry.zk.root":"/registry","yarn.federation.state-store.sql.pool-name":"YARN-Federation-DataBasePool","adl.feature.ownerandgroup.enableupn":"false","yarn.resourcemanager.zk-max-znode-size.bytes":"1048576","mapreduce.job.reduce.shuffle.consumer.plugin.class":"org.apache.hadoop.mapreduce.task.reduce.Shuffle","yarn.resourcemanager.delayed.delegation-token.removal-interval-ms":"*********(redacted)","yarn.nodemanager.localizer.cache.target-size-mb":"10240","fs.s3a.committer.staging.conflict-mode":"append","mapreduce.client.libjars.wildcard":"true","fs.s3a.committer.staging.unique-filenames":"true","yarn.nodemanager.node-attributes.provider.fetch-timeout-ms":"1200000","yarn.nodemanager.amrmproxy.wait.uam-register.done":"false","fs.s3a.list.version":"2","ftp.client-write-packet-size":"65536","yarn.federation.gpg.policy.generator.load-based.pending.minimum":"100","ipc.[port_number].weighted-cost.lockexclusive":"100","fs.AbstractFileSystem.adl.impl":"org.apache.hadoop.fs.adl.Adl","yarn.nodemanager.container-log-monitor.enable":"false","hadoop.security.key.default.cipher":"AES/CTR/NoPadding","yarn.client.failover-retries":"0","fs.s3a.multipart.purge.age":"24h","mapreduce.job.local-fs.single-disk-limit.check.interval-ms":"5000","net.topology.node.switch.mapping.impl":"org.apache.hadoop.net.ScriptBasedMapping","yarn.nodemanager.amrmproxy.address":"0.0.0.0:8049","ipc.server.listen.queue.size":"256","ipc.[port_number].decay-scheduler.period-ms":"5000","yarn.nodemanager.container-localizer.java.opts.add-exports-as-default":"true","yarn.nodemanager.runtime.linux.runc.image-tag-to-manifest-plugin.cache-refresh-interval-secs":"60","map.sort.class":"org.apache.hadoop.util.QuickSort","yarn.federation.state-store.max-applications":"1000","fs.viewfs.rename.strategy":"SAME_MOUNTPOINT","hadoop.security.kms.client.authentication.retry-count":"1","fs.permissions.umask-mode":"022","fs.s3a.assumed.role.credentials.provider":"org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider","yarn.nodemanager.runtime.linux.runc.privileged-containers.allowed":"false","ipc.server.handler.queue.size":"100","yarn.nodemanager.vmem-check-enabled":"true","yarn.nodemanager.numa-awareness.enabled":"false","yarn.nodemanager.recovery.compaction-interval-secs":"3600","yarn.app.mapreduce.client-am.ipc.max-retries":"3","yarn.resourcemanager.system-metrics-publisher.timeline-server-v1.interval-seconds":"60","yarn.federation.registry.base-dir":"yarnfederation/","yarn.nodemanager.health-checker.run-before-startup":"false","mapreduce.job.max.map":"-1","mapreduce.job.local-fs.single-disk-limit.bytes":"-1","mapreduce.shuffle.pathcache.concurrency-level":"16","mapreduce.job.ubertask.maxreduces":"1","mapreduce.shuffle.pathcache.max-weight":"10485760","hadoop.security.kms.client.encrypted.key.cache.size":"500","hadoop.security.java.secure.random.algorithm":"SHA1PRNG","ha.failover-controller.cli-check.rpc-timeout.ms":"20000","mapreduce.jobhistory.jobname.limit":"50","fs.s3a.select.input.compression":"none","yarn.client.nodemanager-connect.retry-interval-ms":"10000","ipc.[port_number].scheduler.priority.levels":"4","yarn.timeline-service.state-store-class":"org.apache.hadoop.yarn.server.timeline.recovery.LeveldbTimelineStateStore","yarn.nodemanager.env-whitelist":"JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ","yarn.federation.state-store.clean-up-retry-count":"1","yarn.sharedcache.nested-level":"3","yarn.timeline-service.webapp.rest-csrf.methods-to-ignore":"GET,OPTIONS,HEAD","fs.azure.user.agent.prefix":"unknown","yarn.resourcemanager.zk-delegation-token-node.split-index":"*********(redacted)","yarn.nodemanager.numa-awareness.read-topology":"false","yarn.nodemanager.webapp.address":"${yarn.nodemanager.hostname}:8042","rpc.metrics.quantile.enable":"false","yarn.registry.class":"org.apache.hadoop.registry.client.impl.FSRegistryOperationsService","mapreduce.jobhistory.admin.acl":"*","yarn.resourcemanager.system-metrics-publisher.dispatcher.pool-size":"10","yarn.scheduler.queue-placement-rules":"user-group","hadoop.http.authentication.kerberos.keytab":"${user.home}/hadoop.keytab","yarn.resourcemanager.recovery.enabled":"false","fs.s3a.select.input.csv.header":"none","yarn.federation.gpg.policy.generator.load-based.scaling":"LINEAR","yarn.nodemanager.runtime.linux.runc.hdfs-manifest-to-resources-plugin.stat-cache-size":"500","yarn.timeline-service.webapp.rest-csrf.enabled":"false","yarn.nodemanager.disk-health-checker.min-free-space-per-disk-watermark-high-mb":"0"},"System Properties":{"java.io.tmpdir":"/tmp","line.separator":"\n","path.separator":":","sun.management.compiler":"HotSpot 64-Bit Tiered Compilers","SPARK_SUBMIT":"true","sun.cpu.endian":"little","java.specification.version":"17","java.vm.specification.name":"Java Virtual Machine Specification","java.vendor":"Eclipse Adoptium","java.vm.specification.version":"17","user.home":"/home/spark","sun.arch.data.model":"64","sun.boot.library.path":"/opt/java/openjdk/lib","user.dir":"/opt/spark","java.library.path":"/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib","os.arch":"amd64","java.vm.version":"17.0.12+7","jetty.git.hash":"cef3fbd6d736a21e7d541a5db490381d95a2047d","java.runtime.version":"17.0.12+7","java.vm.info":"mixed mode, sharing","java.runtime.name":"OpenJDK Runtime Environment","java.version.date":"2024-07-16","file.separator":"/","java.class.version":"61.0","java.specification.name":"Java Platform API Specification","file.encoding":"UTF-8","jdk.reflect.useDirectMethodHandle":"false","user.timezone":"Etc/UTC","kubernetes.request.retry.backoffLimit":"3","java.specification.vendor":"Oracle Corporation","sun.java.launcher":"SUN_STANDARD","java.vm.compressedOopsMode":"Zero based","os.version":"6.1.140-154.222.amzn2023.x86_64","native.encoding":"UTF-8","java.vm.specification.vendor":"Oracle Corporation","user.country":"US","sun.jnu.encoding":"UTF-8","user.language":"en","java.vendor.version":"Temurin-17.0.12+7","java.vendor.url":"https://adoptium.net/","os.name":"Linux","java.vm.vendor":"Eclipse Adoptium","jdk.debug":"release","java.vendor.url.bug":"https://github.com/adoptium/adoptium-support/issues","user.name":"spark","java.vm.name":"OpenJDK 64-Bit Server VM","sun.java.command":"org.apache.spark.deploy.SparkSubmit --deploy-mode client --conf spark.driver.bindAddress=100.64.63.89 --conf spark.executorEnv.SPARK_DRIVER_POD_IP=100.64.63.89 --properties-file /opt/spark/conf/spark.properties --class org.apache.spark.deploy.PythonRunner s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/scripts/pyspark-taxi-trip.py s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input/ s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/","java.home":"/opt/java/openjdk","java.version":"17.0.12","sun.io.unicode.encoding":"UnicodeLittle"},"Metrics Properties":{"driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","*.sink.servlet.path":"/metrics/json","*.sink.servlet.class":"org.apache.spark.metrics.sink.MetricsServlet","applications.sink.servlet.path":"/metrics/applications/json","master.sink.servlet.path":"/metrics/master/json","executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet"},"Classpath Entries":{"/opt/spark/jars/hadoop-client-runtime-3.4.1.jar":"System Classpath","/opt/spark/jars/spark-network-common_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/netty-transport-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/netty-transport-native-epoll-4.1.96.Final-linux-x86_64.jar":"System Classpath","/opt/spark/jars/kubernetes-model-common-6.7.2.jar":"System Classpath","/opt/spark/jars/logging-interceptor-3.12.12.jar":"System Classpath","/opt/spark/jars/paranamer-2.8.jar":"System Classpath","/opt/spark/jars/breeze_2.12-2.1.0.jar":"System Classpath","/opt/spark/jars/scala-compiler-2.12.18.jar":"System Classpath","/opt/spark/jars/bonecp-0.8.0.RELEASE.jar":"System Classpath","/opt/spark/jars/spark-hive-thriftserver_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/netty-handler-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/jersey-hk2-2.40.jar":"System Classpath","/opt/spark/jars/netty-buffer-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/leveldbjni-all-1.8.jar":"System Classpath","/opt/spark/jars/kubernetes-model-gatewayapi-6.7.2.jar":"System Classpath","/opt/spark/jars/commons-compress-1.23.0.jar":"System Classpath","/opt/spark/jars/log4j-api-2.20.0.jar":"System Classpath","/opt/spark/jars/super-csv-2.2.0.jar":"System Classpath","/opt/spark/jars/javolution-5.5.1.jar":"System Classpath","/opt/spark/jars/hive-shims-scheduler-2.3.9.jar":"System Classpath","/opt/spark/jars/spark-kubernetes_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/spire-util_2.12-0.17.0.jar":"System Classpath","/opt/spark/jars/netty-transport-classes-epoll-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/gson-2.2.4.jar":"System Classpath","/opt/spark/jars/spark-common-utils_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/kubernetes-client-6.7.2.jar":"System Classpath","/opt/spark/jars/parquet-format-structures-1.13.1.jar":"System Classpath","/opt/spark/jars/parquet-column-1.13.1.jar":"System Classpath","/opt/spark/jars/tink-1.9.0.jar":"System Classpath","/opt/spark/jars/istack-commons-runtime-3.0.8.jar":"System Classpath","/opt/spark/jars/antlr-runtime-3.5.2.jar":"System Classpath","/opt/spark/jars/arrow-memory-core-12.0.1.jar":"System Classpath","/opt/spark/jars/commons-dbcp-1.4.jar":"System Classpath","/opt/spark/jars/chill_2.12-0.10.0.jar":"System Classpath","/opt/spark/jars/log4j-core-2.20.0.jar":"System Classpath","/opt/spark/jars/algebra_2.12-2.0.1.jar":"System Classpath","/opt/spark/jars/xz-1.9.jar":"System Classpath","/opt/spark/jars/spark-sql-api_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-metrics-6.7.2.jar":"System Classpath","/opt/spark/jars/antlr4-runtime-4.9.3.jar":"System Classpath","/opt/spark/jars/hive-service-rpc-3.1.3.jar":"System Classpath","/opt/spark/jars/activation-1.1.1.jar":"System Classpath","/opt/spark/jars/spark-repl_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/objenesis-3.3.jar":"System Classpath","/opt/spark/jars/joda-time-2.12.5.jar":"System Classpath","/opt/spark/jars/netty-codec-http-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/netty-transport-native-epoll-4.1.96.Final-linux-aarch_64.jar":"System Classpath","/opt/spark/jars/hive-storage-api-2.8.1.jar":"System Classpath","/opt/spark/jars/jackson-databind-2.15.2.jar":"System Classpath","/opt/spark/jars/kubernetes-model-policy-6.7.2.jar":"System Classpath","/opt/spark/jars/spark-mllib-local_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/cats-kernel_2.12-2.1.1.jar":"System Classpath","/opt/spark/jars/aopalliance-repackaged-2.6.1.jar":"System Classpath","/opt/spark/jars/lapack-3.0.3.jar":"System Classpath","/opt/spark/jars/spark-sketch_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/xbean-asm9-shaded-4.23.jar":"System Classpath","/opt/spark/jars/JTransforms-3.1.jar":"System Classpath","/opt/spark/jars/jakarta.servlet-api-4.0.3.jar":"System Classpath","/opt/spark/jars/jul-to-slf4j-2.0.7.jar":"System Classpath","/opt/spark/jars/commons-collections-3.2.2.jar":"System Classpath","/opt/spark/jars/oro-2.0.8.jar":"System Classpath","/opt/spark/jars/datanucleus-api-jdo-4.2.4.jar":"System Classpath","/opt/spark/jars/derby-10.14.2.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-coordination-6.7.2.jar":"System Classpath","/opt/spark/jars/javassist-3.29.2-GA.jar":"System Classpath","/opt/spark/jars/kubernetes-model-scheduling-6.7.2.jar":"System Classpath","/opt/spark/jars/netty-common-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/metrics-jvm-4.2.19.jar":"System Classpath","/opt/spark/jars/commons-pool-1.5.4.jar":"System Classpath","/opt/spark/jars/commons-codec-1.16.1.jar":"System Classpath","/opt/spark/jars/breeze-macros_2.12-2.1.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-networking-6.7.2.jar":"System Classpath","/opt/spark/jars/py4j-0.10.9.7.jar":"System Classpath","/opt/spark/jars/annotations-17.0.0.jar":"System Classpath","/opt/spark/jars/jaxb-runtime-2.3.2.jar":"System Classpath","/opt/spark/jars/blas-3.0.3.jar":"System Classpath","/opt/spark/jars/json4s-ast_2.12-3.7.0-M11.jar":"System Classpath","/opt/spark/jars/scala-collection-compat_2.12-2.7.0.jar":"System Classpath","/opt/spark/jars/commons-lang-2.6.jar":"System Classpath","/opt/spark/jars/compress-lzf-1.1.2.jar":"System Classpath","/opt/spark/jars/zookeeper-jute-3.6.3.jar":"System Classpath","/opt/spark/jars/metrics-graphite-4.2.19.jar":"System Classpath","/opt/spark/jars/snakeyaml-engine-2.6.jar":"System Classpath","/opt/spark/jars/json4s-jackson_2.12-3.7.0-M11.jar":"System Classpath","/opt/spark/jars/kubernetes-model-discovery-6.7.2.jar":"System Classpath","/opt/spark/jars/jta-1.1.jar":"System Classpath","/opt/spark/jars/jersey-server-2.40.jar":"System Classpath","/opt/spark/jars/orc-core-1.9.4-shaded-protobuf.jar":"System Classpath","/opt/spark/jars/jersey-common-2.40.jar":"System Classpath","/opt/spark/jars/libthrift-0.12.0.jar":"System Classpath","/opt/spark/jars/spark-tags_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/metrics-json-4.2.19.jar":"System Classpath","/opt/spark/jars/hive-serde-2.3.9.jar":"System Classpath","/opt/spark/jars/RoaringBitmap-0.9.45.jar":"System Classpath","/opt/spark/jars/metrics-core-4.2.19.jar":"System Classpath","/opt/spark/jars/parquet-encoding-1.13.1.jar":"System Classpath","/opt/spark/jars/hive-common-2.3.9.jar":"System Classpath","/opt/spark/jars/hk2-api-2.6.1.jar":"System Classpath","/opt/spark/jars/kubernetes-model-admissionregistration-6.7.2.jar":"System Classpath","/opt/spark/jars/snakeyaml-2.0.jar":"System Classpath","/opt/spark/jars/guava-14.0.1.jar":"System Classpath","/opt/spark/jars/slf4j-api-2.0.7.jar":"System Classpath","/opt/spark/jars/hive-metastore-2.3.9.jar":"System Classpath","/opt/spark/jars/jcl-over-slf4j-2.0.7.jar":"System Classpath","/opt/spark/jars/json4s-core_2.12-3.7.0-M11.jar":"System Classpath","/opt/spark/jars/kubernetes-model-autoscaling-6.7.2.jar":"System Classpath","/opt/spark/jars/univocity-parsers-2.9.1.jar":"System Classpath","/opt/spark/jars/spark-unsafe_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/spark-yarn_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/spark-streaming_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/commons-text-1.10.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-apiextensions-6.7.2.jar":"System Classpath","/opt/spark/jars/netty-transport-classes-kqueue-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/orc-shims-1.9.4.jar":"System Classpath","/opt/spark/jars/jersey-client-2.40.jar":"System Classpath","/opt/spark/jars/netty-codec-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/curator-client-2.13.0.jar":"System Classpath","/opt/spark/jars/jackson-mapper-asl-1.9.13.jar":"System Classpath","/opt/spark/jars/spark-hive_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/jsr305-3.0.0.jar":"System Classpath","/opt/spark/jars/spire_2.12-0.17.0.jar":"System Classpath","/opt/spark/jars/orc-mapreduce-1.9.4-shaded-protobuf.jar":"System Classpath","/opt/spark/jars/jdo-api-3.0.1.jar":"System Classpath","/opt/spark/jars/spark-core_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/hive-exec-2.3.9-core.jar":"System Classpath","/opt/spark/jars/jakarta.annotation-api-1.3.5.jar":"System Classpath","/opt/spark/jars/scala-library-2.12.18.jar":"System Classpath","/opt/spark/jars/ivy-2.5.1.jar":"System Classpath","/opt/spark/jars/minlog-1.3.0.jar":"System Classpath","/opt/spark/jars/shims-0.9.45.jar":"System Classpath","/opt/spark/jars/netty-handler-proxy-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/jackson-annotations-2.15.2.jar":"System Classpath","/opt/spark/jars/kubernetes-model-core-6.7.2.jar":"System Classpath","/opt/spark/jars/kubernetes-model-certificates-6.7.2.jar":"System Classpath","/opt/spark/jars/mesos-1.4.3-shaded-protobuf.jar":"System Classpath","/opt/spark/jars/netty-all-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/scala-reflect-2.12.18.jar":"System Classpath","/opt/spark/jars/netty-transport-native-kqueue-4.1.96.Final-osx-x86_64.jar":"System Classpath","/opt/spark/conf/":"System Classpath","/opt/spark/jars/curator-recipes-2.13.0.jar":"System Classpath","/opt/spark/jars/jakarta.validation-api-2.0.2.jar":"System Classpath","/opt/spark/jars/parquet-common-1.13.1.jar":"System Classpath","/opt/spark/jars/hadoop-aws-3.4.1.jar":"System Classpath","/opt/spark/jars/log4j-slf4j2-impl-2.20.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-batch-6.7.2.jar":"System Classpath","/opt/spark/jars/kubernetes-httpclient-okhttp-6.7.2.jar":"System Classpath","/opt/spark/jars/spire-macros_2.12-0.17.0.jar":"System Classpath","/opt/spark/jars/datasketches-java-3.3.0.jar":"System Classpath","/opt/spark/jars/metrics-jmx-4.2.19.jar":"System Classpath","/opt/spark/jars/hk2-locator-2.6.1.jar":"System Classpath","/opt/spark/jars/lz4-java-1.8.0.jar":"System Classpath","/opt/spark/jars/scala-xml_2.12-2.1.0.jar":"System Classpath","/opt/spark/jars/hive-shims-0.23-2.3.9.jar":"System Classpath","/opt/spark/jars/spire-platform_2.12-0.17.0.jar":"System Classpath","/opt/spark/jars/jakarta.xml.bind-api-2.3.2.jar":"System Classpath","/opt/spark/jars/commons-lang3-3.12.0.jar":"System Classpath","/opt/spark/jars/JLargeArrays-1.5.jar":"System Classpath","/opt/spark/jars/kubernetes-model-rbac-6.7.2.jar":"System Classpath","/opt/spark/jars/jakarta.inject-2.6.1.jar":"System Classpath","/opt/spark/jars/hive-shims-2.3.9.jar":"System Classpath","/opt/spark/jars/spark-launcher_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/parquet-jackson-1.13.1.jar":"System Classpath","/opt/spark/jars/httpcore-4.4.16.jar":"System Classpath","/opt/spark/jars/jodd-core-3.5.2.jar":"System Classpath","/opt/spark/jars/avro-mapred-1.11.2.jar":"System Classpath","/opt/spark/jars/jackson-core-2.15.2.jar":"System Classpath","/opt/spark/jars/spark-catalyst_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/netty-transport-native-kqueue-4.1.96.Final-osx-aarch_64.jar":"System Classpath","/opt/spark/jars/json-1.8.jar":"System Classpath","/opt/spark/jars/commons-crypto-1.1.0.jar":"System Classpath","/opt/spark/jars/arrow-vector-12.0.1.jar":"System Classpath","/opt/spark/jars/stax-api-1.0.1.jar":"System Classpath","/opt/spark/jars/hive-beeline-2.3.9.jar":"System Classpath","/opt/spark/jars/datanucleus-rdbms-4.1.19.jar":"System Classpath","/opt/spark/jars/hadoop-common-3.4.1.jar":"System Classpath","/opt/spark/jars/httpclient-4.5.14.jar":"System Classpath","/opt/spark/jars/commons-io-2.16.1.jar":"System Classpath","/opt/spark/jars/okhttp-3.12.12.jar":"System Classpath","/opt/spark/jars/spark-sql_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/commons-logging-1.1.3.jar":"System Classpath","/opt/spark/jars/datanucleus-core-4.1.17.jar":"System Classpath","/opt/spark/jars/jline-2.14.6.jar":"System Classpath","/opt/spark/jars/kryo-shaded-4.0.2.jar":"System Classpath","/opt/spark/jars/commons-cli-1.5.0.jar":"System Classpath","/opt/spark/jars/jackson-module-scala_2.12-2.15.2.jar":"System Classpath","/opt/spark/jars/HikariCP-2.5.1.jar":"System Classpath","/opt/spark/jars/dropwizard-metrics-hadoop-metrics2-reporter-0.1.2.jar":"System Classpath","/opt/spark/jars/json4s-scalap_2.12-3.7.0-M11.jar":"System Classpath","/opt/spark/jars/chill-java-0.10.0.jar":"System Classpath","/opt/spark/jars/arpack_combined_all-0.1.jar":"System Classpath","/opt/spark/jars/scala-parser-combinators_2.12-2.3.0.jar":"System Classpath","/opt/spark/jars/zookeeper-3.6.3.jar":"System Classpath","/opt/spark/jars/hive-llap-common-2.3.9.jar":"System Classpath","/opt/spark/jars/spark-mesos_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/hive-jdbc-2.3.9.jar":"System Classpath","/opt/spark/jars/netty-resolver-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/jpam-1.1.jar":"System Classpath","/opt/spark/jars/avro-1.11.2.jar":"System Classpath","/opt/spark/jars/opencsv-2.3.jar":"System Classpath","/opt/spark/jars/netty-transport-native-unix-common-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/parquet-hadoop-1.13.1.jar":"System Classpath","/opt/spark/jars/curator-framework-2.13.0.jar":"System Classpath","/opt/spark/jars/jackson-core-asl-1.9.13.jar":"System Classpath","/opt/spark/jars/jackson-dataformat-yaml-2.15.2.jar":"System Classpath","/opt/spark/jars/arrow-memory-netty-12.0.1.jar":"System Classpath","/opt/spark/jars/stream-2.9.6.jar":"System Classpath","/opt/spark/jars/hive-cli-2.3.9.jar":"System Classpath","/opt/spark/jars/kubernetes-model-events-6.7.2.jar":"System Classpath","/opt/spark/jars/spark-graphx_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/jackson-datatype-jsr310-2.15.2.jar":"System Classpath","/opt/spark/jars/avro-ipc-1.11.2.jar":"System Classpath","/opt/spark/jars/rocksdbjni-8.3.2.jar":"System Classpath","/opt/spark/jars/bundle-2.29.0.jar":"System Classpath","/opt/spark/jars/kubernetes-model-node-6.7.2.jar":"System Classpath","/opt/spark/jars/commons-compiler-3.1.9.jar":"System Classpath","/opt/spark/jars/ST4-4.0.4.jar":"System Classpath","/opt/spark/jars/spark-kvstore_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/log4j-1.2-api-2.20.0.jar":"System Classpath","/opt/spark/jars/hadoop-client-api-3.4.1.jar":"System Classpath","/opt/spark/jars/datasketches-memory-2.1.0.jar":"System Classpath","/opt/spark/jars/spark-mllib_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/kubernetes-client-api-6.7.2.jar":"System Classpath","/opt/spark/jars/arrow-format-12.0.1.jar":"System Classpath","/opt/spark/jars/arpack-3.0.3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-resource-6.7.2.jar":"System Classpath","/opt/spark/jars/osgi-resource-locator-1.0.3.jar":"System Classpath","/opt/spark/jars/zstd-jni-1.5.5-4.jar":"System Classpath","/opt/spark/jars/jakarta.ws.rs-api-2.1.6.jar":"System Classpath","/opt/spark/jars/hadoop-shaded-guava-1.1.1.jar":"System Classpath","/opt/spark/jars/okio-1.17.6.jar":"System Classpath","/opt/spark/jars/hadoop-yarn-server-web-proxy-3.4.1.jar":"System Classpath","/opt/spark/jars/hk2-utils-2.6.1.jar":"System Classpath","/opt/spark/jars/audience-annotations-0.5.0.jar":"System Classpath","/opt/spark/jars/flatbuffers-java-1.12.0.jar":"System Classpath","/opt/spark/jars/janino-3.1.9.jar":"System Classpath","/opt/spark/jars/aircompressor-0.27.jar":"System Classpath","/opt/spark/jars/commons-math3-3.6.1.jar":"System Classpath","/opt/spark/jars/transaction-api-1.1.jar":"System Classpath","/opt/spark/jars/kubernetes-model-storageclass-6.7.2.jar":"System Classpath","/opt/spark/jars/libfb303-0.9.3.jar":"System Classpath","/opt/spark/jars/snappy-java-1.1.10.5.jar":"System Classpath","/opt/spark/jars/hive-shims-common-2.3.9.jar":"System Classpath","/opt/spark/jars/jersey-container-servlet-core-2.40.jar":"System Classpath","/opt/spark/jars/netty-codec-http2-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/pickle-1.3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-flowcontrol-6.7.2.jar":"System Classpath","/opt/spark/jars/threeten-extra-1.7.1.jar":"System Classpath","/opt/spark/jars/spark-network-shuffle_2.12-3.5.3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-apps-6.7.2.jar":"System Classpath","/opt/spark/jars/javax.jdo-3.2.0-m3.jar":"System Classpath","/opt/spark/jars/kubernetes-model-extensions-6.7.2.jar":"System Classpath","/opt/spark/jars/netty-codec-socks-4.1.96.Final.jar":"System Classpath","/opt/spark/jars/jersey-container-servlet-2.40.jar":"System Classpath","/opt/spark/jars/zjsonpatch-0.3.0.jar":"System Classpath","/opt/spark/jars/commons-collections4-4.4.jar":"System Classpath"}} +{"Event":"SparkListenerApplicationStart","App Name":"NewYorkTaxiData_2025_06_27_03_56_52","App ID":"spark-cc4d115f011443d787f03a71a476a745","Timestamp":1750996612238,"User":"spark"} +{"Event":"SparkListenerJobStart","Job ID":0,"Submission Time":1750996646244,"Stage Infos":[{"Stage ID":0,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":1,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"1\",\"name\":\"mapPartitions\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[0],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":0,"Name":"ParallelCollectionRDD","Scope":"{\"id\":\"0\",\"name\":\"parallelize\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:563)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[0],"Properties":{"spark.rdd.scope":"{\"id\":\"2\",\"name\":\"collect\"}","spark.rdd.scope.noOverride":"true"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":0,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":1,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"1\",\"name\":\"mapPartitions\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[0],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":0,"Name":"ParallelCollectionRDD","Scope":"{\"id\":\"0\",\"name\":\"parallelize\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:563)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996646256,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.rdd.scope":"{\"id\":\"2\",\"name\":\"collect\"}","resource.executor.cores":"1","spark.rdd.scope.noOverride":"true"}} +{"Event":"SparkListenerExecutorAdded","Timestamp":1750996676192,"Executor ID":"2","Executor Info":{"Host":"100.64.240.100","Total Cores":1,"Log Urls":{},"Attributes":{},"Resources":{},"Resource Profile Id":0,"Registration Time":1750996676192}} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"2","Host":"100.64.240.100","Port":40373},"Maximum Memory":2388236697,"Timestamp":1750996676246,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerExecutorAdded","Timestamp":1750996676258,"Executor ID":"3","Executor Info":{"Host":"100.64.131.144","Total Cores":1,"Log Urls":{},"Attributes":{},"Resources":{},"Resource Profile Id":0,"Registration Time":1750996676258}} +{"Event":"SparkListenerExecutorAdded","Timestamp":1750996676258,"Executor ID":"1","Executor Info":{"Host":"100.64.190.213","Total Cores":1,"Log Urls":{},"Attributes":{},"Resources":{},"Resource Profile Id":0,"Registration Time":1750996676258}} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"1","Host":"100.64.190.213","Port":33709},"Maximum Memory":2388236697,"Timestamp":1750996676314,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerTaskStart","Stage ID":0,"Stage Attempt ID":0,"Task Info":{"Task ID":0,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996676284,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"3","Host":"100.64.131.144","Port":36267},"Maximum Memory":2388236697,"Timestamp":1750996676315,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerExecutorAdded","Timestamp":1750996676321,"Executor ID":"4","Executor Info":{"Host":"100.64.247.4","Total Cores":1,"Log Urls":{},"Attributes":{},"Resources":{},"Resource Profile Id":0,"Registration Time":1750996676321}} +{"Event":"SparkListenerBlockManagerAdded","Block Manager ID":{"Executor ID":"4","Host":"100.64.247.4","Port":43421},"Maximum Memory":2388236697,"Timestamp":1750996676374,"Maximum Onheap Memory":2388236697,"Maximum Offheap Memory":0} +{"Event":"SparkListenerTaskEnd","Stage ID":0,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":0,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996676284,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996678444,"Failed":false,"Killed":false,"Accumulables":[{"ID":1,"Name":"internal.metrics.executorDeserializeTime","Update":303,"Value":303,"Internal":true,"Count Failed Values":true},{"ID":2,"Name":"internal.metrics.executorDeserializeCpuTime","Update":246357317,"Value":246357317,"Internal":true,"Count Failed Values":true},{"ID":3,"Name":"internal.metrics.executorRunTime","Update":1773,"Value":1773,"Internal":true,"Count Failed Values":true},{"ID":4,"Name":"internal.metrics.executorCpuTime","Update":91991016,"Value":91991016,"Internal":true,"Count Failed Values":true},{"ID":5,"Name":"internal.metrics.resultSize","Update":2470,"Value":2470,"Internal":true,"Count Failed Values":true},{"ID":6,"Name":"internal.metrics.jvmGCTime","Update":20,"Value":20,"Internal":true,"Count Failed Values":true},{"ID":7,"Name":"internal.metrics.resultSerializationTime","Update":4,"Value":4,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":303,"Executor Deserialize CPU Time":246357317,"Executor Run Time":1773,"Executor CPU Time":91991016,"Peak Execution Memory":0,"Result Size":2470,"JVM GC Time":20,"Result Serialization Time":4,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":0,"Records Read":0},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":0,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":1,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"1\",\"name\":\"mapPartitions\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[0],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":0,"Name":"ParallelCollectionRDD","Scope":"{\"id\":\"0\",\"name\":\"parallelize\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameReader.parquet(DataFrameReader.scala:563)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996646256,"Completion Time":1750996678453,"Accumulables":[{"ID":1,"Name":"internal.metrics.executorDeserializeTime","Value":303,"Internal":true,"Count Failed Values":true},{"ID":2,"Name":"internal.metrics.executorDeserializeCpuTime","Value":246357317,"Internal":true,"Count Failed Values":true},{"ID":3,"Name":"internal.metrics.executorRunTime","Value":1773,"Internal":true,"Count Failed Values":true},{"ID":4,"Name":"internal.metrics.executorCpuTime","Value":91991016,"Internal":true,"Count Failed Values":true},{"ID":5,"Name":"internal.metrics.resultSize","Value":2470,"Internal":true,"Count Failed Values":true},{"ID":6,"Name":"internal.metrics.jvmGCTime","Value":20,"Internal":true,"Count Failed Values":true},{"ID":7,"Name":"internal.metrics.resultSerializationTime","Value":4,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":0,"Completion Time":1750996678458,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart","executionId":0,"rootExecutionId":0,"description":"showString at NativeMethodAccessorImpl.java:0","details":"org.apache.spark.sql.Dataset.showString(Dataset.scala:315)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","physicalPlanDescription":"== Physical Plan ==\nCollectLimit (4)\n+- * Project (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct\n\n(2) ColumnarToRow [codegen id : 1]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(3) Project [codegen id : 1]\nOutput [20]: [toprettystring(VendorID#0L, Some(Etc/UTC)) AS toprettystring(VendorID)#80, toprettystring(tpep_pickup_datetime#1, Some(Etc/UTC)) AS toprettystring(tpep_pickup_datetime)#81, toprettystring(tpep_dropoff_datetime#2, Some(Etc/UTC)) AS toprettystring(tpep_dropoff_datetime)#82, toprettystring(passenger_count#3, Some(Etc/UTC)) AS toprettystring(passenger_count)#83, toprettystring(trip_distance#4, Some(Etc/UTC)) AS toprettystring(trip_distance)#84, toprettystring(RatecodeID#5, Some(Etc/UTC)) AS toprettystring(RatecodeID)#85, toprettystring(store_and_fwd_flag#6, Some(Etc/UTC)) AS toprettystring(store_and_fwd_flag)#86, toprettystring(PULocationID#7L, Some(Etc/UTC)) AS toprettystring(PULocationID)#87, toprettystring(DOLocationID#8L, Some(Etc/UTC)) AS toprettystring(DOLocationID)#88, toprettystring(payment_type#9L, Some(Etc/UTC)) AS toprettystring(payment_type)#89, toprettystring(fare_amount#10, Some(Etc/UTC)) AS toprettystring(fare_amount)#90, toprettystring(extra#11, Some(Etc/UTC)) AS toprettystring(extra)#91, toprettystring(mta_tax#12, Some(Etc/UTC)) AS toprettystring(mta_tax)#92, toprettystring(tip_amount#13, Some(Etc/UTC)) AS toprettystring(tip_amount)#93, toprettystring(tolls_amount#14, Some(Etc/UTC)) AS toprettystring(tolls_amount)#94, toprettystring(improvement_surcharge#15, Some(Etc/UTC)) AS toprettystring(improvement_surcharge)#95, toprettystring(total_amount#16, Some(Etc/UTC)) AS toprettystring(total_amount)#96, toprettystring(congestion_surcharge#17, Some(Etc/UTC)) AS toprettystring(congestion_surcharge)#97, toprettystring(airport_fee#18, Some(Etc/UTC)) AS toprettystring(airport_fee)#98, 2025-06-27 03:57:59.158854 AS toprettystring(current_date)#99]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(4) CollectLimit\nInput [20]: [toprettystring(VendorID)#80, toprettystring(tpep_pickup_datetime)#81, toprettystring(tpep_dropoff_datetime)#82, toprettystring(passenger_count)#83, toprettystring(trip_distance)#84, toprettystring(RatecodeID)#85, toprettystring(store_and_fwd_flag)#86, toprettystring(PULocationID)#87, toprettystring(DOLocationID)#88, toprettystring(payment_type)#89, toprettystring(fare_amount)#90, toprettystring(extra)#91, toprettystring(mta_tax)#92, toprettystring(tip_amount)#93, toprettystring(tolls_amount)#94, toprettystring(improvement_surcharge)#95, toprettystring(total_amount)#96, toprettystring(congestion_surcharge)#97, toprettystring(airport_fee)#98, toprettystring(current_date)#99]\nArguments: 21\n\n","sparkPlanInfo":{"nodeName":"CollectLimit","simpleString":"CollectLimit 21","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"Project","simpleString":"Project [toprettystring(VendorID#0L, Some(Etc/UTC)) AS toprettystring(VendorID)#80, toprettystring(tpep_pickup_datetime#1, Some(Etc/UTC)) AS toprettystring(tpep_pickup_datetime)#81, toprettystring(tpep_dropoff_datetime#2, Some(Etc/UTC)) AS toprettystring(tpep_dropoff_datetime)#82, toprettystring(passenger_count#3, Some(Etc/UTC)) AS toprettystring(passenger_count)#83, toprettystring(trip_distance#4, Some(Etc/UTC)) AS toprettystring(trip_distance)#84, toprettystring(RatecodeID#5, Some(Etc/UTC)) AS toprettystring(RatecodeID)#85, toprettystring(store_and_fwd_flag#6, Some(Etc/UTC)) AS toprettystring(store_and_fwd_flag)#86, toprettystring(PULocationID#7L, Some(Etc/UTC)) AS toprettystring(PULocationID)#87, toprettystring(DOLocationID#8L, Some(Etc/UTC)) AS toprettystring(DOLocationID)#88, toprettystring(payment_type#9L, Some(Etc/UTC)) AS toprettystring(payment_type)#89, toprettystring(fare_amount#10, Some(Etc/UTC)) AS toprettystring(fare_amount)#90, toprettystring(extra#11, Some(Etc/UTC)) AS toprettystring(extra)#91, toprettystring(mta_tax#12, Some(Etc/UTC)) AS toprettystring(mta_tax)#92, toprettystring(tip_amount#13, Some(Etc/UTC)) AS toprettystring(tip_amount)#93, toprettystring(tolls_amount#14, Some(Etc/UTC)) AS toprettystring(tolls_amount)#94, toprettystring(improvement_surcharge#15, Some(Etc/UTC)) AS toprettystring(improvement_surcharge)#95, toprettystring(total_amount#16, Some(Etc/UTC)) AS toprettystring(total_amount)#96, toprettystring(congestion_surcharge#17, Some(Etc/UTC)) AS toprettystring(congestion_surcharge)#97, toprettystring(airport_fee#18, Some(Etc/UTC)) AS toprettystring(airport_fee)#98, 2025-06-27 03:57:59.158854 AS toprettystring(current_date)#99]","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [VendorID#0L,tpep_pickup_datetime#1,tpep_dropoff_datetime#2,passenger_count#3,trip_distance#4,RatecodeID#5,store_and_fwd_flag#6,PULocationID#7L,DOLocationID#8L,payment_type#9L,fare_amount#10,extra#11,mta_tax#12,tip_amount#13,tolls_amount#14,improvement_surcharge#15,total_amount#16,congestion_surcharge#17,airport_fee#18] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":61,"metricType":"sum"},{"name":"scan time","accumulatorId":60,"metricType":"timing"},{"name":"metadata time","accumulatorId":62,"metricType":"timing"},{"name":"size of files read","accumulatorId":63,"metricType":"size"},{"name":"number of output rows","accumulatorId":59,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":57,"metricType":"sum"},{"name":"number of input batches","accumulatorId":58,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":56,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":54,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":48,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":55,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":49,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":46,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":43,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":52,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":45,"metricType":"sum"},{"name":"records read","accumulatorId":42,"metricType":"sum"},{"name":"local bytes read","accumulatorId":40,"metricType":"size"},{"name":"fetch wait time","accumulatorId":41,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":38,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":44,"metricType":"sum"},{"name":"local blocks read","accumulatorId":37,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":47,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":36,"metricType":"sum"},{"name":"local merged bytes read","accumulatorId":50,"metricType":"size"},{"name":"remote reqs duration","accumulatorId":51,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":39,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":53,"metricType":"size"}]},"time":1750996680061,"modifiedConfigs":{},"jobTags":[]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":0,"accumUpdates":[[61,101],[62,6],[63,3852134849]]} +{"Event":"SparkListenerJobStart","Job ID":1,"Submission Time":1750996680834,"Stage Infos":[{"Stage ID":1,"Stage Attempt ID":0,"Stage Name":"showString at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":5,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"10\",\"name\":\"mapPartitionsInternal\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[4],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":4,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"5\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[3],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":2,"Name":"FileScanRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":3,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[2],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.showString(Dataset.scala:315)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[1],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"0","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"0","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":1,"Stage Attempt ID":0,"Stage Name":"showString at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":5,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"10\",\"name\":\"mapPartitionsInternal\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[4],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":4,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"5\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[3],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":2,"Name":"FileScanRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":3,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[2],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.showString(Dataset.scala:315)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996680837,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"0","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"0","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":1,"Stage Attempt ID":0,"Task Info":{"Task ID":1,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996680919,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":1,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":1,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996680919,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996682134,"Failed":false,"Killed":false,"Accumulables":[{"ID":57,"Name":"number of output rows","Update":"4096","Value":"4096","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":58,"Name":"number of input batches","Update":"1","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":59,"Name":"number of output rows","Update":"4096","Value":"4096","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":60,"Name":"scan time","Update":"872","Value":"872","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":64,"Name":"internal.metrics.executorDeserializeTime","Update":104,"Value":104,"Internal":true,"Count Failed Values":true},{"ID":65,"Name":"internal.metrics.executorDeserializeCpuTime","Update":95944834,"Value":95944834,"Internal":true,"Count Failed Values":true},{"ID":66,"Name":"internal.metrics.executorRunTime","Update":1094,"Value":1094,"Internal":true,"Count Failed Values":true},{"ID":67,"Name":"internal.metrics.executorCpuTime","Update":955416790,"Value":955416790,"Internal":true,"Count Failed Values":true},{"ID":68,"Name":"internal.metrics.resultSize","Update":3634,"Value":3634,"Internal":true,"Count Failed Values":true},{"ID":70,"Name":"internal.metrics.resultSerializationTime","Update":1,"Value":1,"Internal":true,"Count Failed Values":true},{"ID":95,"Name":"internal.metrics.input.bytesRead","Update":38137744,"Value":38137744,"Internal":true,"Count Failed Values":true},{"ID":96,"Name":"internal.metrics.input.recordsRead","Update":4096,"Value":4096,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":104,"Executor Deserialize CPU Time":95944834,"Executor Run Time":1094,"Executor CPU Time":955416790,"Peak Execution Memory":0,"Result Size":3634,"JVM GC Time":0,"Result Serialization Time":1,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":38137744,"Records Read":4096},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":1,"Stage Attempt ID":0,"Stage Name":"showString at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":5,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"10\",\"name\":\"mapPartitionsInternal\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[4],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":4,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"5\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[3],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":2,"Name":"FileScanRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":3,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"9\",\"name\":\"Scan parquet \"}","Callsite":"showString at NativeMethodAccessorImpl.java:0","Parent IDs":[2],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.showString(Dataset.scala:315)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996680837,"Completion Time":1750996682136,"Accumulables":[{"ID":57,"Name":"number of output rows","Value":"4096","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":58,"Name":"number of input batches","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":59,"Name":"number of output rows","Value":"4096","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":60,"Name":"scan time","Value":"872","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":64,"Name":"internal.metrics.executorDeserializeTime","Value":104,"Internal":true,"Count Failed Values":true},{"ID":65,"Name":"internal.metrics.executorDeserializeCpuTime","Value":95944834,"Internal":true,"Count Failed Values":true},{"ID":66,"Name":"internal.metrics.executorRunTime","Value":1094,"Internal":true,"Count Failed Values":true},{"ID":67,"Name":"internal.metrics.executorCpuTime","Value":955416790,"Internal":true,"Count Failed Values":true},{"ID":68,"Name":"internal.metrics.resultSize","Value":3634,"Internal":true,"Count Failed Values":true},{"ID":70,"Name":"internal.metrics.resultSerializationTime","Value":1,"Internal":true,"Count Failed Values":true},{"ID":95,"Name":"internal.metrics.input.bytesRead","Value":38137744,"Internal":true,"Count Failed Values":true},{"ID":96,"Name":"internal.metrics.input.recordsRead","Value":4096,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":1,"Completion Time":1750996682137,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionEnd","executionId":0,"time":1750996683529,"errorMessage":""} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart","executionId":1,"rootExecutionId":1,"description":"count at NativeMethodAccessorImpl.java:0","details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (5)\n+- HashAggregate (4)\n +- Exchange (3)\n +- HashAggregate (2)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput: []\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct<>\n\n(2) HashAggregate\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(3) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=27]\n\n(4) HashAggregate\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(5) AdaptiveSparkPlan\nOutput [1]: [count#162L]\nArguments: isFinalPlan=false\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=false","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[count(1)])","children":[{"nodeName":"Exchange","simpleString":"Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=27]","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[partial_count(1)])","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<>","children":[],"metadata":{"Location":"InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]","ReadSchema":"struct<>","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":135,"metricType":"sum"},{"name":"scan time","accumulatorId":134,"metricType":"timing"},{"name":"metadata time","accumulatorId":136,"metricType":"timing"},{"name":"size of files read","accumulatorId":137,"metricType":"size"},{"name":"number of output rows","accumulatorId":133,"metricType":"sum"}]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":129,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":130,"metricType":"timing"},{"name":"peak memory","accumulatorId":128,"metricType":"size"},{"name":"number of output rows","accumulatorId":127,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":132,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":131,"metricType":"average"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":125,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":119,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":126,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":120,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":117,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":114,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":123,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":116,"metricType":"sum"},{"name":"records read","accumulatorId":113,"metricType":"sum"},{"name":"local bytes read","accumulatorId":111,"metricType":"size"},{"name":"fetch wait time","accumulatorId":112,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":109,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":115,"metricType":"sum"},{"name":"local blocks read","accumulatorId":108,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":118,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":107,"metricType":"sum"},{"name":"data size","accumulatorId":105,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":121,"metricType":"size"},{"name":"number of partitions","accumulatorId":106,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":122,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":110,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":124,"metricType":"size"}]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":101,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":102,"metricType":"timing"},{"name":"peak memory","accumulatorId":100,"metricType":"size"},{"name":"number of output rows","accumulatorId":99,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":104,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":103,"metricType":"average"}]}],"metadata":{},"metrics":[]},"time":1750996683745,"modifiedConfigs":{},"jobTags":[]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate","executionId":1,"physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (10)\n+- == Current Plan ==\n HashAggregate (6)\n +- ShuffleQueryStage (5)\n +- Exchange (4)\n +- * HashAggregate (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n+- == Initial Plan ==\n HashAggregate (9)\n +- Exchange (8)\n +- HashAggregate (7)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput: []\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct<>\n\n(2) ColumnarToRow [codegen id : 1]\nInput: []\n\n(3) HashAggregate [codegen id : 1]\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(4) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=39]\n\n(5) ShuffleQueryStage\nOutput [1]: [count#165L]\nArguments: 0\n\n(6) HashAggregate\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(7) HashAggregate\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(8) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=27]\n\n(9) HashAggregate\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(10) AdaptiveSparkPlan\nOutput [1]: [count#162L]\nArguments: isFinalPlan=false\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=false","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[count(1)])","children":[{"nodeName":"ShuffleQueryStage","simpleString":"ShuffleQueryStage 0","children":[{"nodeName":"Exchange","simpleString":"Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=39]","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[partial_count(1)])","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<>","children":[],"metadata":{"Location":"InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]","ReadSchema":"struct<>","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":135,"metricType":"sum"},{"name":"scan time","accumulatorId":134,"metricType":"timing"},{"name":"metadata time","accumulatorId":136,"metricType":"timing"},{"name":"size of files read","accumulatorId":137,"metricType":"size"},{"name":"number of output rows","accumulatorId":133,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":173,"metricType":"sum"},{"name":"number of input batches","accumulatorId":174,"metricType":"sum"}]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":169,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":170,"metricType":"timing"},{"name":"peak memory","accumulatorId":168,"metricType":"size"},{"name":"number of output rows","accumulatorId":167,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":172,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":171,"metricType":"average"}]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":166,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":164,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":158,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":165,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":159,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":156,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":153,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":162,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":155,"metricType":"sum"},{"name":"records read","accumulatorId":152,"metricType":"sum"},{"name":"local bytes read","accumulatorId":150,"metricType":"size"},{"name":"fetch wait time","accumulatorId":151,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":148,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":154,"metricType":"sum"},{"name":"local blocks read","accumulatorId":147,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":157,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":146,"metricType":"sum"},{"name":"data size","accumulatorId":144,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":160,"metricType":"size"},{"name":"number of partitions","accumulatorId":145,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":161,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":149,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":163,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":140,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":141,"metricType":"timing"},{"name":"peak memory","accumulatorId":139,"metricType":"size"},{"name":"number of output rows","accumulatorId":138,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":143,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":142,"metricType":"average"}]}],"metadata":{},"metrics":[]}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":1,"accumUpdates":[[135,101],[136,0],[137,3852134849]]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":1,"accumUpdates":[[145,1]]} +{"Event":"SparkListenerJobStart","Job ID":2,"Submission Time":1750996683937,"Stage Infos":[{"Stage ID":2,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":34,"RDD Info":[{"RDD ID":9,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[8],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":7,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[6],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":8,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"16\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[7],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":6,"Name":"FileScanRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[2],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"1","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":2,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":34,"RDD Info":[{"RDD ID":9,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[8],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":7,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[6],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":8,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"16\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[7],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":6,"Name":"FileScanRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996683941,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"1","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":2,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996683956,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":3,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750996683957,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":4,"Index":2,"Attempt":0,"Partition ID":2,"Launch Time":1750996683957,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":5,"Index":3,"Attempt":0,"Partition ID":3,"Launch Time":1750996683957,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":6,"Index":4,"Attempt":0,"Partition ID":4,"Launch Time":1750996684772,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":3,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750996683957,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996684775,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"636","Value":"636","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"16","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"59","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"7065071","Value":"7065071","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"675","Value":"675","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"661","Value":"661","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"1806","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":96,"Value":96,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":41056841,"Value":41056841,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":709,"Value":709,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":184302154,"Value":184302154,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2176,"Value":2176,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Update":1,"Value":1,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":59,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":1,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":7065071,"Value":7065071,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":31206,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":7391793,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":96,"Executor Deserialize CPU Time":41056841,"Executor Run Time":709,"Executor CPU Time":184302154,"Peak Execution Memory":0,"Result Size":2176,"JVM GC Time":0,"Result Serialization Time":1,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":7065071,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":7,"Index":5,"Attempt":0,"Partition ID":5,"Launch Time":1750996685461,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":6,"Index":4,"Attempt":0,"Partition ID":4,"Launch Time":1750996684772,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996685462,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"663","Value":"1299","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"32","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"118","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"2","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"566872","Value":"7631943","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"673","Value":"1348","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"2","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"673","Value":"1334","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"3612","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":99,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3952830,"Value":45009671,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":676,"Value":1385,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":101795962,"Value":286098116,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":4309,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":118,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":2,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":566872,"Value":7631943,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":62412,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":14783586,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3952830,"Executor Run Time":676,"Executor CPU Time":101795962,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":566872,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":8,"Index":6,"Attempt":0,"Partition ID":6,"Launch Time":1750996686004,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":7,"Index":5,"Attempt":0,"Partition ID":5,"Launch Time":1750996685461,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996686005,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"523","Value":"1822","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"48","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"177","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"3","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"509939","Value":"8141882","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"528","Value":"1876","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"3","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"528","Value":"1862","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"5418","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":102,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3618200,"Value":48627871,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":531,"Value":1916,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":87221878,"Value":373319994,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":6442,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":177,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":3,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":509939,"Value":8141882,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":93618,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":22175379,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3618200,"Executor Run Time":531,"Executor CPU Time":87221878,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":509939,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":9,"Index":7,"Attempt":0,"Partition ID":7,"Launch Time":1750996686601,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":8,"Index":6,"Attempt":0,"Partition ID":6,"Launch Time":1750996686004,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996686602,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"578","Value":"2400","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"64","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"236","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"4","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"487166","Value":"8629048","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"584","Value":"2460","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"4","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"584","Value":"2446","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"7224","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":104,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2776022,"Value":51403893,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":586,"Value":2502,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":80748405,"Value":454068399,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":8575,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":236,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":4,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":487166,"Value":8629048,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":124824,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":29567172,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2776022,"Executor Run Time":586,"Executor CPU Time":80748405,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":487166,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":10,"Index":8,"Attempt":0,"Partition ID":8,"Launch Time":1750996686985,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":4,"Index":2,"Attempt":0,"Partition ID":2,"Launch Time":1750996683957,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996686987,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"2288","Value":"4688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"80","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"295","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"5","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"6883834","Value":"15512882","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"2326","Value":"4786","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"5","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"2312","Value":"4758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"9030","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":364,"Value":468,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":320322641,"Value":371726534,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":2630,"Value":5132,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":1853126091,"Value":2307194490,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2219,"Value":10794,"Internal":true,"Count Failed Values":true},{"ID":180,"Name":"internal.metrics.jvmGCTime","Update":23,"Value":23,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":3,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":295,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":5,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":6883834,"Value":15512882,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":156030,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":36958965,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":364,"Executor Deserialize CPU Time":320322641,"Executor Run Time":2630,"Executor CPU Time":1853126091,"Peak Execution Memory":0,"Result Size":2219,"JVM GC Time":23,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":6883834,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":11,"Index":9,"Attempt":0,"Partition ID":9,"Launch Time":1750996687008,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":5,"Index":3,"Attempt":0,"Partition ID":3,"Launch Time":1750996683957,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996687009,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"2307","Value":"6995","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"96","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"354","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"6","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"6974124","Value":"22487006","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"2348","Value":"7134","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"6","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"2334","Value":"7092","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"10836","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":368,"Value":836,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":317441146,"Value":689167680,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":2651,"Value":7783,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":1872420839,"Value":4179615329,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2217,"Value":13011,"Internal":true,"Count Failed Values":true},{"ID":180,"Name":"internal.metrics.jvmGCTime","Update":24,"Value":47,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":5,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":354,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":6,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":6974124,"Value":22487006,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":187236,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":44350758,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":368,"Executor Deserialize CPU Time":317441146,"Executor Run Time":2651,"Executor CPU Time":1872420839,"Peak Execution Memory":0,"Result Size":2217,"JVM GC Time":24,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":6974124,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":12,"Index":10,"Attempt":0,"Partition ID":10,"Launch Time":1750996687140,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":2,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996683956,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996687141,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"2372","Value":"9367","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"112","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"413","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"7119988","Value":"29606994","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"2414","Value":"9548","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"7","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"2400","Value":"9492","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"12642","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":383,"Value":1219,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":340103751,"Value":1029271431,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":2767,"Value":10550,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":2087027887,"Value":6266643216,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2219,"Value":15230,"Internal":true,"Count Failed Values":true},{"ID":180,"Name":"internal.metrics.jvmGCTime","Update":25,"Value":72,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":7,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":413,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":7,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":7119988,"Value":29606994,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":218442,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":51742551,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":383,"Executor Deserialize CPU Time":340103751,"Executor Run Time":2767,"Executor CPU Time":2087027887,"Peak Execution Memory":0,"Result Size":2219,"JVM GC Time":25,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":7119988,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":13,"Index":11,"Attempt":0,"Partition ID":11,"Launch Time":1750996687202,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":9,"Index":7,"Attempt":0,"Partition ID":7,"Launch Time":1750996686601,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996687203,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"584","Value":"9951","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"128","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"472","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"8","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"496623","Value":"30103617","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"589","Value":"10137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"8","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"588","Value":"10080","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"14448","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1221,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2462881,"Value":1031734312,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":591,"Value":11141,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":77439705,"Value":6344082921,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":17363,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":472,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":8,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":496623,"Value":30103617,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":249648,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":59134344,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2462881,"Executor Run Time":591,"Executor CPU Time":77439705,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":496623,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":14,"Index":12,"Attempt":0,"Partition ID":12,"Launch Time":1750996687605,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":10,"Index":8,"Attempt":0,"Partition ID":8,"Launch Time":1750996686985,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996687607,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"587","Value":"10538","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"144","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"531","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"9","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"542814","Value":"30646431","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"596","Value":"10733","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"9","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"595","Value":"10675","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"16254","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":4,"Value":1225,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":4620012,"Value":1036354324,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":607,"Value":11748,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":109619638,"Value":6453702559,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":19496,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":531,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":9,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":542814,"Value":30646431,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":280854,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":66526137,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":4,"Executor Deserialize CPU Time":4620012,"Executor Run Time":607,"Executor CPU Time":109619638,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":542814,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":15,"Index":13,"Attempt":0,"Partition ID":13,"Launch Time":1750996687612,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":11,"Index":9,"Attempt":0,"Partition ID":9,"Launch Time":1750996687008,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996687613,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"571","Value":"11109","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"160","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"590","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"10","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"374175","Value":"31020606","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"580","Value":"11313","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"10","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"580","Value":"11255","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"18060","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":4,"Value":1229,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":4537182,"Value":1040891506,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":591,"Value":12339,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":107580484,"Value":6561283043,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":21627,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":590,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":10,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":374175,"Value":31020606,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":312060,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":73917930,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":4,"Executor Deserialize CPU Time":4537182,"Executor Run Time":591,"Executor CPU Time":107580484,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":374175,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":16,"Index":14,"Attempt":0,"Partition ID":14,"Launch Time":1750996687702,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":12,"Index":10,"Attempt":0,"Partition ID":10,"Launch Time":1750996687140,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996687703,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"524","Value":"11633","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"176","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"649","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"11","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"545238","Value":"31565844","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"536","Value":"11849","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"11","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"535","Value":"11790","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"19866","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":5,"Value":1234,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":5163168,"Value":1046054674,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":548,"Value":12887,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":120836143,"Value":6682119186,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":23760,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":649,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":11,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":545238,"Value":31565844,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":343266,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":81309723,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":5,"Executor Deserialize CPU Time":5163168,"Executor Run Time":548,"Executor CPU Time":120836143,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":545238,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":17,"Index":15,"Attempt":0,"Partition ID":15,"Launch Time":1750996687827,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":13,"Index":11,"Attempt":0,"Partition ID":11,"Launch Time":1750996687202,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996687827,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"609","Value":"12242","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"192","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"708","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"12","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"354422","Value":"31920266","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"613","Value":"12462","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"12","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"612","Value":"12402","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"21672","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1236,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2726747,"Value":1048781421,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":615,"Value":13502,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":80910672,"Value":6763029858,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":25893,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":708,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":12,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":354422,"Value":31920266,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":374472,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":88701516,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2726747,"Executor Run Time":615,"Executor CPU Time":80910672,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":354422,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":18,"Index":16,"Attempt":0,"Partition ID":16,"Launch Time":1750996688164,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":15,"Index":13,"Attempt":0,"Partition ID":13,"Launch Time":1750996687612,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996688165,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"533","Value":"12775","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"208","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"767","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"13","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"539828","Value":"32460094","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"538","Value":"13000","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"13","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"537","Value":"12939","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"23478","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1239,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3522171,"Value":1052303592,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":540,"Value":14042,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":86695145,"Value":6849725003,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":28024,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":767,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":13,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":539828,"Value":32460094,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":405678,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":96093309,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3522171,"Executor Run Time":540,"Executor CPU Time":86695145,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":539828,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":19,"Index":17,"Attempt":0,"Partition ID":17,"Launch Time":1750996688217,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":14,"Index":12,"Attempt":0,"Partition ID":12,"Launch Time":1750996687605,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996688218,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"593","Value":"13368","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"224","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"826","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"14","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"367259","Value":"32827353","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"598","Value":"13598","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"14","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"597","Value":"13536","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"25284","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1242,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3603033,"Value":1055906625,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":600,"Value":14642,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":86657465,"Value":6936382468,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":30157,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":826,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":14,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":367259,"Value":32827353,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":436884,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":103485102,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3603033,"Executor Run Time":600,"Executor CPU Time":86657465,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":367259,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":20,"Index":18,"Attempt":0,"Partition ID":18,"Launch Time":1750996688305,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":16,"Index":14,"Attempt":0,"Partition ID":14,"Launch Time":1750996687702,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996688305,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"581","Value":"13949","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"240","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"885","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"15","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"562518","Value":"33389871","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"586","Value":"14184","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"15","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"585","Value":"14121","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"27090","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":4,"Value":1246,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3979941,"Value":1059886566,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":589,"Value":15231,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":89736232,"Value":7026118700,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":32290,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":885,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":15,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":562518,"Value":33389871,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":468090,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":110876895,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":4,"Executor Deserialize CPU Time":3979941,"Executor Run Time":589,"Executor CPU Time":89736232,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":562518,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":21,"Index":19,"Attempt":0,"Partition ID":19,"Launch Time":1750996688349,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":17,"Index":15,"Attempt":0,"Partition ID":15,"Launch Time":1750996687827,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996688350,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"508","Value":"14457","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"256","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"944","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"16","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"476008","Value":"33865879","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"512","Value":"14696","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"16","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"511","Value":"14632","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"28896","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1248,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2501355,"Value":1062387921,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":514,"Value":15745,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":68737414,"Value":7094856114,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2176,"Value":34466,"Internal":true,"Count Failed Values":true},{"ID":180,"Name":"internal.metrics.jvmGCTime","Update":13,"Value":85,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":944,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":16,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":476008,"Value":33865879,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":499296,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":118268688,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2501355,"Executor Run Time":514,"Executor CPU Time":68737414,"Peak Execution Memory":0,"Result Size":2176,"JVM GC Time":13,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":476008,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":22,"Index":20,"Attempt":0,"Partition ID":20,"Launch Time":1750996688757,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":19,"Index":17,"Attempt":0,"Partition ID":17,"Launch Time":1750996688217,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996688757,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"518","Value":"14975","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"272","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1003","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"531596","Value":"34397475","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"525","Value":"15221","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"525","Value":"15157","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"30702","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1251,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3136325,"Value":1065524246,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":528,"Value":16273,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":81496701,"Value":7176352815,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":36599,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1003,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":17,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":531596,"Value":34397475,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":530502,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":125660481,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3136325,"Executor Run Time":528,"Executor CPU Time":81496701,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":531596,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":23,"Index":21,"Attempt":0,"Partition ID":21,"Launch Time":1750996688782,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":18,"Index":16,"Attempt":0,"Partition ID":16,"Launch Time":1750996688164,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996688783,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"133052274","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"600","Value":"15575","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"288","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1062","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"18","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"502776","Value":"34900251","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"605","Value":"15826","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"18","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"605","Value":"15762","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"133052274","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"32508","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1254,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3178528,"Value":1068702774,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":608,"Value":16881,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":85131706,"Value":7261484521,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":38730,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1062,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":18,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":502776,"Value":34900251,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":561708,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":133052274,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3178528,"Executor Run Time":608,"Executor CPU Time":85131706,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":502776,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":24,"Index":22,"Attempt":0,"Partition ID":22,"Launch Time":1750996688833,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":20,"Index":18,"Attempt":0,"Partition ID":18,"Launch Time":1750996688305,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996688834,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"140444067","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"506","Value":"16081","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"304","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1121","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"19","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"548313","Value":"35448564","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"514","Value":"16340","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"19","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"514","Value":"16276","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"140444067","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"34314","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1257,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3612137,"Value":1072314911,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":517,"Value":17398,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":88582926,"Value":7350067447,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":40863,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1121,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":19,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":548313,"Value":35448564,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":592914,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":140444067,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3612137,"Executor Run Time":517,"Executor CPU Time":88582926,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":548313,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":25,"Index":23,"Attempt":0,"Partition ID":23,"Launch Time":1750996688945,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":21,"Index":19,"Attempt":0,"Partition ID":19,"Launch Time":1750996688349,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996688945,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"147835860","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"584","Value":"16665","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"320","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1180","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"20","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"552546","Value":"36001110","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"586","Value":"16926","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"20","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"586","Value":"16862","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"147835860","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"36120","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1259,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2337791,"Value":1074652702,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":588,"Value":17986,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":62275718,"Value":7412343165,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":42996,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1180,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":20,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":552546,"Value":36001110,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":624120,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":147835860,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2337791,"Executor Run Time":588,"Executor CPU Time":62275718,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":552546,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":26,"Index":24,"Attempt":0,"Partition ID":24,"Launch Time":1750996689288,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":22,"Index":20,"Attempt":0,"Partition ID":20,"Launch Time":1750996688757,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996689289,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"155227653","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"513","Value":"17178","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"336","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1239","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"21","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"585977","Value":"36587087","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"518","Value":"17444","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"21","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"518","Value":"17380","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"155227653","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"37926","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1262,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2985864,"Value":1077638566,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":520,"Value":18506,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":77714842,"Value":7490058007,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":45129,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1239,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":21,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":585977,"Value":36587087,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":655326,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":155227653,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":2985864,"Executor Run Time":520,"Executor CPU Time":77714842,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":585977,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":27,"Index":25,"Attempt":0,"Partition ID":25,"Launch Time":1750996689306,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":23,"Index":21,"Attempt":0,"Partition ID":21,"Launch Time":1750996688782,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996689307,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"162619446","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"507","Value":"17685","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"352","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1298","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"22","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"529749","Value":"37116836","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"512","Value":"17956","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"22","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"512","Value":"17892","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"162619446","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"39732","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1264,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2809929,"Value":1080448495,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":514,"Value":19020,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":78582338,"Value":7568640345,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":47260,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1298,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":22,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":529749,"Value":37116836,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":686532,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":162619446,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2809929,"Executor Run Time":514,"Executor CPU Time":78582338,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":529749,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":28,"Index":26,"Attempt":0,"Partition ID":26,"Launch Time":1750996689358,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":24,"Index":22,"Attempt":0,"Partition ID":22,"Launch Time":1750996688833,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996689359,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"170011239","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"507","Value":"18192","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"368","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1357","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"23","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"522272","Value":"37639108","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"512","Value":"18468","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"23","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"512","Value":"18404","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"170011239","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"41538","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1267,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3146367,"Value":1083594862,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":515,"Value":19535,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":83361375,"Value":7652001720,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":49393,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1357,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":23,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":522272,"Value":37639108,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":717738,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":170011239,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3146367,"Executor Run Time":515,"Executor CPU Time":83361375,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":522272,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":29,"Index":27,"Attempt":0,"Partition ID":27,"Launch Time":1750996689460,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":25,"Index":23,"Attempt":0,"Partition ID":23,"Launch Time":1750996688945,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996689461,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"177403032","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"503","Value":"18695","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"384","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1416","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"24","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"387689","Value":"38026797","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"505","Value":"18973","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"24","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"505","Value":"18909","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"177403032","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"43344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1269,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2594566,"Value":1086189428,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":507,"Value":20042,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":63222220,"Value":7715223940,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":51526,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1416,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":24,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":387689,"Value":38026797,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":748944,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":177403032,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2594566,"Executor Run Time":507,"Executor CPU Time":63222220,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":387689,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":30,"Index":28,"Attempt":0,"Partition ID":28,"Launch Time":1750996689852,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":26,"Index":24,"Attempt":0,"Partition ID":24,"Launch Time":1750996689288,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996689853,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"184794825","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"548","Value":"19243","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"400","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1475","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"25","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"593853","Value":"38620650","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"551","Value":"19524","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"25","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"551","Value":"19460","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"184794825","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"45150","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1272,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3107074,"Value":1089296502,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":553,"Value":20595,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":79239265,"Value":7794463205,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":53659,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1475,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":25,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":593853,"Value":38620650,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":780150,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":184794825,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3107074,"Executor Run Time":553,"Executor CPU Time":79239265,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":593853,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":31,"Index":29,"Attempt":0,"Partition ID":29,"Launch Time":1750996689972,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":27,"Index":25,"Attempt":0,"Partition ID":25,"Launch Time":1750996689306,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996689973,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"192186618","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"650","Value":"19893","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"416","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1534","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"26","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"506361","Value":"39127011","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"653","Value":"20177","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"26","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"652","Value":"20112","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"192186618","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"46956","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1275,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3162742,"Value":1092459244,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":655,"Value":21250,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":78185155,"Value":7872648360,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":55790,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1534,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":26,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":506361,"Value":39127011,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":811356,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":192186618,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3162742,"Executor Run Time":655,"Executor CPU Time":78185155,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":506361,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":32,"Index":30,"Attempt":0,"Partition ID":30,"Launch Time":1750996690008,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":28,"Index":26,"Attempt":0,"Partition ID":26,"Launch Time":1750996689358,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996690009,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"199578411","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"635","Value":"20528","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"432","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1593","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"27","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"558682","Value":"39685693","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"638","Value":"20815","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"27","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"637","Value":"20749","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"199578411","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"48762","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":1278,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3107509,"Value":1095566753,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":640,"Value":21890,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":88440878,"Value":7961089238,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":57923,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1593,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":27,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":558682,"Value":39685693,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":842562,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":199578411,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3107509,"Executor Run Time":640,"Executor CPU Time":88440878,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":558682,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":33,"Index":31,"Attempt":0,"Partition ID":31,"Launch Time":1750996690025,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":29,"Index":27,"Attempt":0,"Partition ID":27,"Launch Time":1750996689460,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996690026,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"206970204","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"553","Value":"21081","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"448","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1652","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"28","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"480011","Value":"40165704","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"556","Value":"21371","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"28","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"556","Value":"21305","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"206970204","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"50568","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1280,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2201367,"Value":1097768120,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":558,"Value":22448,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":58822217,"Value":8019911455,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":60056,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1652,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":28,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":480011,"Value":40165704,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":873768,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":206970204,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2201367,"Executor Run Time":558,"Executor CPU Time":58822217,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":480011,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":34,"Index":32,"Attempt":0,"Partition ID":32,"Launch Time":1750996690481,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":30,"Index":28,"Attempt":0,"Partition ID":28,"Launch Time":1750996689852,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996690482,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"214361997","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"615","Value":"21696","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"464","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1711","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"29","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"498721","Value":"40664425","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"618","Value":"21989","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"29","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"617","Value":"21922","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"214361997","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"52374","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1282,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2451510,"Value":1100219630,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":620,"Value":23068,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":67008285,"Value":8086919740,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":62189,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1711,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":29,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":498721,"Value":40664425,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":904974,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":214361997,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2451510,"Executor Run Time":620,"Executor CPU Time":67008285,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":498721,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":2,"Stage Attempt ID":0,"Task Info":{"Task ID":35,"Index":33,"Attempt":0,"Partition ID":33,"Launch Time":1750996690524,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":31,"Index":29,"Attempt":0,"Partition ID":29,"Launch Time":1750996689972,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996690525,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"221753790","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"538","Value":"22234","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"480","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1770","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"30","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"486685","Value":"41151110","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"541","Value":"22530","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"30","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"541","Value":"22463","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"221753790","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"54180","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1284,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2339181,"Value":1102558811,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":543,"Value":23611,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":70482390,"Value":8157402130,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":64320,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1770,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":30,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":486685,"Value":41151110,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":936180,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":221753790,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2339181,"Executor Run Time":543,"Executor CPU Time":70482390,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":486685,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":33,"Index":31,"Attempt":0,"Partition ID":31,"Launch Time":1750996690025,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996690586,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"229145583","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"549","Value":"22783","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"496","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1829","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"31","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"327013","Value":"41478123","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"551","Value":"23081","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"31","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"551","Value":"23014","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"229145583","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"55986","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1286,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2132530,"Value":1104691341,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":553,"Value":24164,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":65673017,"Value":8223075147,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":66453,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1829,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":31,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":327013,"Value":41478123,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":967386,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":229145583,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2132530,"Executor Run Time":553,"Executor CPU Time":65673017,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":327013,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":32,"Index":30,"Attempt":0,"Partition ID":30,"Launch Time":1750996690008,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996690612,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"236537376","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"589","Value":"23372","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"512","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1888","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"32","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"522343","Value":"42000466","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"592","Value":"23673","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"32","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"591","Value":"23605","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"236537376","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"57792","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1288,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2594291,"Value":1107285632,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":594,"Value":24758,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":77709899,"Value":8300785046,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":68586,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1888,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":32,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":522343,"Value":42000466,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":998592,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":236537376,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2594291,"Executor Run Time":594,"Executor CPU Time":77709899,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":522343,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":35,"Index":33,"Attempt":0,"Partition ID":33,"Launch Time":1750996690524,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996690941,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"4927862","Value":"241465238","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"403","Value":"23775","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"528","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"1947","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"33","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"370161","Value":"42370627","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"405","Value":"24078","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"33","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"405","Value":"24010","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"4927862","Value":"241465238","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1204","Value":"58996","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1290,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2532672,"Value":1109818304,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":407,"Value":25165,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":43734165,"Value":8344519211,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2131,"Value":70717,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":1947,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":33,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":370161,"Value":42370627,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":20804,"Value":1019396,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":4927862,"Value":241465238,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2532672,"Executor Run Time":407,"Executor CPU Time":43734165,"Peak Execution Memory":0,"Result Size":2131,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":370161,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":20804,"Records Read":4927862},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":2,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":34,"Index":32,"Attempt":0,"Partition ID":32,"Launch Time":1750996690481,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996691007,"Failed":false,"Killed":false,"Accumulables":[{"ID":133,"Name":"number of output rows","Update":"7391793","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Update":"512","Value":"24287","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Update":"16","Value":"544","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Update":"59","Value":"2006","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Update":"1","Value":"34","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Update":"497077","Value":"42867704","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Update":"515","Value":"24593","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Update":"1","Value":"34","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Update":"514","Value":"24524","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Update":"7391793","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Update":"1806","Value":"60802","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":1292,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2580103,"Value":1112398407,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Update":517,"Value":25682,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Update":61307555,"Value":8405826766,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Update":2133,"Value":72850,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":59,"Value":2006,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":1,"Value":34,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Update":497077,"Value":42867704,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Update":31206,"Value":1050602,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":248857031,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2580103,"Executor Run Time":517,"Executor CPU Time":61307555,"Peak Execution Memory":0,"Result Size":2133,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":59,"Shuffle Write Time":497077,"Shuffle Records Written":1},"Input Metrics":{"Bytes Read":31206,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":2,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":34,"RDD Info":[{"RDD ID":9,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[8],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":7,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[6],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":8,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"16\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[7],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":6,"Name":"FileScanRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996683941,"Completion Time":1750996691009,"Accumulables":[{"ID":133,"Name":"number of output rows","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":134,"Name":"scan time","Value":"24287","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":144,"Name":"data size","Value":"544","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":163,"Name":"shuffle bytes written","Value":"2006","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":164,"Name":"shuffle records written","Value":"34","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":165,"Name":"shuffle write time","Value":"42867704","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":166,"Name":"duration","Value":"24593","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":167,"Name":"number of output rows","Value":"34","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":170,"Name":"time in aggregation build","Value":"24524","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":173,"Name":"number of output rows","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":174,"Name":"number of input batches","Value":"60802","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":175,"Name":"internal.metrics.executorDeserializeTime","Value":1292,"Internal":true,"Count Failed Values":true},{"ID":176,"Name":"internal.metrics.executorDeserializeCpuTime","Value":1112398407,"Internal":true,"Count Failed Values":true},{"ID":177,"Name":"internal.metrics.executorRunTime","Value":25682,"Internal":true,"Count Failed Values":true},{"ID":178,"Name":"internal.metrics.executorCpuTime","Value":8405826766,"Internal":true,"Count Failed Values":true},{"ID":179,"Name":"internal.metrics.resultSize","Value":72850,"Internal":true,"Count Failed Values":true},{"ID":180,"Name":"internal.metrics.jvmGCTime","Value":85,"Internal":true,"Count Failed Values":true},{"ID":181,"Name":"internal.metrics.resultSerializationTime","Value":7,"Internal":true,"Count Failed Values":true},{"ID":203,"Name":"internal.metrics.shuffle.write.bytesWritten","Value":2006,"Internal":true,"Count Failed Values":true},{"ID":204,"Name":"internal.metrics.shuffle.write.recordsWritten","Value":34,"Internal":true,"Count Failed Values":true},{"ID":205,"Name":"internal.metrics.shuffle.write.writeTime","Value":42867704,"Internal":true,"Count Failed Values":true},{"ID":206,"Name":"internal.metrics.input.bytesRead","Value":1050602,"Internal":true,"Count Failed Values":true},{"ID":207,"Name":"internal.metrics.input.recordsRead","Value":248857031,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":2,"Completion Time":1750996691013,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate","executionId":1,"physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (10)\n+- == Final Plan ==\n * HashAggregate (6)\n +- ShuffleQueryStage (5), Statistics(sizeInBytes=544.0 B, rowCount=34)\n +- Exchange (4)\n +- * HashAggregate (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n+- == Initial Plan ==\n HashAggregate (9)\n +- Exchange (8)\n +- HashAggregate (7)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput: []\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct<>\n\n(2) ColumnarToRow [codegen id : 1]\nInput: []\n\n(3) HashAggregate [codegen id : 1]\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(4) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=39]\n\n(5) ShuffleQueryStage\nOutput [1]: [count#165L]\nArguments: 0\n\n(6) HashAggregate [codegen id : 2]\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(7) HashAggregate\nInput: []\nKeys: []\nFunctions [1]: [partial_count(1)]\nAggregate Attributes [1]: [count#164L]\nResults [1]: [count#165L]\n\n(8) Exchange\nInput [1]: [count#165L]\nArguments: SinglePartition, ENSURE_REQUIREMENTS, [plan_id=27]\n\n(9) HashAggregate\nInput [1]: [count#165L]\nKeys: []\nFunctions [1]: [count(1)]\nAggregate Attributes [1]: [count(1)#161L]\nResults [1]: [count(1)#161L AS count#162L]\n\n(10) AdaptiveSparkPlan\nOutput [1]: [count#162L]\nArguments: isFinalPlan=true\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=true","children":[{"nodeName":"WholeStageCodegen (2)","simpleString":"WholeStageCodegen (2)","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[count(1)])","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"ShuffleQueryStage","simpleString":"ShuffleQueryStage 0","children":[{"nodeName":"Exchange","simpleString":"Exchange SinglePartition, ENSURE_REQUIREMENTS, [plan_id=39]","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"HashAggregate","simpleString":"HashAggregate(keys=[], functions=[partial_count(1)])","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct<>","children":[],"metadata":{"Location":"InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]","ReadSchema":"struct<>","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":135,"metricType":"sum"},{"name":"scan time","accumulatorId":134,"metricType":"timing"},{"name":"metadata time","accumulatorId":136,"metricType":"timing"},{"name":"size of files read","accumulatorId":137,"metricType":"size"},{"name":"number of output rows","accumulatorId":133,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":173,"metricType":"sum"},{"name":"number of input batches","accumulatorId":174,"metricType":"sum"}]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":169,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":170,"metricType":"timing"},{"name":"peak memory","accumulatorId":168,"metricType":"size"},{"name":"number of output rows","accumulatorId":167,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":172,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":171,"metricType":"average"}]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":166,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":164,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":158,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":165,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":159,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":156,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":153,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":162,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":155,"metricType":"sum"},{"name":"records read","accumulatorId":152,"metricType":"sum"},{"name":"local bytes read","accumulatorId":150,"metricType":"size"},{"name":"fetch wait time","accumulatorId":151,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":148,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":154,"metricType":"sum"},{"name":"local blocks read","accumulatorId":147,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":157,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":146,"metricType":"sum"},{"name":"data size","accumulatorId":144,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":160,"metricType":"size"},{"name":"number of partitions","accumulatorId":145,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":161,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":149,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":163,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"spill size","accumulatorId":213,"metricType":"size"},{"name":"time in aggregation build","accumulatorId":214,"metricType":"timing"},{"name":"peak memory","accumulatorId":212,"metricType":"size"},{"name":"number of output rows","accumulatorId":211,"metricType":"sum"},{"name":"number of sort fallback tasks","accumulatorId":216,"metricType":"sum"},{"name":"avg hash probes per key","accumulatorId":215,"metricType":"average"}]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":210,"metricType":"timing"}]}],"metadata":{},"metrics":[]}} +{"Event":"SparkListenerJobStart","Job ID":3,"Submission Time":1750996691059,"Stage Infos":[{"Stage ID":3,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":34,"RDD Info":[{"RDD ID":9,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"15\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[8],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":7,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[6],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":8,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"16\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[7],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":6,"Name":"FileScanRDD","Scope":"{\"id\":\"20\",\"name\":\"Scan parquet \"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},{"Stage ID":4,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":12,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"26\",\"name\":\"mapPartitionsInternal\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[11],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":11,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"21\",\"name\":\"WholeStageCodegen (2)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[10],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":10,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"25\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[9],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[3],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[3,4],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.scope":"{\"id\":\"27\",\"name\":\"collect\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"1","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":4,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":12,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"26\",\"name\":\"mapPartitionsInternal\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[11],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":11,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"21\",\"name\":\"WholeStageCodegen (2)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[10],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":10,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"25\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[9],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[3],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996691114,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.scope":"{\"id\":\"27\",\"name\":\"collect\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"1","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"1","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":4,"Stage Attempt ID":0,"Task Info":{"Task ID":36,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996691121,"Executor ID":"2","Host":"100.64.240.100","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":4,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":36,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996691121,"Executor ID":"2","Host":"100.64.240.100","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996691241,"Failed":false,"Killed":false,"Accumulables":[{"ID":146,"Name":"remote blocks read","Update":"23","Value":"23","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":147,"Name":"local blocks read","Update":"11","Value":"11","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":148,"Name":"remote bytes read","Update":"1357","Value":"1357","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":150,"Name":"local bytes read","Update":"649","Value":"649","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":151,"Name":"fetch wait time","Update":"0","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":152,"Name":"records read","Update":"34","Value":"34","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":161,"Name":"remote reqs duration","Update":"49","Value":"49","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":210,"Name":"duration","Update":"8","Value":"8","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":211,"Name":"number of output rows","Update":"1","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":214,"Name":"time in aggregation build","Update":"8","Value":"8","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":217,"Name":"internal.metrics.executorDeserializeTime","Update":18,"Value":18,"Internal":true,"Count Failed Values":true},{"ID":218,"Name":"internal.metrics.executorDeserializeCpuTime","Update":11885188,"Value":11885188,"Internal":true,"Count Failed Values":true},{"ID":219,"Name":"internal.metrics.executorRunTime","Update":93,"Value":93,"Internal":true,"Count Failed Values":true},{"ID":220,"Name":"internal.metrics.executorCpuTime","Update":73222345,"Value":73222345,"Internal":true,"Count Failed Values":true},{"ID":221,"Name":"internal.metrics.resultSize","Update":3995,"Value":3995,"Internal":true,"Count Failed Values":true},{"ID":228,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Update":23,"Value":23,"Internal":true,"Count Failed Values":true},{"ID":229,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Update":11,"Value":11,"Internal":true,"Count Failed Values":true},{"ID":230,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Update":1357,"Value":1357,"Internal":true,"Count Failed Values":true},{"ID":231,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":232,"Name":"internal.metrics.shuffle.read.localBytesRead","Update":649,"Value":649,"Internal":true,"Count Failed Values":true},{"ID":233,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":234,"Name":"internal.metrics.shuffle.read.recordsRead","Update":34,"Value":34,"Internal":true,"Count Failed Values":true},{"ID":235,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":236,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":237,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":238,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":239,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":240,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":241,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":242,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":243,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Update":49,"Value":49,"Internal":true,"Count Failed Values":true},{"ID":244,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Update":0,"Value":0,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":0,"JVMOffHeapMemory":0,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":0,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":0,"OffHeapUnifiedMemory":0,"DirectPoolMemory":0,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":0,"ProcessTreeJVMRSSMemory":0,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":0,"MinorGCTime":0,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":0},"Task Metrics":{"Executor Deserialize Time":18,"Executor Deserialize CPU Time":11885188,"Executor Run Time":93,"Executor CPU Time":73222345,"Peak Execution Memory":0,"Result Size":3995,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":23,"Local Blocks Fetched":11,"Fetch Wait Time":0,"Remote Bytes Read":1357,"Remote Bytes Read To Disk":0,"Local Bytes Read":649,"Total Records Read":34,"Remote Requests Duration":49,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":0,"Records Read":0},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":4,"Stage Attempt ID":0,"Stage Name":"count at NativeMethodAccessorImpl.java:0","Number of Tasks":1,"RDD Info":[{"RDD ID":12,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"26\",\"name\":\"mapPartitionsInternal\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[11],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":11,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"21\",\"name\":\"WholeStageCodegen (2)\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[10],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":10,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"25\",\"name\":\"Exchange\"}","Callsite":"count at NativeMethodAccessorImpl.java:0","Parent IDs":[9],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":1,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[3],"Details":"org.apache.spark.sql.Dataset.count(Dataset.scala:3615)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996691114,"Completion Time":1750996691242,"Accumulables":[{"ID":146,"Name":"remote blocks read","Value":"23","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":147,"Name":"local blocks read","Value":"11","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":148,"Name":"remote bytes read","Value":"1357","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":150,"Name":"local bytes read","Value":"649","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":151,"Name":"fetch wait time","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":152,"Name":"records read","Value":"34","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":161,"Name":"remote reqs duration","Value":"49","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":210,"Name":"duration","Value":"8","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":211,"Name":"number of output rows","Value":"1","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":214,"Name":"time in aggregation build","Value":"8","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":217,"Name":"internal.metrics.executorDeserializeTime","Value":18,"Internal":true,"Count Failed Values":true},{"ID":218,"Name":"internal.metrics.executorDeserializeCpuTime","Value":11885188,"Internal":true,"Count Failed Values":true},{"ID":219,"Name":"internal.metrics.executorRunTime","Value":93,"Internal":true,"Count Failed Values":true},{"ID":220,"Name":"internal.metrics.executorCpuTime","Value":73222345,"Internal":true,"Count Failed Values":true},{"ID":221,"Name":"internal.metrics.resultSize","Value":3995,"Internal":true,"Count Failed Values":true},{"ID":228,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Value":23,"Internal":true,"Count Failed Values":true},{"ID":229,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Value":11,"Internal":true,"Count Failed Values":true},{"ID":230,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Value":1357,"Internal":true,"Count Failed Values":true},{"ID":231,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Value":0,"Internal":true,"Count Failed Values":true},{"ID":232,"Name":"internal.metrics.shuffle.read.localBytesRead","Value":649,"Internal":true,"Count Failed Values":true},{"ID":233,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Value":0,"Internal":true,"Count Failed Values":true},{"ID":234,"Name":"internal.metrics.shuffle.read.recordsRead","Value":34,"Internal":true,"Count Failed Values":true},{"ID":235,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Value":0,"Internal":true,"Count Failed Values":true},{"ID":236,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Value":0,"Internal":true,"Count Failed Values":true},{"ID":237,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":238,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":239,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":240,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":241,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Value":0,"Internal":true,"Count Failed Values":true},{"ID":242,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Value":0,"Internal":true,"Count Failed Values":true},{"ID":243,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Value":49,"Internal":true,"Count Failed Values":true},{"ID":244,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Value":0,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":3,"Completion Time":1750996691242,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionEnd","executionId":1,"time":1750996691244,"errorMessage":""} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart","executionId":2,"rootExecutionId":2,"description":"parquet at NativeMethodAccessorImpl.java:0","details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (6)\n+- Execute InsertIntoHadoopFsRelationCommand (5)\n +- WriteFiles (4)\n +- Exchange (3)\n +- Project (2)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct\n\n(2) Project\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 03:57:59.158854 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(3) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=65]\n\n(4) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(5) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(6) AdaptiveSparkPlan\nOutput: []\nArguments: isFinalPlan=false\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=false","children":[{"nodeName":"Execute InsertIntoHadoopFsRelationCommand","simpleString":"Execute InsertIntoHadoopFsRelationCommand s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]","children":[{"nodeName":"WriteFiles","simpleString":"WriteFiles","children":[{"nodeName":"Exchange","simpleString":"Exchange RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=65]","children":[{"nodeName":"Project","simpleString":"Project [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 03:57:59.158854 AS current_date#38]","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [VendorID#0L,tpep_pickup_datetime#1,tpep_dropoff_datetime#2,passenger_count#3,trip_distance#4,RatecodeID#5,store_and_fwd_flag#6,PULocationID#7L,DOLocationID#8L,payment_type#9L,fare_amount#10,extra#11,mta_tax#12,tip_amount#13,tolls_amount#14,improvement_surcharge#15,total_amount#16,congestion_surcharge#17,airport_fee#18] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":282,"metricType":"sum"},{"name":"scan time","accumulatorId":281,"metricType":"timing"},{"name":"metadata time","accumulatorId":283,"metricType":"timing"},{"name":"size of files read","accumulatorId":284,"metricType":"size"},{"name":"number of output rows","accumulatorId":280,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":278,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":272,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":279,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":273,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":270,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":267,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":276,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":269,"metricType":"sum"},{"name":"records read","accumulatorId":266,"metricType":"sum"},{"name":"local bytes read","accumulatorId":264,"metricType":"size"},{"name":"fetch wait time","accumulatorId":265,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":262,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":268,"metricType":"sum"},{"name":"local blocks read","accumulatorId":261,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":271,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":260,"metricType":"sum"},{"name":"data size","accumulatorId":258,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":274,"metricType":"size"},{"name":"number of partitions","accumulatorId":259,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":275,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":263,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":277,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"task commit time","accumulatorId":256,"metricType":"timing"},{"name":"number of written files","accumulatorId":252,"metricType":"sum"},{"name":"job commit time","accumulatorId":257,"metricType":"timing"},{"name":"number of output rows","accumulatorId":254,"metricType":"sum"},{"name":"number of dynamic part","accumulatorId":255,"metricType":"sum"},{"name":"written output","accumulatorId":253,"metricType":"size"}]}],"metadata":{},"metrics":[]},"time":1750996691341,"modifiedConfigs":{},"jobTags":[]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate","executionId":2,"physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (12)\n+- == Current Plan ==\n Execute InsertIntoHadoopFsRelationCommand (7)\n +- WriteFiles (6)\n +- ShuffleQueryStage (5)\n +- Exchange (4)\n +- * Project (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n+- == Initial Plan ==\n Execute InsertIntoHadoopFsRelationCommand (11)\n +- WriteFiles (10)\n +- Exchange (9)\n +- Project (8)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct\n\n(2) ColumnarToRow [codegen id : 1]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(3) Project [codegen id : 1]\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 03:57:59.158854 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(4) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=80]\n\n(5) ShuffleQueryStage\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: 0\n\n(6) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(7) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(8) Project\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 03:57:59.158854 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(9) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=65]\n\n(10) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(11) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(12) AdaptiveSparkPlan\nOutput: []\nArguments: isFinalPlan=false\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=false","children":[{"nodeName":"Execute InsertIntoHadoopFsRelationCommand","simpleString":"Execute InsertIntoHadoopFsRelationCommand s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]","children":[{"nodeName":"WriteFiles","simpleString":"WriteFiles","children":[{"nodeName":"ShuffleQueryStage","simpleString":"ShuffleQueryStage 0","children":[{"nodeName":"Exchange","simpleString":"Exchange RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=80]","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"Project","simpleString":"Project [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 03:57:59.158854 AS current_date#38]","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [VendorID#0L,tpep_pickup_datetime#1,tpep_dropoff_datetime#2,passenger_count#3,trip_distance#4,RatecodeID#5,store_and_fwd_flag#6,PULocationID#7L,DOLocationID#8L,payment_type#9L,fare_amount#10,extra#11,mta_tax#12,tip_amount#13,tolls_amount#14,improvement_surcharge#15,total_amount#16,congestion_surcharge#17,airport_fee#18] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":282,"metricType":"sum"},{"name":"scan time","accumulatorId":281,"metricType":"timing"},{"name":"metadata time","accumulatorId":283,"metricType":"timing"},{"name":"size of files read","accumulatorId":284,"metricType":"size"},{"name":"number of output rows","accumulatorId":280,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":308,"metricType":"sum"},{"name":"number of input batches","accumulatorId":309,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":307,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":305,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":299,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":306,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":300,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":297,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":294,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":303,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":296,"metricType":"sum"},{"name":"records read","accumulatorId":293,"metricType":"sum"},{"name":"local bytes read","accumulatorId":291,"metricType":"size"},{"name":"fetch wait time","accumulatorId":292,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":289,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":295,"metricType":"sum"},{"name":"local blocks read","accumulatorId":288,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":298,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":287,"metricType":"sum"},{"name":"data size","accumulatorId":285,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":301,"metricType":"size"},{"name":"number of partitions","accumulatorId":286,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":302,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":290,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":304,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"task commit time","accumulatorId":256,"metricType":"timing"},{"name":"number of written files","accumulatorId":252,"metricType":"sum"},{"name":"job commit time","accumulatorId":257,"metricType":"timing"},{"name":"number of output rows","accumulatorId":254,"metricType":"sum"},{"name":"number of dynamic part","accumulatorId":255,"metricType":"sum"},{"name":"written output","accumulatorId":253,"metricType":"size"}]}],"metadata":{},"metrics":[]}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":2,"accumUpdates":[[282,101],[283,0],[284,3852134849]]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":2,"accumUpdates":[[286,2]]} +{"Event":"SparkListenerJobStart","Job ID":4,"Submission Time":1750996691452,"Stage Infos":[{"Stage ID":5,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":34,"RDD Info":[{"RDD ID":17,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[16],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":16,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[15],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":13,"Name":"FileScanRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":15,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"36\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[14],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":14,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[13],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[5],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"2","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"2","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":5,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":34,"RDD Info":[{"RDD ID":17,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[16],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":16,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[15],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":13,"Name":"FileScanRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":15,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"36\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[14],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":14,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[13],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996691514,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"2","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"2","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.rdd.scope.noOverride":"true","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":37,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996691521,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":38,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750996691522,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":39,"Index":2,"Attempt":0,"Partition ID":2,"Launch Time":1750996691522,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":40,"Index":3,"Attempt":0,"Partition ID":3,"Launch Time":1750996691522,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":41,"Index":4,"Attempt":0,"Partition ID":4,"Launch Time":1750996708099,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":40,"Index":3,"Attempt":0,"Partition ID":3,"Launch Time":1750996691522,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996708100,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2741","Value":"2741","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"1299239496","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"316938494","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"304769159","Value":"304769159","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6744","Value":"6744","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"7391793","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"1806","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":16,"Value":16,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":10215504,"Value":10215504,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16553,"Value":16553,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":14954702480,"Value":14954702480,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":2036,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":37,"Value":37,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":316938494,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":7391793,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":304769159,"Value":304769159,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":114444762,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":7391793,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2218104288,"JVMOffHeapMemory":118576640,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612128306,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850645,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":2930069504,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":12,"MinorGCTime":77,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":77},"Task Metrics":{"Executor Deserialize Time":16,"Executor Deserialize CPU Time":10215504,"Executor Run Time":16553,"Executor CPU Time":14954702480,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":37,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":304769159,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":42,"Index":5,"Attempt":0,"Partition ID":5,"Launch Time":1750996708271,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":38,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750996691522,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996708272,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2980","Value":"5721","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"2598478992","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"633876988","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"307321826","Value":"612090985","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6872","Value":"13616","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"14783586","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"3612","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":22,"Value":38,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":14252913,"Value":24468417,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16719,"Value":33272,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":15343967441,"Value":30298669921,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":4070,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":59,"Value":96,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":633876988,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":14783586,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":307321826,"Value":612090985,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":228889524,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":14783586,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2231602448,"JVMOffHeapMemory":115249032,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10030317568,"ProcessTreeJVMRSSMemory":2759475200,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":12,"MinorGCTime":90,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":90},"Task Metrics":{"Executor Deserialize Time":22,"Executor Deserialize CPU Time":14252913,"Executor Run Time":16719,"Executor CPU Time":15343967441,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":59,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":307321826,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":43,"Index":6,"Attempt":0,"Partition ID":6,"Launch Time":1750996708359,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":37,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996691521,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996708359,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2836","Value":"8557","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"3897718488","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"950815482","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"307715213","Value":"919806198","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"7021","Value":"20637","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"22175379","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"5418","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":21,"Value":59,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":14451312,"Value":38919729,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16808,"Value":50080,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":15757252584,"Value":46055922505,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":6106,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":54,"Value":150,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":950815482,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":22175379,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":307715213,"Value":919806198,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":343334286,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":22175379,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2381026744,"JVMOffHeapMemory":115309536,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":2909048832,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":11,"MinorGCTime":86,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":86},"Task Metrics":{"Executor Deserialize Time":21,"Executor Deserialize CPU Time":14451312,"Executor Run Time":16808,"Executor CPU Time":15757252584,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":54,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":307715213,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":44,"Index":7,"Attempt":0,"Partition ID":7,"Launch Time":1750996708500,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":39,"Index":2,"Attempt":0,"Partition ID":2,"Launch Time":1750996691522,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996708501,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3282","Value":"11839","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"5196957984","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"1267753976","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"303237004","Value":"1223043202","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"7153","Value":"27790","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"29567172","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"7224","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":20,"Value":79,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":13336857,"Value":52256586,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":16951,"Value":67031,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":15240034620,"Value":61295957125,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":8142,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":45,"Value":195,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":1267753976,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":29567172,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":303237004,"Value":1223043202,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":457779048,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":29567172,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2335468952,"JVMOffHeapMemory":115177272,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":2884853760,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":10,"MinorGCTime":76,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":76},"Task Metrics":{"Executor Deserialize Time":20,"Executor Deserialize CPU Time":13336857,"Executor Run Time":16951,"Executor CPU Time":15240034620,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":45,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":303237004,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":45,"Index":8,"Attempt":0,"Partition ID":8,"Launch Time":1750996723439,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":42,"Index":5,"Attempt":0,"Partition ID":5,"Launch Time":1750996708271,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996723439,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2640","Value":"14479","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"6496197480","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"1584692470","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"304232921","Value":"1527276123","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5799","Value":"33589","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"36958965","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"9030","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":81,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2893929,"Value":55150515,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15158,"Value":82189,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13758236893,"Value":75054194018,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":10176,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":9,"Value":204,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":1584692470,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":36958965,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":304232921,"Value":1527276123,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":572223810,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":36958965,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2144591136,"JVMOffHeapMemory":113726568,"OnHeapExecutionMemory":1342177024,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1343196652,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10030317568,"ProcessTreeJVMRSSMemory":4062052352,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":13,"MinorGCTime":95,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":95},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2893929,"Executor Run Time":15158,"Executor CPU Time":13758236893,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":9,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":304232921,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":46,"Index":9,"Attempt":0,"Partition ID":9,"Launch Time":1750996723535,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":43,"Index":6,"Attempt":0,"Partition ID":6,"Launch Time":1750996708359,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996723535,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2445","Value":"16924","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"7795436976","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"1901630964","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"302607245","Value":"1829883368","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5764","Value":"39353","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"44350758","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"10836","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":84,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3058608,"Value":58209123,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15167,"Value":97356,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13938440422,"Value":88992634440,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":12212,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":3,"Value":207,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":1901630964,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":44350758,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":302607245,"Value":1829883368,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":686668572,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":44350758,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":4222326200,"JVMOffHeapMemory":116745880,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4466999296,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":11,"MinorGCTime":86,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":86},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3058608,"Executor Run Time":15167,"Executor CPU Time":13938440422,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":3,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":302607245,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":47,"Index":10,"Attempt":0,"Partition ID":10,"Launch Time":1750996723989,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":41,"Index":4,"Attempt":0,"Partition ID":4,"Launch Time":1750996708099,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996723990,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3089","Value":"20013","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"9094676472","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"2218569458","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"305865371","Value":"2135748739","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6377","Value":"45730","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"51742551","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"12642","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":86,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2388910,"Value":60598033,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15881,"Value":113237,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13979487765,"Value":102972122205,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":14248,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":5,"Value":212,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":2218569458,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":51742551,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":305865371,"Value":2135748739,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":801113334,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":51742551,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3484784096,"JVMOffHeapMemory":119741560,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612128306,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850645,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":4384817152,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":13,"MinorGCTime":82,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":82},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2388910,"Executor Run Time":15881,"Executor CPU Time":13979487765,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":5,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":305865371,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":48,"Index":11,"Attempt":0,"Partition ID":11,"Launch Time":1750996724041,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":44,"Index":7,"Attempt":0,"Partition ID":7,"Launch Time":1750996708500,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996724042,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2892","Value":"22905","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"10393915968","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"2535507952","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"306376295","Value":"2442125034","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6178","Value":"51908","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"59134344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"14448","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":88,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2808342,"Value":63406375,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15532,"Value":128769,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13858966162,"Value":116831088367,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":16284,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":2,"Value":214,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":2535507952,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":59134344,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":306376295,"Value":2442125034,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":915558096,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":59134344,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":4191448472,"JVMOffHeapMemory":113460104,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4441374720,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":10,"MinorGCTime":76,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":76},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2808342,"Executor Run Time":15532,"Executor CPU Time":13858966162,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":2,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":306376295,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":49,"Index":12,"Attempt":0,"Partition ID":12,"Launch Time":1750996738236,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":46,"Index":9,"Attempt":0,"Partition ID":9,"Launch Time":1750996723535,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996738236,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2636","Value":"25541","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"11693155464","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"2852446446","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"301789626","Value":"2743914660","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5258","Value":"57166","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"66526137","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"16254","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":90,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2558466,"Value":65964841,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14692,"Value":143461,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13114557069,"Value":129945645436,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":18320,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":5,"Value":219,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":2852446446,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":66526137,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":301789626,"Value":2743914660,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1030002858,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":66526137,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3711326752,"JVMOffHeapMemory":114566768,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4524027904,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":14,"MinorGCTime":94,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":94},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2558466,"Executor Run Time":14692,"Executor CPU Time":13114557069,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":5,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":301789626,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":50,"Index":13,"Attempt":0,"Partition ID":13,"Launch Time":1750996738497,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":45,"Index":8,"Attempt":0,"Partition ID":8,"Launch Time":1750996723439,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996738497,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2854","Value":"28395","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"12992394960","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"3169384940","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"302291200","Value":"3046205860","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5558","Value":"62724","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"73917930","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"18060","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":92,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2469302,"Value":68434143,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15050,"Value":158511,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13242501780,"Value":143188147216,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":20354,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":7,"Value":226,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":3169384940,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":73917930,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":302291200,"Value":3046205860,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1144447620,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":73917930,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2056085088,"JVMOffHeapMemory":114760728,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10030317568,"ProcessTreeJVMRSSMemory":4115197952,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":18,"MinorGCTime":106,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":106},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2469302,"Executor Run Time":15050,"Executor CPU Time":13242501780,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":7,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":302291200,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":51,"Index":14,"Attempt":0,"Partition ID":14,"Launch Time":1750996738632,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":47,"Index":10,"Attempt":0,"Partition ID":10,"Launch Time":1750996723989,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996738633,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2393","Value":"30788","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"14291634456","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"3486323434","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"305092006","Value":"3351297866","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5140","Value":"67864","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"81309723","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"19866","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":95,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3000128,"Value":71434271,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14632,"Value":173143,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13237134126,"Value":156425281342,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2079,"Value":22433,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":56,"Value":282,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":2,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":3486323434,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":81309723,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":305092006,"Value":3351297866,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1258892382,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":81309723,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2082934152,"JVMOffHeapMemory":120819192,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612128306,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850645,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":4412616704,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":36,"MinorGCTime":136,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":136},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3000128,"Executor Run Time":14632,"Executor CPU Time":13237134126,"Peak Execution Memory":0,"Result Size":2079,"JVM GC Time":56,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":305092006,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":52,"Index":15,"Attempt":0,"Partition ID":15,"Launch Time":1750996738813,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":48,"Index":11,"Attempt":0,"Partition ID":11,"Launch Time":1750996724041,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996738813,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2843","Value":"33631","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"15590873952","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"3803261928","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"304585792","Value":"3655883658","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5484","Value":"73348","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"88701516","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"21672","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":97,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2607975,"Value":74042246,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14763,"Value":187906,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":12972366326,"Value":169397647668,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":24469,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":4,"Value":286,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":3803261928,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":88701516,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":304585792,"Value":3655883658,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1373337144,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":88701516,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3640604448,"JVMOffHeapMemory":114657440,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4528726016,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":13,"MinorGCTime":82,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":82},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2607975,"Executor Run Time":14763,"Executor CPU Time":12972366326,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":4,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":304585792,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":53,"Index":16,"Attempt":0,"Partition ID":16,"Launch Time":1750996753325,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":49,"Index":12,"Attempt":0,"Partition ID":12,"Launch Time":1750996738236,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996753327,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2905","Value":"36536","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"16890113448","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"4120200422","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"303518348","Value":"3959402006","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5744","Value":"79092","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"96093309","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"23478","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":99,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2386145,"Value":76428391,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15081,"Value":202987,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13254074629,"Value":182651722297,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":26505,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":9,"Value":295,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":4120200422,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":96093309,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":303518348,"Value":3959402006,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1487781906,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":96093309,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2931768344,"JVMOffHeapMemory":115321952,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4580102144,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":17,"MinorGCTime":103,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":103},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2386145,"Executor Run Time":15081,"Executor CPU Time":13254074629,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":9,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":303518348,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":54,"Index":17,"Attempt":0,"Partition ID":17,"Launch Time":1750996753434,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":50,"Index":13,"Attempt":0,"Partition ID":13,"Launch Time":1750996738497,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996753434,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2651","Value":"39187","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"18189352944","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"4437138916","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"428849145","Value":"4388251151","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5336","Value":"84428","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"103485102","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"25284","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":102,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3661505,"Value":80089896,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14925,"Value":217912,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13209385671,"Value":195861107968,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2077,"Value":28582,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":9,"Value":304,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":4,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":4437138916,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":103485102,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":428849145,"Value":4388251151,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1602226668,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":103485102,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3832311384,"JVMOffHeapMemory":115439216,"OnHeapExecutionMemory":1476394720,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1477414348,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10030317568,"ProcessTreeJVMRSSMemory":4182876160,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":19,"MinorGCTime":112,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":112},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3661505,"Executor Run Time":14925,"Executor CPU Time":13209385671,"Peak Execution Memory":0,"Result Size":2077,"JVM GC Time":9,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":428849145,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":55,"Index":18,"Attempt":0,"Partition ID":18,"Launch Time":1750996753637,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":51,"Index":14,"Attempt":0,"Partition ID":14,"Launch Time":1750996738632,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996753637,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2725","Value":"41912","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"19488592440","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"4754077410","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"299436815","Value":"4687687966","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5605","Value":"90033","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"110876895","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"27090","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":104,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2675254,"Value":82765150,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14996,"Value":232908,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13301690841,"Value":209162798809,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":30618,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":47,"Value":351,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":4754077410,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":110876895,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":299436815,"Value":4687687966,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1716671430,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":110876895,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2396019080,"JVMOffHeapMemory":121600440,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612128306,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850645,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":4431302656,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":58,"MinorGCTime":185,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":185},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2675254,"Executor Run Time":14996,"Executor CPU Time":13301690841,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":47,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":299436815,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":56,"Index":19,"Attempt":0,"Partition ID":19,"Launch Time":1750996753789,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":52,"Index":15,"Attempt":0,"Partition ID":15,"Launch Time":1750996738813,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996753789,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2858","Value":"44770","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"20787831936","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"5071015904","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"306737741","Value":"4994425707","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5625","Value":"95658","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"118268688","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"28896","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":106,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2945977,"Value":85711127,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14966,"Value":247874,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13137484200,"Value":222300283009,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2079,"Value":32697,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":18,"Value":369,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":6,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":5071015904,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":118268688,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":306737741,"Value":4994425707,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1831116192,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":118268688,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2052061272,"JVMOffHeapMemory":115303696,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4573601792,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":20,"MinorGCTime":99,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":99},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2945977,"Executor Run Time":14966,"Executor CPU Time":13137484200,"Peak Execution Memory":0,"Result Size":2079,"JVM GC Time":18,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":306737741,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":57,"Index":20,"Attempt":0,"Partition ID":20,"Launch Time":1750996768392,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":53,"Index":16,"Attempt":0,"Partition ID":16,"Launch Time":1750996753325,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996768393,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2860","Value":"47630","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"22087071432","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"5387954398","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"300324327","Value":"5294750034","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5723","Value":"101381","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"125660481","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"30702","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":108,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2849052,"Value":88560179,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15057,"Value":262931,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13265129341,"Value":235565412350,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":34733,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":6,"Value":375,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":5387954398,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":125660481,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":300324327,"Value":5294750034,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":1945560954,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":125660481,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3185219944,"JVMOffHeapMemory":116173480,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4603052032,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":20,"MinorGCTime":109,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":109},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2849052,"Executor Run Time":15057,"Executor CPU Time":13265129341,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":6,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":300324327,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":58,"Index":21,"Attempt":0,"Partition ID":21,"Launch Time":1750996768594,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":55,"Index":18,"Attempt":0,"Partition ID":18,"Launch Time":1750996753637,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996768595,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"133052274","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2769","Value":"50399","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"23386310928","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"5704892892","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"133052274","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"300406015","Value":"5595156049","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5432","Value":"106813","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"133052274","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"32508","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":110,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2181040,"Value":90741219,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14949,"Value":277880,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13232060046,"Value":248797472396,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":36769,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":2,"Value":377,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":5704892892,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":133052274,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":300406015,"Value":5595156049,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2060005716,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":133052274,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":4153432456,"JVMOffHeapMemory":122255896,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612128306,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850645,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":4501340160,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":58,"MinorGCTime":185,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":185},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2181040,"Executor Run Time":14949,"Executor CPU Time":13232060046,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":2,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":300406015,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":59,"Index":22,"Attempt":0,"Partition ID":22,"Launch Time":1750996768852,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":54,"Index":17,"Attempt":0,"Partition ID":17,"Launch Time":1750996753434,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996768853,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"140444067","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3119","Value":"53518","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"24685550424","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"6021831386","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"140444067","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"305639722","Value":"5900795771","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5871","Value":"112684","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"140444067","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"34314","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":112,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2310572,"Value":93051791,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15410,"Value":293290,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13335489308,"Value":262132961704,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":1991,"Value":38760,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":6021831386,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":140444067,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":305639722,"Value":5900795771,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2174450478,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":140444067,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3749760944,"JVMOffHeapMemory":116142344,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10030317568,"ProcessTreeJVMRSSMemory":4195008512,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":21,"MinorGCTime":115,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":115},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2310572,"Executor Run Time":15410,"Executor CPU Time":13335489308,"Peak Execution Memory":0,"Result Size":1991,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":305639722,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":60,"Index":23,"Attempt":0,"Partition ID":23,"Launch Time":1750996769604,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":56,"Index":19,"Attempt":0,"Partition ID":19,"Launch Time":1750996753789,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996769605,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"147835860","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3438","Value":"56956","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"25984789920","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"6338769880","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"147835860","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"521547915","Value":"6422343686","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6255","Value":"118939","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"147835860","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"36120","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":114,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2582278,"Value":95634069,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15806,"Value":309096,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13203177048,"Value":275336138752,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":40796,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":38,"Value":415,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":6338769880,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":147835860,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":521547915,"Value":6422343686,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2288895240,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":147835860,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3217468656,"JVMOffHeapMemory":116054576,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4602855424,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":39,"MinorGCTime":138,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":138},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2582278,"Executor Run Time":15806,"Executor CPU Time":13203177048,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":38,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":521547915,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":61,"Index":24,"Attempt":0,"Partition ID":24,"Launch Time":1750996783198,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":58,"Index":21,"Attempt":0,"Partition ID":21,"Launch Time":1750996768594,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996783199,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"155227653","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2493","Value":"59449","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"27284029416","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"6655708374","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"155227653","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"298931240","Value":"6721274926","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5130","Value":"124069","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"155227653","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"37926","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":116,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2067419,"Value":97701488,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14596,"Value":323692,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13116836386,"Value":288452975138,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":42832,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":5,"Value":420,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":6655708374,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":155227653,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":298931240,"Value":6721274926,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2403340002,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":155227653,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3627126144,"JVMOffHeapMemory":122824880,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612128306,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850645,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":4598587392,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":61,"MinorGCTime":192,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":192},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2067419,"Executor Run Time":14596,"Executor CPU Time":13116836386,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":5,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":298931240,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":62,"Index":25,"Attempt":0,"Partition ID":25,"Launch Time":1750996783503,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":57,"Index":20,"Attempt":0,"Partition ID":20,"Launch Time":1750996768392,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996783503,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"162619446","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2923","Value":"62372","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"28583268912","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"6972646868","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"162619446","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"301581287","Value":"7022856213","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5778","Value":"129847","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"162619446","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"39732","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":118,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2249735,"Value":99951223,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15103,"Value":338795,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13232395225,"Value":301685370363,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":44868,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":7,"Value":427,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":6972646868,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":162619446,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":301581287,"Value":7022856213,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2517784764,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":162619446,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3023950416,"JVMOffHeapMemory":116692792,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4613107712,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":23,"MinorGCTime":116,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":116},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2249735,"Executor Run Time":15103,"Executor CPU Time":13232395225,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":7,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":301581287,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":63,"Index":26,"Attempt":0,"Partition ID":26,"Launch Time":1750996784335,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":59,"Index":22,"Attempt":0,"Partition ID":22,"Launch Time":1750996768852,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996784336,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"170011239","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3111","Value":"65483","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"29882508408","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"7289585362","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"170011239","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"304881007","Value":"7327737220","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6029","Value":"135876","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"170011239","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"41538","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":120,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2411413,"Value":102362636,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15475,"Value":354270,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13442155213,"Value":315127525576,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":46902,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":9,"Value":436,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":7289585362,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":170011239,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":304881007,"Value":7327737220,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2632229526,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":170011239,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3485595360,"JVMOffHeapMemory":117078568,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10030317568,"ProcessTreeJVMRSSMemory":4427907072,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":24,"MinorGCTime":124,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":124},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2411413,"Executor Run Time":15475,"Executor CPU Time":13442155213,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":9,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":304881007,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":64,"Index":27,"Attempt":0,"Partition ID":27,"Launch Time":1750996784667,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":60,"Index":23,"Attempt":0,"Partition ID":23,"Launch Time":1750996769604,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996784668,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"177403032","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3025","Value":"68508","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"31181747904","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"7606523856","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"177403032","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"310387485","Value":"7638124705","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5742","Value":"141618","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"177403032","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"43344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":122,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2347076,"Value":104709712,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15054,"Value":369324,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13078789059,"Value":328206314635,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":48938,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":6,"Value":442,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":7606523856,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":177403032,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":310387485,"Value":7638124705,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2746674288,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":177403032,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":1979568704,"JVMOffHeapMemory":116885312,"OnHeapExecutionMemory":1409285872,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1410305500,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4648292352,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":42,"MinorGCTime":144,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":144},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2347076,"Executor Run Time":15054,"Executor CPU Time":13078789059,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":6,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":310387485,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":65,"Index":28,"Attempt":0,"Partition ID":28,"Launch Time":1750996798772,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":61,"Index":24,"Attempt":0,"Partition ID":24,"Launch Time":1750996783198,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996798773,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"184794825","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3483","Value":"71991","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"32480987400","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"7923462350","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"184794825","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"302338794","Value":"7940463499","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6143","Value":"147761","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"184794825","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"45150","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":124,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2133841,"Value":106843553,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15566,"Value":384890,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13065084981,"Value":341271399616,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":50974,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":48,"Value":490,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":7923462350,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":184794825,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":302338794,"Value":7940463499,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2861119050,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":184794825,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":1988366472,"JVMOffHeapMemory":123328512,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612128306,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850645,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":4634320896,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":83,"MinorGCTime":240,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":240},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2133841,"Executor Run Time":15566,"Executor CPU Time":13065084981,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":48,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":302338794,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":66,"Index":29,"Attempt":0,"Partition ID":29,"Launch Time":1750996798867,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":62,"Index":25,"Attempt":0,"Partition ID":25,"Launch Time":1750996783503,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996798868,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"192186618","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3257","Value":"75248","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"33780226896","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"8240400844","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"192186618","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"302418190","Value":"8242881689","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"6087","Value":"153848","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"192186618","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"46956","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":126,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2207037,"Value":109050590,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15357,"Value":400247,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13182309591,"Value":354453709207,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":53010,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":7,"Value":497,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":8240400844,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":192186618,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":302418190,"Value":8242881689,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":2975563812,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":192186618,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3839742544,"JVMOffHeapMemory":117652728,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4622299136,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":26,"MinorGCTime":123,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":123},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2207037,"Executor Run Time":15357,"Executor CPU Time":13182309591,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":7,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":302418190,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":67,"Index":30,"Attempt":0,"Partition ID":30,"Launch Time":1750996799508,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":64,"Index":27,"Attempt":0,"Partition ID":27,"Launch Time":1750996784667,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996799508,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"199578411","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2856","Value":"78104","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"35079466392","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"8557339338","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"199578411","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"303902644","Value":"8546784333","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5510","Value":"159358","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"199578411","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"48762","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":128,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2285744,"Value":111336334,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14831,"Value":415078,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":12997917848,"Value":367451627055,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2079,"Value":55089,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":7,"Value":504,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":8,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":8557339338,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":199578411,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":303902644,"Value":8546784333,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":3090008574,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":199578411,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2594034240,"JVMOffHeapMemory":117508232,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4660244480,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":44,"MinorGCTime":149,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":149},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2285744,"Executor Run Time":14831,"Executor CPU Time":12997917848,"Peak Execution Memory":0,"Result Size":2079,"JVM GC Time":7,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":303902644,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":68,"Index":31,"Attempt":0,"Partition ID":31,"Launch Time":1750996799682,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":63,"Index":26,"Attempt":0,"Partition ID":26,"Launch Time":1750996784335,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996799683,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"206970204","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3020","Value":"81124","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"36378705888","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"8874277832","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"206970204","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"305894104","Value":"8852678437","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5843","Value":"165201","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"206970204","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"50568","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":130,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2422663,"Value":113758997,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15338,"Value":430416,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13395843592,"Value":380847470647,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":57123,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":9,"Value":513,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":8874277832,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":206970204,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":305894104,"Value":8852678437,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":3204453336,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":206970204,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2847312288,"JVMOffHeapMemory":117659264,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611517,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10030317568,"ProcessTreeJVMRSSMemory":4553195520,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":27,"MinorGCTime":133,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":133},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2422663,"Executor Run Time":15338,"Executor CPU Time":13395843592,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":9,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":305894104,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":69,"Index":32,"Attempt":0,"Partition ID":32,"Launch Time":1750996813919,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":66,"Index":29,"Attempt":0,"Partition ID":29,"Launch Time":1750996798867,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996813919,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"214361997","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3016","Value":"84140","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"37677945384","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"9191216326","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"214361997","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"301311856","Value":"9153990293","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5790","Value":"170991","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"214361997","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"52374","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":132,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2114997,"Value":115873994,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15043,"Value":445459,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13062339528,"Value":393909810175,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":59159,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":7,"Value":520,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":9191216326,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":214361997,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":301311856,"Value":9153990293,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":3318898098,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":214361997,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2401175616,"JVMOffHeapMemory":118048016,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611559,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4630704128,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":29,"MinorGCTime":130,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":130},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2114997,"Executor Run Time":15043,"Executor CPU Time":13062339528,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":7,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":301311856,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":5,"Stage Attempt ID":0,"Task Info":{"Task ID":70,"Index":33,"Attempt":0,"Partition ID":33,"Launch Time":1750996814053,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":65,"Index":28,"Attempt":0,"Partition ID":28,"Launch Time":1750996798772,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996814053,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"221753790","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3204","Value":"87344","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"38977184880","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"9508154820","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"221753790","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"301152660","Value":"9455142953","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5862","Value":"176853","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"221753790","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"54180","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":134,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2178503,"Value":118052497,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15272,"Value":460731,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13111608178,"Value":407021418353,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":1993,"Value":61152,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":9508154820,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":221753790,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":301152660,"Value":9455142953,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":3433342860,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":221753790,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":4064546952,"JVMOffHeapMemory":123784536,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1612128306,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850685,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":4645195776,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":83,"MinorGCTime":240,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":240},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2178503,"Executor Run Time":15272,"Executor CPU Time":13111608178,"Peak Execution Memory":0,"Result Size":1993,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":301152660,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":68,"Index":31,"Attempt":0,"Partition ID":31,"Launch Time":1750996799682,"Executor ID":"4","Host":"100.64.247.4","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996814450,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"229145583","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2579","Value":"89923","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"40276424376","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"9825093314","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"229145583","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"308000390","Value":"9763143343","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5262","Value":"182115","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"229145583","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"55986","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":137,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3217330,"Value":121269827,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14758,"Value":475489,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13195814104,"Value":420217232457,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2034,"Value":63186,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":8,"Value":528,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":9825093314,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":229145583,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":308000390,"Value":9763143343,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":3547787622,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":229145583,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2427037448,"JVMOffHeapMemory":118192696,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611557,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10030317568,"ProcessTreeJVMRSSMemory":4587307008,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":30,"MinorGCTime":141,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":141},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3217330,"Executor Run Time":14758,"Executor CPU Time":13195814104,"Peak Execution Memory":0,"Result Size":2034,"JVM GC Time":8,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":308000390,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":67,"Index":30,"Attempt":0,"Partition ID":30,"Launch Time":1750996799508,"Executor ID":"3","Host":"100.64.131.144","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996814483,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"236537376","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2810","Value":"92733","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"41575663872","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"10142031808","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"236537376","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"307776944","Value":"10070920287","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5561","Value":"187676","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"236537376","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"57792","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":140,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3213542,"Value":124483369,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":14966,"Value":490455,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":13209797066,"Value":433427029523,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":1993,"Value":65179,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":10142031808,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":236537376,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":307776944,"Value":10070920287,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":3662232384,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":236537376,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3575011568,"JVMOffHeapMemory":118024760,"OnHeapExecutionMemory":1476394720,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1477414348,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611519,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4672458752,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":45,"MinorGCTime":151,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":151},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3213542,"Executor Run Time":14966,"Executor CPU Time":13209797066,"Peak Execution Memory":0,"Result Size":1993,"JVM GC Time":0,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":307776944,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":70,"Index":33,"Attempt":0,"Partition ID":33,"Launch Time":1750996814053,"Executor ID":"2","Host":"100.64.240.100","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996824414,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"4927862","Value":"241465238","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"2388","Value":"95121","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"866159664","Value":"42441823536","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"299195580","Value":"10441227388","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"4927862","Value":"241465238","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"299465410","Value":"10370385697","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"4240","Value":"191916","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"4927862","Value":"241465238","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1204","Value":"58996","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":2,"Value":142,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":2026060,"Value":126509429,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":10351,"Value":500806,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":8633247772,"Value":442060277295,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":67215,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":6,"Value":534,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":299195580,"Value":10441227388,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":4927862,"Value":241465238,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":299465410,"Value":10370385697,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":76296508,"Value":3738528892,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":4927862,"Value":241465238,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":2224608720,"JVMOffHeapMemory":124429480,"OnHeapExecutionMemory":1073741600,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1515890,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1075257490,"OffHeapUnifiedMemory":0,"DirectPoolMemory":16850685,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10042818560,"ProcessTreeJVMRSSMemory":4666298368,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":86,"MinorGCTime":246,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":246},"Task Metrics":{"Executor Deserialize Time":2,"Executor Deserialize CPU Time":2026060,"Executor Run Time":10351,"Executor CPU Time":8633247772,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":6,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":299195580,"Shuffle Write Time":299465410,"Shuffle Records Written":4927862},"Input Metrics":{"Bytes Read":76296508,"Records Read":4927862},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":5,"Stage Attempt ID":0,"Task Type":"ShuffleMapTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":69,"Index":32,"Attempt":0,"Partition ID":32,"Launch Time":1750996813919,"Executor ID":"1","Host":"100.64.190.213","Locality":"PROCESS_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750996828930,"Failed":false,"Killed":false,"Accumulables":[{"ID":280,"Name":"number of output rows","Update":"7391793","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Update":"3271","Value":"98392","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Update":"1299239496","Value":"43741063032","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Update":"316938494","Value":"10758165882","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Update":"7391793","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Update":"370508733","Value":"10740894430","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Update":"5915","Value":"197831","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Update":"7391793","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Update":"1806","Value":"60802","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Update":3,"Value":145,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Update":3090750,"Value":129600179,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Update":15002,"Value":515808,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Update":12699278405,"Value":454759555700,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Update":2036,"Value":69251,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Update":6,"Value":540,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Update":316938494,"Value":10758165882,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Update":7391793,"Value":248857031,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Update":370508733,"Value":10740894430,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Update":114444762,"Value":3852973654,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Update":7391793,"Value":248857031,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3277785152,"JVMOffHeapMemory":118720136,"OnHeapExecutionMemory":1610612416,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1019628,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1611632044,"OffHeapUnifiedMemory":0,"DirectPoolMemory":12611559,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":9966354432,"ProcessTreeJVMRSSMemory":4647936000,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":32,"MinorGCTime":136,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":136},"Task Metrics":{"Executor Deserialize Time":3,"Executor Deserialize CPU Time":3090750,"Executor Run Time":15002,"Executor CPU Time":12699278405,"Peak Execution Memory":0,"Result Size":2036,"JVM GC Time":6,"Result Serialization Time":0,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":0,"Local Blocks Fetched":0,"Fetch Wait Time":0,"Remote Bytes Read":0,"Remote Bytes Read To Disk":0,"Local Bytes Read":0,"Total Records Read":0,"Remote Requests Duration":0,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":316938494,"Shuffle Write Time":370508733,"Shuffle Records Written":7391793},"Input Metrics":{"Bytes Read":114444762,"Records Read":7391793},"Output Metrics":{"Bytes Written":0,"Records Written":0},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":5,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":34,"RDD Info":[{"RDD ID":17,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[16],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":16,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[15],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":13,"Name":"FileScanRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":15,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"36\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[14],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":14,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[13],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996691514,"Completion Time":1750996828931,"Accumulables":[{"ID":280,"Name":"number of output rows","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":281,"Name":"scan time","Value":"98392","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":285,"Name":"data size","Value":"43741063032","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":304,"Name":"shuffle bytes written","Value":"10758165882","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":305,"Name":"shuffle records written","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":306,"Name":"shuffle write time","Value":"10740894430","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":307,"Name":"duration","Value":"197831","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":308,"Name":"number of output rows","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":309,"Name":"number of input batches","Value":"60802","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":310,"Name":"internal.metrics.executorDeserializeTime","Value":145,"Internal":true,"Count Failed Values":true},{"ID":311,"Name":"internal.metrics.executorDeserializeCpuTime","Value":129600179,"Internal":true,"Count Failed Values":true},{"ID":312,"Name":"internal.metrics.executorRunTime","Value":515808,"Internal":true,"Count Failed Values":true},{"ID":313,"Name":"internal.metrics.executorCpuTime","Value":454759555700,"Internal":true,"Count Failed Values":true},{"ID":314,"Name":"internal.metrics.resultSize","Value":69251,"Internal":true,"Count Failed Values":true},{"ID":315,"Name":"internal.metrics.jvmGCTime","Value":540,"Internal":true,"Count Failed Values":true},{"ID":316,"Name":"internal.metrics.resultSerializationTime","Value":8,"Internal":true,"Count Failed Values":true},{"ID":338,"Name":"internal.metrics.shuffle.write.bytesWritten","Value":10758165882,"Internal":true,"Count Failed Values":true},{"ID":339,"Name":"internal.metrics.shuffle.write.recordsWritten","Value":248857031,"Internal":true,"Count Failed Values":true},{"ID":340,"Name":"internal.metrics.shuffle.write.writeTime","Value":10740894430,"Internal":true,"Count Failed Values":true},{"ID":341,"Name":"internal.metrics.input.bytesRead","Value":3852973654,"Internal":true,"Count Failed Values":true},{"ID":342,"Name":"internal.metrics.input.recordsRead","Value":248857031,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":4,"Completion Time":1750996828932,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLAdaptiveExecutionUpdate","executionId":2,"physicalPlanDescription":"== Physical Plan ==\nAdaptiveSparkPlan (12)\n+- == Final Plan ==\n Execute InsertIntoHadoopFsRelationCommand (7)\n +- WriteFiles (6)\n +- ShuffleQueryStage (5), Statistics(sizeInBytes=40.7 GiB, rowCount=2.49E+8)\n +- Exchange (4)\n +- * Project (3)\n +- * ColumnarToRow (2)\n +- Scan parquet (1)\n+- == Initial Plan ==\n Execute InsertIntoHadoopFsRelationCommand (11)\n +- WriteFiles (10)\n +- Exchange (9)\n +- Project (8)\n +- Scan parquet (1)\n\n\n(1) Scan parquet \nOutput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\nBatched: true\nLocation: InMemoryFileIndex [s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input]\nReadSchema: struct\n\n(2) ColumnarToRow [codegen id : 1]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(3) Project [codegen id : 1]\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 03:57:59.158854 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(4) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=80]\n\n(5) ShuffleQueryStage\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: 0\n\n(6) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(7) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(8) Project\nOutput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 03:57:59.158854 AS current_date#38]\nInput [19]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18]\n\n(9) Exchange\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\nArguments: RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=65]\n\n(10) WriteFiles\nInput [20]: [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, current_date#38]\n\n(11) Execute InsertIntoHadoopFsRelationCommand\nInput: []\nArguments: s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]\n\n(12) AdaptiveSparkPlan\nOutput: []\nArguments: isFinalPlan=true\n\n","sparkPlanInfo":{"nodeName":"AdaptiveSparkPlan","simpleString":"AdaptiveSparkPlan isFinalPlan=true","children":[{"nodeName":"Execute InsertIntoHadoopFsRelationCommand","simpleString":"Execute InsertIntoHadoopFsRelationCommand s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output, false, Parquet, [path=s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/output/], Overwrite, [VendorID, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count, trip_distance, RatecodeID, store_and_fwd_flag, PULocationID, DOLocationID, payment_type, fare_amount, extra, mta_tax, tip_amount, tolls_amount, improvement_surcharge, total_amount, congestion_surcharge, airport_fee, current_date]","children":[{"nodeName":"WriteFiles","simpleString":"WriteFiles","children":[{"nodeName":"ShuffleQueryStage","simpleString":"ShuffleQueryStage 0","children":[{"nodeName":"Exchange","simpleString":"Exchange RoundRobinPartitioning(2), REPARTITION_BY_NUM, [plan_id=80]","children":[{"nodeName":"WholeStageCodegen (1)","simpleString":"WholeStageCodegen (1)","children":[{"nodeName":"Project","simpleString":"Project [VendorID#0L, tpep_pickup_datetime#1, tpep_dropoff_datetime#2, passenger_count#3, trip_distance#4, RatecodeID#5, store_and_fwd_flag#6, PULocationID#7L, DOLocationID#8L, payment_type#9L, fare_amount#10, extra#11, mta_tax#12, tip_amount#13, tolls_amount#14, improvement_surcharge#15, total_amount#16, congestion_surcharge#17, airport_fee#18, 2025-06-27 03:57:59.158854 AS current_date#38]","children":[{"nodeName":"ColumnarToRow","simpleString":"ColumnarToRow","children":[{"nodeName":"InputAdapter","simpleString":"InputAdapter","children":[{"nodeName":"Scan parquet ","simpleString":"FileScan parquet [VendorID#0L,tpep_pickup_datetime#1,tpep_dropoff_datetime#2,passenger_count#3,trip_distance#4,RatecodeID#5,store_and_fwd_flag#6,PULocationID#7L,DOLocationID#8L,payment_type#9L,fare_amount#10,extra#11,mta_tax#12,tip_amount#13,tolls_amount#14,improvement_surcharge#15,total_amount#16,congestion_surcharge#17,airport_fee#18] Batched: true, DataFilters: [], Format: Parquet, Location: InMemoryFileIndex(1 paths)[s3a://sparksense-ai-spark-20250624175205897100000006/taxi-trip/input], PartitionFilters: [], PushedFilters: [], ReadSchema: struct","Format":"Parquet","Batched":"true","PartitionFilters":"[]","PushedFilters":"[]","DataFilters":"[]"},"metrics":[{"name":"number of files read","accumulatorId":282,"metricType":"sum"},{"name":"scan time","accumulatorId":281,"metricType":"timing"},{"name":"metadata time","accumulatorId":283,"metricType":"timing"},{"name":"size of files read","accumulatorId":284,"metricType":"size"},{"name":"number of output rows","accumulatorId":280,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"number of output rows","accumulatorId":308,"metricType":"sum"},{"name":"number of input batches","accumulatorId":309,"metricType":"sum"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"duration","accumulatorId":307,"metricType":"timing"}]}],"metadata":{},"metrics":[{"name":"shuffle records written","accumulatorId":305,"metricType":"sum"},{"name":"local merged chunks fetched","accumulatorId":299,"metricType":"sum"},{"name":"shuffle write time","accumulatorId":306,"metricType":"nsTiming"},{"name":"remote merged bytes read","accumulatorId":300,"metricType":"size"},{"name":"local merged blocks fetched","accumulatorId":297,"metricType":"sum"},{"name":"corrupt merged block chunks","accumulatorId":294,"metricType":"sum"},{"name":"remote merged reqs duration","accumulatorId":303,"metricType":"timing"},{"name":"remote merged blocks fetched","accumulatorId":296,"metricType":"sum"},{"name":"records read","accumulatorId":293,"metricType":"sum"},{"name":"local bytes read","accumulatorId":291,"metricType":"size"},{"name":"fetch wait time","accumulatorId":292,"metricType":"timing"},{"name":"remote bytes read","accumulatorId":289,"metricType":"size"},{"name":"merged fetch fallback count","accumulatorId":295,"metricType":"sum"},{"name":"local blocks read","accumulatorId":288,"metricType":"sum"},{"name":"remote merged chunks fetched","accumulatorId":298,"metricType":"sum"},{"name":"remote blocks read","accumulatorId":287,"metricType":"sum"},{"name":"data size","accumulatorId":285,"metricType":"size"},{"name":"local merged bytes read","accumulatorId":301,"metricType":"size"},{"name":"number of partitions","accumulatorId":286,"metricType":"sum"},{"name":"remote reqs duration","accumulatorId":302,"metricType":"timing"},{"name":"remote bytes read to disk","accumulatorId":290,"metricType":"size"},{"name":"shuffle bytes written","accumulatorId":304,"metricType":"size"}]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[]}],"metadata":{},"metrics":[{"name":"task commit time","accumulatorId":349,"metricType":"timing"},{"name":"number of written files","accumulatorId":345,"metricType":"sum"},{"name":"job commit time","accumulatorId":350,"metricType":"timing"},{"name":"number of output rows","accumulatorId":347,"metricType":"sum"},{"name":"number of dynamic part","accumulatorId":348,"metricType":"sum"},{"name":"written output","accumulatorId":346,"metricType":"size"}]}],"metadata":{},"metrics":[]}} +{"Event":"SparkListenerJobStart","Job ID":5,"Submission Time":1750996829446,"Stage Infos":[{"Stage ID":6,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":34,"RDD Info":[{"RDD ID":17,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[16],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":16,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"35\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[15],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":13,"Name":"FileScanRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":15,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"36\",\"name\":\"WholeStageCodegen (1)\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[14],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":14,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"40\",\"name\":\"Scan parquet \"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[13],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"DETERMINATE","Number of Partitions":34,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},{"Stage ID":7,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":2,"RDD Info":[{"RDD ID":19,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"41\",\"name\":\"WriteFiles\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[18],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":18,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"43\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[17],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[6],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}],"Stage IDs":[6,7],"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"2","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"2","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerStageSubmitted","Stage Info":{"Stage ID":7,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":2,"RDD Info":[{"RDD ID":19,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"41\",\"name\":\"WriteFiles\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[18],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":18,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"43\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[17],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[6],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996829448,"Accumulables":[],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0},"Properties":{"spark.submit.pyFiles":"","spark.local.dir":"/data","spark.app.startTime":"1750996612238","spark.rdd.compress":"True","spark.network.timeout":"2400","spark.hadoop.fs.s3.impl":"org.apache.hadoop.fs.s3a.S3AFileSystem","spark.kubernetes.authenticate.executor.serviceAccountName":"spark-team-a","spark.hadoop.fs.s3a.connection.timeout":"1200000","spark.kubernetes.submitInDriver":"true","spark.hadoop.fs.s3a.aws.credentials.provider":"*********(redacted)","spark.kubernetes.authenticate.driver.serviceAccountName":"spark-team-a","spark.kubernetes.executor.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.sql.warehouse.dir":"file:/opt/spark/spark-warehouse","spark.kubernetes.driver.label.sparkoperator.k8s.io/app-name":"taxi-trip","spark.driver.memory":"4g","spark.master":"k8s://https://172.20.0.1:443","spark.kubernetes.driver.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.driver.cores":"1","spark.kubernetes.driver.limit.cores":"1200m","spark.kubernetes.driver.label.version":"3.5.3","spark.kubernetes.submission.waitAppCompletion":"false","spark.app.name":"NewYorkTaxiData_2025_06_27_03_56_52","spark.executorEnv.SPARK_DRIVER_POD_IP":"100.64.63.89","spark.speculation":"false","spark.hadoop.fs.s3a.path.style.access":"true","spark.driver.host":"taxi-trip-77d59097af8544ae-driver-svc.spark-team-a.svc","spark.driver.blockManager.port":"7079","spark.app.id":"spark-cc4d115f011443d787f03a71a476a745","spark.kubernetes.memoryOverheadFactor":"0.4","spark.kubernetes.executor.label.sparkoperator.k8s.io/app-name":"taxi-trip","resource.executor.cores":"1","spark.kubernetes.driver.label.applicationId":"taxi-trip-nvme","spark.metrics.conf.executor.sink.prometheusServlet.path":"/metrics/executors/prometheus/","__fetch_continuous_blocks_in_batch_enabled":"true","spark.kubernetes.executor.label.applicationId":"taxi-trip-nvme","spark.kubernetes.driver.label.app":"taxi-trip","spark.kubernetes.executor.label.queue":"root.test","spark.sql.execution.root.id":"2","spark.driver.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.app":"taxi-trip","spark.kubernetes.container.image.pullPolicy":"IfNotPresent","spark.driver.port":"7078","spark.driver.bindAddress":"100.64.63.89","spark.kubernetes.resource.type":"python","spark.metrics.conf.*.sink.prometheusServlet.class":"org.apache.spark.metrics.sink.PrometheusServlet","spark.hadoop.fs.s3a.aws.credentials.provider.mapping":"*********(redacted)","spark.kubernetes.driver.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.eventLog.rolling.maxFileSize":"64m","spark.kubernetes.namespace":"spark-team-a","spark.app.submitTime":"1750996611643","spark.kubernetes.executor.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.kubernetes.driver.label.sparkoperator.k8s.io/submission-id":"77ac9ebd-3039-4134-be4c-26e238e4814f","spark.hadoop.fs.s3a.fast.upload":"true","spark.eventLog.dir":"s3a://sparksense-ai-spark-20250624175205897100000006/spark-event-logs","spark.executor.memoryOverhead":"4g","spark.kubernetes.driver.pod.name":"taxi-trip-driver","spark.executor.instances":"4","spark.sql.execution.id":"2","spark.executor.processTreeMetrics.enabled":"true","spark.hadoop.fs.s3a.readahead.range":"256K","spark.executor.memory":"4g","spark.kubernetes.driver.label.queue":"root.test","spark.eventLog.rolling.enabled":"true","spark.ui.prometheus.enabled":"true","spark.kubernetes.executor.limit.cores":"3400m","spark.executor.id":"driver","spark.executor.cores":"1","spark.hadoop.fs.s3a.input.fadvise":"random","spark.submit.deployMode":"client","spark.kubernetes.driver.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.container.image":"public.ecr.aws/data-on-eks/spark:3.5.3-scala2.12-java17-python3-ubuntu","spark.kubernetes.executor.podNamePrefix":"taxi-trip","spark.kubernetes.executor.label.sparkoperator.k8s.io/launched-by-spark-operator":"true","spark.driver.memoryOverhead":"4g","spark.metrics.conf.driver.sink.prometheusServlet.path":"/metrics/driver/prometheus/","spark.eventLog.enabled":"true","spark.hadoop.fs.s3a.connection.maximum":"200","spark.executor.extraJavaOptions":"-Djava.net.preferIPv6Addresses=false -XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djdk.reflect.useDirectMethodHandle=false","spark.kubernetes.executor.label.sparkoperator.k8s.io/mutated-by-spark-operator":"true","spark.kubernetes.executor.label.version":"3.5.3","spark.serializer.objectStreamReset":"100"}} +{"Event":"SparkListenerTaskStart","Stage ID":7,"Stage Attempt ID":0,"Task Info":{"Task ID":71,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996829476,"Executor ID":"3","Host":"100.64.131.144","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskStart","Stage ID":7,"Stage Attempt ID":0,"Task Info":{"Task ID":72,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750996829476,"Executor ID":"1","Host":"100.64.190.213","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":0,"Failed":false,"Killed":false,"Accumulables":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":7,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":72,"Index":1,"Attempt":0,"Partition ID":1,"Launch Time":1750996829476,"Executor ID":"1","Host":"100.64.190.213","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750997072749,"Failed":false,"Killed":false,"Accumulables":[{"ID":287,"Name":"remote blocks read","Update":"25","Value":"25","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":288,"Name":"local blocks read","Update":"9","Value":"9","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":289,"Name":"remote bytes read","Update":"3952870588","Value":"3952870588","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":291,"Name":"local bytes read","Update":"1426239528","Value":"1426239528","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":292,"Name":"fetch wait time","Update":"0","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":293,"Name":"records read","Update":"124428513","Value":"124428513","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":302,"Name":"remote reqs duration","Update":"2963","Value":"2963","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":349,"Name":"task commit time","Update":"3019","Value":"3019","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":351,"Name":"internal.metrics.executorDeserializeTime","Update":77,"Value":77,"Internal":true,"Count Failed Values":true},{"ID":352,"Name":"internal.metrics.executorDeserializeCpuTime","Update":43500686,"Value":43500686,"Internal":true,"Count Failed Values":true},{"ID":353,"Name":"internal.metrics.executorRunTime","Update":243182,"Value":243182,"Internal":true,"Count Failed Values":true},{"ID":354,"Name":"internal.metrics.executorCpuTime","Update":239137189565,"Value":239137189565,"Internal":true,"Count Failed Values":true},{"ID":355,"Name":"internal.metrics.resultSize","Update":4826,"Value":4826,"Internal":true,"Count Failed Values":true},{"ID":356,"Name":"internal.metrics.jvmGCTime","Update":199,"Value":199,"Internal":true,"Count Failed Values":true},{"ID":357,"Name":"internal.metrics.resultSerializationTime","Update":2,"Value":2,"Internal":true,"Count Failed Values":true},{"ID":362,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Update":25,"Value":25,"Internal":true,"Count Failed Values":true},{"ID":363,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Update":9,"Value":9,"Internal":true,"Count Failed Values":true},{"ID":364,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Update":3952870588,"Value":3952870588,"Internal":true,"Count Failed Values":true},{"ID":365,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":366,"Name":"internal.metrics.shuffle.read.localBytesRead","Update":1426239528,"Value":1426239528,"Internal":true,"Count Failed Values":true},{"ID":367,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":368,"Name":"internal.metrics.shuffle.read.recordsRead","Update":124428513,"Value":124428513,"Internal":true,"Count Failed Values":true},{"ID":369,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":370,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":371,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":372,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":373,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":374,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":375,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":376,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":377,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Update":2963,"Value":2963,"Internal":true,"Count Failed Values":true},{"ID":378,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":384,"Name":"internal.metrics.output.bytesWritten","Update":2686645943,"Value":2686645943,"Internal":true,"Count Failed Values":true},{"ID":385,"Name":"internal.metrics.output.recordsWritten","Update":124428513,"Value":124428513,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3134745800,"JVMOffHeapMemory":134666456,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1364880,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1364880,"OffHeapUnifiedMemory":0,"DirectPoolMemory":330417329,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":10578984960,"ProcessTreeJVMRSSMemory":5163847680,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":61,"MinorGCTime":335,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":335},"Task Metrics":{"Executor Deserialize Time":77,"Executor Deserialize CPU Time":43500686,"Executor Run Time":243182,"Executor CPU Time":239137189565,"Peak Execution Memory":0,"Result Size":4826,"JVM GC Time":199,"Result Serialization Time":2,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":25,"Local Blocks Fetched":9,"Fetch Wait Time":0,"Remote Bytes Read":3952870588,"Remote Bytes Read To Disk":0,"Local Bytes Read":1426239528,"Total Records Read":124428513,"Remote Requests Duration":2963,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":0,"Records Read":0},"Output Metrics":{"Bytes Written":2686645943,"Records Written":124428513},"Updated Blocks":[]}} +{"Event":"SparkListenerTaskEnd","Stage ID":7,"Stage Attempt ID":0,"Task Type":"ResultTask","Task End Reason":{"Reason":"Success"},"Task Info":{"Task ID":71,"Index":0,"Attempt":0,"Partition ID":0,"Launch Time":1750996829476,"Executor ID":"3","Host":"100.64.131.144","Locality":"NODE_LOCAL","Speculative":false,"Getting Result Time":0,"Finish Time":1750997116439,"Failed":false,"Killed":false,"Accumulables":[{"ID":287,"Name":"remote blocks read","Update":"26","Value":"51","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":288,"Name":"local blocks read","Update":"8","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":289,"Name":"remote bytes read","Update":"4111312660","Value":"8064183248","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":291,"Name":"local bytes read","Update":"1267743106","Value":"2693982634","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":292,"Name":"fetch wait time","Update":"0","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":293,"Name":"records read","Update":"124428518","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":302,"Name":"remote reqs duration","Update":"3430","Value":"6393","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":349,"Name":"task commit time","Update":"2796","Value":"5815","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":351,"Name":"internal.metrics.executorDeserializeTime","Update":76,"Value":153,"Internal":true,"Count Failed Values":true},{"ID":352,"Name":"internal.metrics.executorDeserializeCpuTime","Update":43670336,"Value":87171022,"Internal":true,"Count Failed Values":true},{"ID":353,"Name":"internal.metrics.executorRunTime","Update":286876,"Value":530058,"Internal":true,"Count Failed Values":true},{"ID":354,"Name":"internal.metrics.executorCpuTime","Update":282995316871,"Value":522132506436,"Internal":true,"Count Failed Values":true},{"ID":355,"Name":"internal.metrics.resultSize","Update":4826,"Value":9652,"Internal":true,"Count Failed Values":true},{"ID":356,"Name":"internal.metrics.jvmGCTime","Update":169,"Value":368,"Internal":true,"Count Failed Values":true},{"ID":357,"Name":"internal.metrics.resultSerializationTime","Update":3,"Value":5,"Internal":true,"Count Failed Values":true},{"ID":362,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Update":26,"Value":51,"Internal":true,"Count Failed Values":true},{"ID":363,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Update":8,"Value":17,"Internal":true,"Count Failed Values":true},{"ID":364,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Update":4111312660,"Value":8064183248,"Internal":true,"Count Failed Values":true},{"ID":365,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":366,"Name":"internal.metrics.shuffle.read.localBytesRead","Update":1267743106,"Value":2693982634,"Internal":true,"Count Failed Values":true},{"ID":367,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":368,"Name":"internal.metrics.shuffle.read.recordsRead","Update":124428518,"Value":248857031,"Internal":true,"Count Failed Values":true},{"ID":369,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":370,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":371,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":372,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":373,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":374,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":375,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":376,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":377,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Update":3430,"Value":6393,"Internal":true,"Count Failed Values":true},{"ID":378,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Update":0,"Value":0,"Internal":true,"Count Failed Values":true},{"ID":384,"Name":"internal.metrics.output.bytesWritten","Update":2686894618,"Value":5373540561,"Internal":true,"Count Failed Values":true},{"ID":385,"Name":"internal.metrics.output.recordsWritten","Update":124428518,"Value":248857031,"Internal":true,"Count Failed Values":true}]},"Task Executor Metrics":{"JVMHeapMemory":3631075952,"JVMOffHeapMemory":146413864,"OnHeapExecutionMemory":0,"OffHeapExecutionMemory":0,"OnHeapStorageMemory":1364880,"OffHeapStorageMemory":0,"OnHeapUnifiedMemory":1364880,"OffHeapUnifiedMemory":0,"DirectPoolMemory":330367181,"MappedPoolMemory":0,"ProcessTreeJVMVMemory":11808964608,"ProcessTreeJVMRSSMemory":5120544768,"ProcessTreePythonVMemory":0,"ProcessTreePythonRSSMemory":0,"ProcessTreeOtherVMemory":0,"ProcessTreeOtherRSSMemory":0,"MinorGCCount":78,"MinorGCTime":320,"MajorGCCount":0,"MajorGCTime":0,"TotalGCTime":320},"Task Metrics":{"Executor Deserialize Time":76,"Executor Deserialize CPU Time":43670336,"Executor Run Time":286876,"Executor CPU Time":282995316871,"Peak Execution Memory":0,"Result Size":4826,"JVM GC Time":169,"Result Serialization Time":3,"Memory Bytes Spilled":0,"Disk Bytes Spilled":0,"Shuffle Read Metrics":{"Remote Blocks Fetched":26,"Local Blocks Fetched":8,"Fetch Wait Time":0,"Remote Bytes Read":4111312660,"Remote Bytes Read To Disk":0,"Local Bytes Read":1267743106,"Total Records Read":124428518,"Remote Requests Duration":3430,"Push Based Shuffle":{"Corrupt Merged Block Chunks":0,"Merged Fetch Fallback Count":0,"Merged Remote Blocks Fetched":0,"Merged Local Blocks Fetched":0,"Merged Remote Chunks Fetched":0,"Merged Local Chunks Fetched":0,"Merged Remote Bytes Read":0,"Merged Local Bytes Read":0,"Merged Remote Requests Duration":0}},"Shuffle Write Metrics":{"Shuffle Bytes Written":0,"Shuffle Write Time":0,"Shuffle Records Written":0},"Input Metrics":{"Bytes Read":0,"Records Read":0},"Output Metrics":{"Bytes Written":2686894618,"Records Written":124428518},"Updated Blocks":[]}} +{"Event":"SparkListenerStageCompleted","Stage Info":{"Stage ID":7,"Stage Attempt ID":0,"Stage Name":"parquet at NativeMethodAccessorImpl.java:0","Number of Tasks":2,"RDD Info":[{"RDD ID":19,"Name":"MapPartitionsRDD","Scope":"{\"id\":\"41\",\"name\":\"WriteFiles\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[18],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0},{"RDD ID":18,"Name":"ShuffledRowRDD","Scope":"{\"id\":\"43\",\"name\":\"Exchange\"}","Callsite":"parquet at NativeMethodAccessorImpl.java:0","Parent IDs":[17],"Storage Level":{"Use Disk":false,"Use Memory":false,"Use Off Heap":false,"Deserialized":false,"Replication":1},"Barrier":false,"DeterministicLevel":"UNORDERED","Number of Partitions":2,"Number of Cached Partitions":0,"Memory Size":0,"Disk Size":0}],"Parent IDs":[6],"Details":"org.apache.spark.sql.DataFrameWriter.parquet(DataFrameWriter.scala:802)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\njava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)\njava.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\njava.base/java.lang.reflect.Method.invoke(Method.java:569)\npy4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\npy4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:374)\npy4j.Gateway.invoke(Gateway.java:282)\npy4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\npy4j.commands.CallCommand.execute(CallCommand.java:79)\npy4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)\npy4j.ClientServerConnection.run(ClientServerConnection.java:106)\njava.base/java.lang.Thread.run(Thread.java:840)","Submission Time":1750996829448,"Completion Time":1750997116440,"Accumulables":[{"ID":287,"Name":"remote blocks read","Value":"51","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":288,"Name":"local blocks read","Value":"17","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":289,"Name":"remote bytes read","Value":"8064183248","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":291,"Name":"local bytes read","Value":"2693982634","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":292,"Name":"fetch wait time","Value":"0","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":293,"Name":"records read","Value":"248857031","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":302,"Name":"remote reqs duration","Value":"6393","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":349,"Name":"task commit time","Value":"5815","Internal":true,"Count Failed Values":true,"Metadata":"sql"},{"ID":351,"Name":"internal.metrics.executorDeserializeTime","Value":153,"Internal":true,"Count Failed Values":true},{"ID":352,"Name":"internal.metrics.executorDeserializeCpuTime","Value":87171022,"Internal":true,"Count Failed Values":true},{"ID":353,"Name":"internal.metrics.executorRunTime","Value":530058,"Internal":true,"Count Failed Values":true},{"ID":354,"Name":"internal.metrics.executorCpuTime","Value":522132506436,"Internal":true,"Count Failed Values":true},{"ID":355,"Name":"internal.metrics.resultSize","Value":9652,"Internal":true,"Count Failed Values":true},{"ID":356,"Name":"internal.metrics.jvmGCTime","Value":368,"Internal":true,"Count Failed Values":true},{"ID":357,"Name":"internal.metrics.resultSerializationTime","Value":5,"Internal":true,"Count Failed Values":true},{"ID":362,"Name":"internal.metrics.shuffle.read.remoteBlocksFetched","Value":51,"Internal":true,"Count Failed Values":true},{"ID":363,"Name":"internal.metrics.shuffle.read.localBlocksFetched","Value":17,"Internal":true,"Count Failed Values":true},{"ID":364,"Name":"internal.metrics.shuffle.read.remoteBytesRead","Value":8064183248,"Internal":true,"Count Failed Values":true},{"ID":365,"Name":"internal.metrics.shuffle.read.remoteBytesReadToDisk","Value":0,"Internal":true,"Count Failed Values":true},{"ID":366,"Name":"internal.metrics.shuffle.read.localBytesRead","Value":2693982634,"Internal":true,"Count Failed Values":true},{"ID":367,"Name":"internal.metrics.shuffle.read.fetchWaitTime","Value":0,"Internal":true,"Count Failed Values":true},{"ID":368,"Name":"internal.metrics.shuffle.read.recordsRead","Value":248857031,"Internal":true,"Count Failed Values":true},{"ID":369,"Name":"internal.metrics.shuffle.push.read.corruptMergedBlockChunks","Value":0,"Internal":true,"Count Failed Values":true},{"ID":370,"Name":"internal.metrics.shuffle.push.read.mergedFetchFallbackCount","Value":0,"Internal":true,"Count Failed Values":true},{"ID":371,"Name":"internal.metrics.shuffle.push.read.remoteMergedBlocksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":372,"Name":"internal.metrics.shuffle.push.read.localMergedBlocksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":373,"Name":"internal.metrics.shuffle.push.read.remoteMergedChunksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":374,"Name":"internal.metrics.shuffle.push.read.localMergedChunksFetched","Value":0,"Internal":true,"Count Failed Values":true},{"ID":375,"Name":"internal.metrics.shuffle.push.read.remoteMergedBytesRead","Value":0,"Internal":true,"Count Failed Values":true},{"ID":376,"Name":"internal.metrics.shuffle.push.read.localMergedBytesRead","Value":0,"Internal":true,"Count Failed Values":true},{"ID":377,"Name":"internal.metrics.shuffle.read.remoteReqsDuration","Value":6393,"Internal":true,"Count Failed Values":true},{"ID":378,"Name":"internal.metrics.shuffle.push.read.remoteMergedReqsDuration","Value":0,"Internal":true,"Count Failed Values":true},{"ID":384,"Name":"internal.metrics.output.bytesWritten","Value":5373540561,"Internal":true,"Count Failed Values":true},{"ID":385,"Name":"internal.metrics.output.recordsWritten","Value":248857031,"Internal":true,"Count Failed Values":true}],"Resource Profile Id":0,"Shuffle Push Enabled":false,"Shuffle Push Mergers Count":0}} +{"Event":"SparkListenerJobEnd","Job ID":5,"Completion Time":1750997116440,"Job Result":{"Result":"JobSucceeded"}} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerDriverAccumUpdates","executionId":2,"accumUpdates":[[345,2],[350,4403],[347,248857031],[348,0],[346,5373540561]]} +{"Event":"org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionEnd","executionId":2,"time":1750997120851,"errorMessage":""} +{"Event":"SparkListenerApplicationEnd","Timestamp":1750997120852} diff --git a/examples/integrations/README.md b/examples/integrations/README.md new file mode 100644 index 0000000..f60c706 --- /dev/null +++ b/examples/integrations/README.md @@ -0,0 +1,107 @@ +# AI Agent Integration Examples + +This directory contains comprehensive guides for integrating the Spark History Server MCP with various AI agent frameworks and platforms. + +## Available Integrations + +### ๐Ÿ”ง **Production AI Framework Integrations** +- **[LlamaIndex](llamaindex.md)** - RAG systems and knowledge bases for Spark data + - Vector indexing of Spark application data + - Query engines for performance analysis + - Real-time monitoring chat systems + - Custom embeddings for technical content + +- **[LangGraph](langgraph.md)** - Multi-agent workflows and state machines + - Complex analysis workflows + - Multi-agent monitoring systems + - Optimization recommendation pipelines + - State-based failure investigations + +## Quick Start Guide + +1. **Choose Your Platform**: Start with Claude Desktop for immediate interactive analysis +2. **Review Integration Guide**: Each guide includes complete setup instructions +3. **Test Locally**: Use the provided sample data and local Spark History Server +4. **Customize**: Adapt the examples to your specific use cases + +## Common Integration Patterns + +### **Interactive Analysis** +Perfect for ad-hoc investigation and exploration: +- Claude Desktop integration +- Jupyter notebook workflows +- Real-time query interfaces + +### **Automated Monitoring** +Ideal for production monitoring and alerting: +- LangChain monitoring agents +- Custom alerting systems +- Integration with existing monitoring tools + +### **Knowledge Systems** +Great for building organizational knowledge bases: +- LlamaIndex RAG systems +- Historical pattern analysis +- Performance regression detection + +### **Complex Workflows** +For sophisticated analysis pipelines: +- LangGraph state machines +- Multi-step optimization workflows +- Batch failure investigations + +## ๐Ÿงช Local Testing and Development + +For local testing and development, use the **MCP Inspector** instead of complex AI agent setups: + +- **[TESTING.md](../../TESTING.md)** - Complete guide for testing with MCP Inspector +- **Interactive Testing** - Use browser-based MCP Inspector for immediate tool testing +- **No Configuration Required** - Simple one-command setup for development + +The MCP Inspector provides the fastest way to test your MCP server locally before deploying to production with AI agents. + +## Best Practices + +### **Development** +1. Start with MCP Inspector for local testing +2. Use the sample Spark applications for development +3. Implement error handling and retries +4. Log all interactions for debugging + +### **Production** +1. Deploy using Kubernetes + Helm charts +2. Implement proper authentication +3. Add rate limiting and timeouts +4. Monitor agent performance and set up alerting + +### **Performance** +1. Batch API calls when possible +2. Cache frequently accessed data +3. Use appropriate similarity thresholds +4. Optimize query patterns + +## Sample Data + +All integration examples work with the provided sample data: +- **spark-bcec39f6201b42b9925124595baad260** - Successful ETL job +- **spark-110be3a8424d4a2789cb88134418217b** - Data processing job +- **spark-cc4d115f011443d787f03a71a476a745** - Multi-stage analytics job + +Use these applications to test your integrations before connecting to production data. + +## Contributing + +We welcome contributions to expand the integration examples: + +1. **New Framework Integrations**: Add support for additional AI frameworks +2. **Production Examples**: Share real-world deployment patterns +3. **Specialized Agents**: Contribute domain-specific analysis agents +4. **Best Practices**: Document lessons learned from production deployments + +See the main project [Contributing Guide](../../README.md#-contributing) for details. + +## Support + +- ๐Ÿ› **Issues**: [GitHub Issues](https://github.com/DeepDiagnostix-AI/spark-history-server-mcp/issues) +- ๐Ÿ’ก **Discussions**: [GitHub Discussions](https://github.com/DeepDiagnostix-AI/spark-history-server-mcp/discussions) +- ๐Ÿ“– **Documentation**: [Project Wiki](https://github.com/DeepDiagnostix-AI/spark-history-server-mcp/wiki) \ No newline at end of file diff --git a/examples/integrations/langgraph.md b/examples/integrations/langgraph.md new file mode 100644 index 0000000..29d00e1 --- /dev/null +++ b/examples/integrations/langgraph.md @@ -0,0 +1,764 @@ +# LangGraph Integration + +This guide demonstrates how to build sophisticated Spark analysis workflows using LangGraph's state management and multi-agent capabilities. + +## Installation + +```bash +pip install langgraph langchain-openai +# or +uv add langgraph langchain-openai +``` + +## Basic Multi-Agent Spark Analysis + +### 1. Spark Analysis State Machine + +```python +from typing import Annotated, List, Dict, Any +from langgraph.graph import StateGraph, END +from langgraph.graph.message import add_messages +from langchain_core.messages import BaseMessage, HumanMessage, AIMessage +from langchain_openai import ChatOpenAI +import asyncio +from mcp import ClientSession + +class SparkAnalysisState: + """State for Spark analysis workflow.""" + messages: Annotated[List[BaseMessage], add_messages] + app_id: str + analysis_results: Dict[str, Any] + recommendations: List[str] + current_step: str + +class SparkAnalysisWorkflow: + def __init__(self, mcp_server_url: str): + self.mcp_url = mcp_server_url + self.llm = ChatOpenAI(model="gpt-4", temperature=0) + self.graph = self._build_graph() + + def _build_graph(self): + """Build the analysis workflow graph.""" + workflow = StateGraph(SparkAnalysisState) + + # Add nodes + workflow.add_node("collect_basic_info", self.collect_basic_info) + workflow.add_node("analyze_performance", self.analyze_performance) + workflow.add_node("identify_bottlenecks", self.identify_bottlenecks) + workflow.add_node("compare_with_historical", self.compare_with_historical) + workflow.add_node("generate_recommendations", self.generate_recommendations) + workflow.add_node("format_report", self.format_report) + + # Add edges + workflow.add_edge("collect_basic_info", "analyze_performance") + workflow.add_edge("analyze_performance", "identify_bottlenecks") + workflow.add_edge("identify_bottlenecks", "compare_with_historical") + workflow.add_edge("compare_with_historical", "generate_recommendations") + workflow.add_edge("generate_recommendations", "format_report") + workflow.add_edge("format_report", END) + + # Set entry point + workflow.set_entry_point("collect_basic_info") + + return workflow.compile() + + async def collect_basic_info(self, state: SparkAnalysisState): + """Collect basic application information.""" + async with ClientSession(self.mcp_url) as session: + app_info = await session.call_tool("get_application_info", {"app_id": state["app_id"]}) + jobs = await session.call_tool("get_jobs", {"spark_id": state["app_id"]}) + + state["analysis_results"]["basic_info"] = app_info + state["analysis_results"]["jobs"] = jobs + state["current_step"] = "basic_info_collected" + + state["messages"].append(AIMessage(content=f"Collected basic info for {state['app_id']}")) + return state + + async def analyze_performance(self, state: SparkAnalysisState): + """Analyze application performance metrics.""" + async with ClientSession(self.mcp_url) as session: + try: + executor_summary = await session.call_tool("get_executor_summary", {"spark_id": state["app_id"]}) + stages = await session.call_tool("get_stages", {"spark_id": state["app_id"]}) + + state["analysis_results"]["performance"] = { + "executor_summary": executor_summary, + "stages": stages + } + + # Analyze with LLM + analysis_prompt = f""" + Analyze the performance of this Spark application: + + Basic Info: {state['analysis_results']['basic_info']} + Executor Summary: {executor_summary} + Stages: {stages} + + Identify key performance metrics and potential issues. + """ + + analysis = self.llm.invoke([HumanMessage(content=analysis_prompt)]) + state["analysis_results"]["performance_analysis"] = analysis.content + + except Exception as e: + state["analysis_results"]["performance_analysis"] = f"Performance analysis failed: {e}" + + state["current_step"] = "performance_analyzed" + state["messages"].append(AIMessage(content="Completed performance analysis")) + return state + + async def identify_bottlenecks(self, state: SparkAnalysisState): + """Identify performance bottlenecks.""" + async with ClientSession(self.mcp_url) as session: + try: + bottlenecks = await session.call_tool("get_job_bottlenecks", {"spark_id": state["app_id"]}) + slowest_stages = await session.call_tool("get_slowest_stages", {"spark_id": state["app_id"]}) + + state["analysis_results"]["bottlenecks"] = { + "job_bottlenecks": bottlenecks, + "slowest_stages": slowest_stages + } + + # Analyze bottlenecks with LLM + bottleneck_prompt = f""" + Identify and prioritize bottlenecks in this Spark application: + + Job Bottlenecks: {bottlenecks} + Slowest Stages: {slowest_stages} + + Rank bottlenecks by impact and provide specific areas for optimization. + """ + + analysis = self.llm.invoke([HumanMessage(content=bottleneck_prompt)]) + state["analysis_results"]["bottleneck_analysis"] = analysis.content + + except Exception as e: + state["analysis_results"]["bottleneck_analysis"] = f"Bottleneck analysis failed: {e}" + + state["current_step"] = "bottlenecks_identified" + state["messages"].append(AIMessage(content="Identified performance bottlenecks")) + return state + + async def compare_with_historical(self, state: SparkAnalysisState): + """Compare with historical applications.""" + async with ClientSession(self.mcp_url) as session: + try: + # Get list of applications to find similar ones + apps = await session.call_tool("list_applications") + + # Find similar applications (simplified logic) + similar_apps = [] + current_app = state["analysis_results"]["basic_info"] + current_name = current_app.get("name", "") + + for app in apps.get("applications", []): + if (app["id"] != state["app_id"] and + app.get("name", "").startswith(current_name.split("-")[0])): + similar_apps.append(app["id"]) + if len(similar_apps) >= 3: # Limit comparisons + break + + # Compare with similar applications + comparisons = [] + for similar_app_id in similar_apps: + try: + comparison = await session.call_tool("compare_job_performance", { + "spark_id1": state["app_id"], + "spark_id2": similar_app_id + }) + comparisons.append({ + "compared_with": similar_app_id, + "comparison": comparison + }) + except: + continue + + state["analysis_results"]["historical_comparison"] = comparisons + + except Exception as e: + state["analysis_results"]["historical_comparison"] = f"Historical comparison failed: {e}" + + state["current_step"] = "historical_compared" + state["messages"].append(AIMessage(content="Completed historical comparison")) + return state + + async def generate_recommendations(self, state: SparkAnalysisState): + """Generate optimization recommendations.""" + # Combine all analysis results + all_analysis = state["analysis_results"] + + recommendation_prompt = f""" + Based on comprehensive analysis of Spark application {state['app_id']}, generate specific optimization recommendations: + + Basic Info: {all_analysis.get('basic_info', {})} + Performance Analysis: {all_analysis.get('performance_analysis', '')} + Bottleneck Analysis: {all_analysis.get('bottleneck_analysis', '')} + Historical Comparisons: {all_analysis.get('historical_comparison', [])} + + Provide: + 1. Top 3 optimization opportunities + 2. Specific configuration changes + 3. Resource allocation recommendations + 4. Expected performance improvements + 5. Implementation priority + """ + + recommendations = self.llm.invoke([HumanMessage(content=recommendation_prompt)]) + state["recommendations"] = recommendations.content.split("\n") + state["current_step"] = "recommendations_generated" + + state["messages"].append(AIMessage(content="Generated optimization recommendations")) + return state + + async def format_report(self, state: SparkAnalysisState): + """Format final analysis report.""" + report_prompt = f""" + Create a comprehensive Spark application analysis report: + + Application ID: {state['app_id']} + Analysis Results: {state['analysis_results']} + Recommendations: {state['recommendations']} + + Format as a professional report with: + - Executive Summary + - Key Findings + - Performance Metrics + - Recommendations with Priority + - Next Steps + """ + + report = self.llm.invoke([HumanMessage(content=report_prompt)]) + state["analysis_results"]["final_report"] = report.content + state["current_step"] = "report_completed" + + state["messages"].append(AIMessage(content="Analysis report completed")) + return state + + async def analyze_application(self, app_id: str): + """Run complete analysis workflow.""" + initial_state = { + "messages": [HumanMessage(content=f"Starting analysis of {app_id}")], + "app_id": app_id, + "analysis_results": {}, + "recommendations": [], + "current_step": "starting" + } + + # Execute the workflow + result = await self.graph.ainvoke(initial_state) + return result + +# Usage +async def analyze_spark_app(): + workflow = SparkAnalysisWorkflow("http://localhost:18888") + result = await workflow.analyze_application("spark-application-12345") + + print("Analysis Complete!") + print("Final Report:") + print(result["analysis_results"]["final_report"]) + +asyncio.run(analyze_spark_app()) +``` + +### 2. Multi-Agent Spark Monitoring System + +```python +from langgraph.graph import StateGraph, END +from typing import Dict, List +import asyncio + +class MonitoringState: + """State for monitoring workflow.""" + applications: List[Dict] + alerts: List[Dict] + analysis_results: Dict[str, Any] + current_time: str + monitoring_enabled: bool + +class SparkMonitoringSystem: + def __init__(self, mcp_server_url: str): + self.mcp_url = mcp_server_url + self.llm = ChatOpenAI(model="gpt-4", temperature=0) + self.monitoring_graph = self._build_monitoring_graph() + + def _build_monitoring_graph(self): + """Build monitoring workflow graph.""" + workflow = StateGraph(MonitoringState) + + # Monitoring agents + workflow.add_node("discovery_agent", self.discovery_agent) + workflow.add_node("health_agent", self.health_agent) + workflow.add_node("performance_agent", self.performance_agent) + workflow.add_node("alert_agent", self.alert_agent) + workflow.add_node("report_agent", self.report_agent) + + # Workflow + workflow.add_edge("discovery_agent", "health_agent") + workflow.add_edge("health_agent", "performance_agent") + workflow.add_edge("performance_agent", "alert_agent") + workflow.add_edge("alert_agent", "report_agent") + workflow.add_edge("report_agent", END) + + workflow.set_entry_point("discovery_agent") + return workflow.compile() + + async def discovery_agent(self, state: MonitoringState): + """Discover current Spark applications.""" + async with ClientSession(self.mcp_url) as session: + apps_result = await session.call_tool("list_applications") + state["applications"] = apps_result.get("applications", []) + + print(f"๐Ÿ” Discovered {len(state['applications'])} applications") + return state + + async def health_agent(self, state: MonitoringState): + """Check health status of applications.""" + health_results = {} + + async with ClientSession(self.mcp_url) as session: + for app in state["applications"]: + app_id = app["id"] + try: + app_info = await session.call_tool("get_application_info", {"app_id": app_id}) + + # Simple health check + attempts = app_info.get("attempts", []) + is_healthy = True + health_issues = [] + + if attempts: + attempt = attempts[0] + if not attempt.get("completed", True): + is_healthy = False + health_issues.append("Application failed") + + duration = app_info.get("duration", 0) + if duration > 7200000: # 2 hours + is_healthy = False + health_issues.append("Long running application") + + health_results[app_id] = { + "healthy": is_healthy, + "issues": health_issues, + "app_info": app_info + } + + except Exception as e: + health_results[app_id] = { + "healthy": False, + "issues": [f"Health check failed: {e}"], + "app_info": {} + } + + state["analysis_results"]["health"] = health_results + unhealthy_count = sum(1 for h in health_results.values() if not h["healthy"]) + print(f"๐Ÿฅ Health check complete: {unhealthy_count} unhealthy applications") + return state + + async def performance_agent(self, state: MonitoringState): + """Analyze performance of applications.""" + performance_results = {} + + async with ClientSession(self.mcp_url) as session: + for app in state["applications"]: + app_id = app["id"] + try: + # Get performance bottlenecks + bottlenecks = await session.call_tool("get_job_bottlenecks", {"spark_id": app_id}) + + # Analyze with LLM + perf_prompt = f""" + Quickly assess the performance of Spark application {app_id}: + + Bottlenecks: {bottlenecks} + + Provide: + - Performance score (1-10) + - Key issue (if any) + - Severity (low/medium/high) + """ + + analysis = self.llm.invoke([HumanMessage(content=perf_prompt)]) + performance_results[app_id] = { + "bottlenecks": bottlenecks, + "analysis": analysis.content + } + + except Exception as e: + performance_results[app_id] = { + "error": str(e), + "analysis": "Performance analysis failed" + } + + state["analysis_results"]["performance"] = performance_results + print(f"โšก Performance analysis complete for {len(performance_results)} applications") + return state + + async def alert_agent(self, state: MonitoringState): + """Generate alerts based on health and performance.""" + alerts = [] + + health_results = state["analysis_results"].get("health", {}) + performance_results = state["analysis_results"].get("performance", {}) + + for app_id in state["applications"]: + app_id_str = app_id["id"] + + # Health-based alerts + health = health_results.get(app_id_str, {}) + if not health.get("healthy", True): + alerts.append({ + "type": "health", + "app_id": app_id_str, + "severity": "high", + "message": f"Health issues: {', '.join(health.get('issues', []))}", + "timestamp": state.get("current_time", "") + }) + + # Performance-based alerts + perf = performance_results.get(app_id_str, {}) + if "high" in perf.get("analysis", "").lower(): + alerts.append({ + "type": "performance", + "app_id": app_id_str, + "severity": "medium", + "message": "Performance degradation detected", + "timestamp": state.get("current_time", "") + }) + + state["alerts"] = alerts + print(f"๐Ÿšจ Generated {len(alerts)} alerts") + return state + + async def report_agent(self, state: MonitoringState): + """Generate monitoring report.""" + total_apps = len(state["applications"]) + total_alerts = len(state["alerts"]) + + # Generate summary report + report_prompt = f""" + Create a monitoring summary report: + + Total Applications: {total_apps} + Total Alerts: {total_alerts} + Health Results: {state['analysis_results'].get('health', {})} + Performance Results: {state['analysis_results'].get('performance', {})} + Alerts: {state['alerts']} + + Provide: + - Executive summary + - Key issues requiring attention + - Overall system health score + - Recommended actions + """ + + report = self.llm.invoke([HumanMessage(content=report_prompt)]) + state["analysis_results"]["monitoring_report"] = report.content + + print("๐Ÿ“Š Monitoring report generated") + return state + + async def run_monitoring_cycle(self): + """Run one complete monitoring cycle.""" + from datetime import datetime + + initial_state = { + "applications": [], + "alerts": [], + "analysis_results": {}, + "current_time": datetime.now().isoformat(), + "monitoring_enabled": True + } + + result = await self.monitoring_graph.ainvoke(initial_state) + return result + + async def continuous_monitoring(self, interval_minutes: int = 5): + """Run continuous monitoring.""" + while True: + try: + print(f"\n{'='*50}") + print(f"๐Ÿ”„ Starting monitoring cycle at {datetime.now()}") + + result = await self.run_monitoring_cycle() + + # Print summary + print(f"๐Ÿ“‹ Monitoring Summary:") + print(f" Applications: {len(result['applications'])}") + print(f" Alerts: {len(result['alerts'])}") + + if result["alerts"]: + print("๐Ÿšจ Active Alerts:") + for alert in result["alerts"]: + print(f" - {alert['app_id']}: {alert['message']}") + + print(f"\n๐Ÿ“Š Full Report:") + print(result["analysis_results"]["monitoring_report"]) + + # Wait for next cycle + await asyncio.sleep(interval_minutes * 60) + + except Exception as e: + print(f"โŒ Monitoring error: {e}") + await asyncio.sleep(60) # Wait before retry + +# Usage +async def start_monitoring(): + monitor = SparkMonitoringSystem("http://localhost:18888") + await monitor.continuous_monitoring(interval_minutes=5) + +# Run monitoring +asyncio.run(start_monitoring()) +``` + +### 3. Spark Optimization Workflow + +```python +class OptimizationState: + """State for optimization workflow.""" + target_app_id: str + baseline_metrics: Dict + optimization_opportunities: List[Dict] + proposed_changes: List[Dict] + expected_improvements: Dict + implementation_plan: List[str] + +class SparkOptimizationWorkflow: + def __init__(self, mcp_server_url: str): + self.mcp_url = mcp_server_url + self.llm = ChatOpenAI(model="gpt-4", temperature=0) + self.graph = self._build_optimization_graph() + + def _build_optimization_graph(self): + """Build optimization workflow.""" + workflow = StateGraph(OptimizationState) + + workflow.add_node("baseline_analysis", self.baseline_analysis) + workflow.add_node("identify_opportunities", self.identify_opportunities) + workflow.add_node("propose_changes", self.propose_changes) + workflow.add_node("estimate_impact", self.estimate_impact) + workflow.add_node("create_implementation_plan", self.create_implementation_plan) + + workflow.add_edge("baseline_analysis", "identify_opportunities") + workflow.add_edge("identify_opportunities", "propose_changes") + workflow.add_edge("propose_changes", "estimate_impact") + workflow.add_edge("estimate_impact", "create_implementation_plan") + workflow.add_edge("create_implementation_plan", END) + + workflow.set_entry_point("baseline_analysis") + return workflow.compile() + + async def baseline_analysis(self, state: OptimizationState): + """Establish baseline metrics.""" + async with ClientSession(self.mcp_url) as session: + app_info = await session.call_tool("get_application_info", {"app_id": state["target_app_id"]}) + bottlenecks = await session.call_tool("get_job_bottlenecks", {"spark_id": state["target_app_id"]}) + executor_summary = await session.call_tool("get_executor_summary", {"spark_id": state["target_app_id"]}) + + state["baseline_metrics"] = { + "app_info": app_info, + "bottlenecks": bottlenecks, + "executor_summary": executor_summary, + "duration": app_info.get("duration", 0), + "resource_usage": executor_summary + } + + print(f"๐Ÿ“Š Baseline analysis complete for {state['target_app_id']}") + return state + + async def identify_opportunities(self, state: OptimizationState): + """Identify optimization opportunities.""" + opportunities_prompt = f""" + Identify optimization opportunities for this Spark application: + + Baseline Metrics: {state['baseline_metrics']} + + Focus on: + 1. Configuration optimizations + 2. Resource allocation improvements + 3. Algorithm/approach changes + 4. Infrastructure optimizations + + Rank opportunities by potential impact. + """ + + analysis = self.llm.invoke([HumanMessage(content=opportunities_prompt)]) + + # Parse opportunities (simplified) + opportunities = [ + {"type": "configuration", "description": "Optimize executor memory", "impact": "high"}, + {"type": "resource", "description": "Adjust parallelism", "impact": "medium"}, + {"type": "algorithm", "description": "Enable adaptive query execution", "impact": "high"} + ] + + state["optimization_opportunities"] = opportunities + print(f"๐ŸŽฏ Identified {len(opportunities)} optimization opportunities") + return state + + async def propose_changes(self, state: OptimizationState): + """Propose specific configuration changes.""" + changes_prompt = f""" + Based on these optimization opportunities, propose specific configuration changes: + + Opportunities: {state['optimization_opportunities']} + Current Configuration: {state['baseline_metrics']['app_info']} + + Provide specific Spark configuration parameters and values. + """ + + analysis = self.llm.invoke([HumanMessage(content=changes_prompt)]) + + # Example proposed changes + proposed_changes = [ + { + "parameter": "spark.executor.memory", + "current_value": "2g", + "proposed_value": "4g", + "rationale": "Reduce memory spilling" + }, + { + "parameter": "spark.sql.adaptive.enabled", + "current_value": "false", + "proposed_value": "true", + "rationale": "Enable adaptive query execution" + } + ] + + state["proposed_changes"] = proposed_changes + print(f"โš™๏ธ Proposed {len(proposed_changes)} configuration changes") + return state + + async def estimate_impact(self, state: OptimizationState): + """Estimate impact of proposed changes.""" + impact_prompt = f""" + Estimate the performance impact of these proposed changes: + + Baseline Duration: {state['baseline_metrics']['duration']} ms + Proposed Changes: {state['proposed_changes']} + Current Bottlenecks: {state['baseline_metrics']['bottlenecks']} + + Estimate: + 1. Expected duration reduction (%) + 2. Resource efficiency improvements + 3. Risk factors + 4. Implementation complexity + """ + + analysis = self.llm.invoke([HumanMessage(content=impact_prompt)]) + + state["expected_improvements"] = { + "duration_reduction_percent": 25, + "resource_efficiency_improvement": "15% better CPU utilization", + "risk_level": "low", + "implementation_complexity": "medium" + } + + print("๐Ÿ“ˆ Impact estimation complete") + return state + + async def create_implementation_plan(self, state: OptimizationState): + """Create step-by-step implementation plan.""" + plan_prompt = f""" + Create a detailed implementation plan for these optimizations: + + Proposed Changes: {state['proposed_changes']} + Expected Impact: {state['expected_improvements']} + + Include: + 1. Step-by-step implementation + 2. Testing strategy + 3. Rollback plan + 4. Monitoring approach + """ + + analysis = self.llm.invoke([HumanMessage(content=plan_prompt)]) + + implementation_plan = [ + "1. Create test environment with proposed configurations", + "2. Run validation tests with sample data", + "3. Monitor performance metrics during test runs", + "4. Compare results with baseline", + "5. Implement in production with gradual rollout", + "6. Monitor production performance", + "7. Document learnings and update optimization playbook" + ] + + state["implementation_plan"] = implementation_plan + print("๐Ÿ“‹ Implementation plan created") + return state + + async def optimize_application(self, app_id: str): + """Run complete optimization workflow.""" + initial_state = { + "target_app_id": app_id, + "baseline_metrics": {}, + "optimization_opportunities": [], + "proposed_changes": [], + "expected_improvements": {}, + "implementation_plan": [] + } + + result = await self.graph.ainvoke(initial_state) + return result + +# Usage +async def optimize_spark_app(): + optimizer = SparkOptimizationWorkflow("http://localhost:18888") + result = await optimizer.optimize_application("spark-application-12345") + + print("\n๐ŸŽฏ Optimization Plan Complete!") + print(f"Proposed Changes: {len(result['proposed_changes'])}") + print(f"Expected Improvements: {result['expected_improvements']}") + print("\nImplementation Plan:") + for step in result['implementation_plan']: + print(f" {step}") + +asyncio.run(optimize_spark_app()) +``` + +## Configuration and Best Practices + +### Graph Visualization + +```python +from langgraph.graph import StateGraph +import matplotlib.pyplot as plt + +# Visualize workflow graphs +def visualize_workflow(graph): + """Create visual representation of the workflow.""" + # Implementation would create workflow diagrams + pass +``` + +### Error Handling and Resilience + +```python +class RobustSparkWorkflow: + def __init__(self, mcp_server_url: str): + self.mcp_url = mcp_server_url + self.max_retries = 3 + self.retry_delay = 5 + + async def robust_mcp_call(self, tool_name: str, parameters: dict): + """MCP call with retry logic and error handling.""" + for attempt in range(self.max_retries): + try: + async with ClientSession(self.mcp_url) as session: + return await session.call_tool(tool_name, parameters) + except Exception as e: + if attempt == self.max_retries - 1: + raise + await asyncio.sleep(self.retry_delay) + + return None +``` + +## Advanced Examples + +The `/examples/langgraph/` directory contains more sophisticated examples: +- Multi-tenant Spark monitoring across different environments +- Automated performance regression detection pipelines +- Intelligent resource scaling recommendations +- Integration with CI/CD for Spark application optimization \ No newline at end of file diff --git a/examples/integrations/llamaindex.md b/examples/integrations/llamaindex.md new file mode 100644 index 0000000..c9f344f --- /dev/null +++ b/examples/integrations/llamaindex.md @@ -0,0 +1,529 @@ +# LlamaIndex Integration + +This guide shows how to integrate the Spark History Server MCP with LlamaIndex to build intelligent Spark job analysis and retrieval systems. + +## Installation + +```bash +pip install llama-index llama-index-tools-requests +# or +uv add llama-index llama-index-tools-requests +``` + +## Basic Integration + +### 1. MCP Tool Integration with LlamaIndex + +```python +from llama_index.core.agent import ReActAgent +from llama_index.core.tools import FunctionTool +from llama_index.llms.openai import OpenAI +import asyncio +import aiohttp + +class SparkMCPTools: + def __init__(self, mcp_server_url: str): + self.mcp_url = mcp_server_url + + async def _call_mcp_tool(self, tool_name: str, parameters: dict = None): + """Call MCP tool via HTTP API.""" + async with aiohttp.ClientSession() as session: + payload = { + "tool": tool_name, + "parameters": parameters or {} + } + async with session.post(f"{self.mcp_url}/tools", json=payload) as response: + return await response.json() + + def get_application_info(self, app_id: str) -> str: + """Get detailed information about a Spark application.""" + async def _get_info(): + result = await self._call_mcp_tool("get_application_info", {"app_id": app_id}) + return str(result) + + return asyncio.run(_get_info()) + + def list_applications(self) -> str: + """List all Spark applications.""" + async def _list_apps(): + result = await self._call_mcp_tool("list_applications") + return str(result) + + return asyncio.run(_list_apps()) + + def compare_job_performance(self, spark_id1: str, spark_id2: str) -> str: + """Compare performance between two Spark applications.""" + async def _compare(): + result = await self._call_mcp_tool("compare_job_performance", { + "spark_id1": spark_id1, + "spark_id2": spark_id2 + }) + return str(result) + + return asyncio.run(_compare()) + + def get_job_bottlenecks(self, spark_id: str) -> str: + """Analyze job bottlenecks and performance issues.""" + async def _analyze(): + result = await self._call_mcp_tool("get_job_bottlenecks", {"spark_id": spark_id}) + return str(result) + + return asyncio.run(_analyze()) + +# Create LlamaIndex tools from MCP tools +def create_spark_tools(mcp_server_url: str): + spark_tools = SparkMCPTools(mcp_server_url) + + tools = [ + FunctionTool.from_defaults( + fn=spark_tools.get_application_info, + name="get_application_info", + description="Get detailed information about a Spark application by app_id" + ), + FunctionTool.from_defaults( + fn=spark_tools.list_applications, + name="list_applications", + description="List all available Spark applications" + ), + FunctionTool.from_defaults( + fn=spark_tools.compare_job_performance, + name="compare_job_performance", + description="Compare performance metrics between two Spark applications" + ), + FunctionTool.from_defaults( + fn=spark_tools.get_job_bottlenecks, + name="get_job_bottlenecks", + description="Analyze performance bottlenecks for a Spark application" + ), + ] + + return tools + +# Create the agent +llm = OpenAI(model="gpt-4", temperature=0) +tools = create_spark_tools("http://localhost:18888") + +agent = ReActAgent.from_tools( + tools, + llm=llm, + verbose=True, + system_prompt=""" + You are a Spark performance analysis expert. You have access to tools that can: + - List and retrieve Spark application details + - Compare performance between different jobs + - Analyze bottlenecks and performance issues + + Always provide actionable insights and specific recommendations. + When analyzing performance issues, look for patterns in resource usage, + stage execution times, and configuration differences. + """ +) + +# Use the agent +response = agent.chat("Analyze the performance of application spark-12345 and suggest optimizations") +print(response) +``` + +### 2. Building a Spark Knowledge Index + +```python +from llama_index.core import VectorStoreIndex, Document, Settings +from llama_index.core.node_parser import SentenceSplitter +from llama_index.embeddings.openai import OpenAIEmbedding +from llama_index.core.storage.storage_context import StorageContext +from llama_index.vector_stores.faiss import FaissVectorStore +import faiss + +class SparkKnowledgeIndex: + def __init__(self, mcp_server_url: str): + self.mcp_url = mcp_server_url + self.index = None + + # Configure LlamaIndex settings + Settings.embed_model = OpenAIEmbedding() + Settings.node_parser = SentenceSplitter(chunk_size=512, chunk_overlap=50) + + async def build_index(self): + """Build knowledge index from Spark application data.""" + documents = [] + spark_tools = SparkMCPTools(self.mcp_url) + + # Get all applications + apps_result = await spark_tools._call_mcp_tool("list_applications") + applications = apps_result.get('applications', []) + + for app in applications: + app_id = app['id'] + + # Get detailed application info + app_info = await spark_tools._call_mcp_tool("get_application_info", {"app_id": app_id}) + + # Get performance analysis + try: + bottlenecks = await spark_tools._call_mcp_tool("get_job_bottlenecks", {"spark_id": app_id}) + executor_summary = await spark_tools._call_mcp_tool("get_executor_summary", {"spark_id": app_id}) + except: + bottlenecks = {} + executor_summary = {} + + # Create comprehensive document + doc_content = f""" + Application ID: {app_id} + Application Name: {app_info.get('name', 'Unknown')} + Status: {app_info.get('attempts', [{}])[0].get('completed', 'Unknown')} + Duration: {app_info.get('duration', 'Unknown')} ms + + Application Details: + {app_info} + + Performance Analysis: + {bottlenecks} + + Executor Summary: + {executor_summary} + """ + + documents.append(Document( + text=doc_content, + metadata={ + "app_id": app_id, + "app_name": app_info.get('name', 'Unknown'), + "status": app_info.get('attempts', [{}])[0].get('completed', 'Unknown'), + "type": "spark_application" + } + )) + + # Create FAISS vector store + d = 1536 # OpenAI embedding dimension + faiss_index = faiss.IndexFlatL2(d) + vector_store = FaissVectorStore(faiss_index=faiss_index) + storage_context = StorageContext.from_defaults(vector_store=vector_store) + + # Build the index + self.index = VectorStoreIndex.from_documents( + documents, + storage_context=storage_context + ) + + return self.index + + def query(self, question: str, similarity_top_k: int = 5): + """Query the knowledge index.""" + if not self.index: + raise ValueError("Index not built. Call build_index() first.") + + query_engine = self.index.as_query_engine( + similarity_top_k=similarity_top_k, + response_mode="tree_summarize" + ) + + return query_engine.query(question) + +# Usage +async def main(): + kb = SparkKnowledgeIndex("http://localhost:18888") + await kb.build_index() + + # Query the knowledge base + response = kb.query("What are the most common performance bottlenecks in failed Spark jobs?") + print(response) + + response = kb.query("Show me applications that had memory-related issues") + print(response) + +asyncio.run(main()) +``` + +### 3. Advanced RAG with Spark Metrics + +```python +from llama_index.core.retrievers import VectorIndexRetriever +from llama_index.core.query_engine import RetrieverQueryEngine +from llama_index.core.postprocessor import SimilarityPostprocessor, KeywordNodePostprocessor + +class SparkRAGSystem: + def __init__(self, mcp_server_url: str): + self.mcp_url = mcp_server_url + self.index = None + + async def setup_advanced_rag(self): + """Setup advanced RAG system with custom retrievers and post-processors.""" + # Build knowledge index + kb = SparkKnowledgeIndex(self.mcp_url) + self.index = await kb.build_index() + + # Custom retriever with higher recall + retriever = VectorIndexRetriever( + index=self.index, + similarity_top_k=10, + ) + + # Post-processors for better relevance + postprocessors = [ + KeywordNodePostprocessor( + keywords=["error", "failure", "bottleneck", "performance", "memory", "cpu"], + exclude_keywords=["success", "completed"] + ), + SimilarityPostprocessor(similarity_cutoff=0.7) + ] + + # Create query engine + self.query_engine = RetrieverQueryEngine( + retriever=retriever, + node_postprocessors=postprocessors, + response_mode="tree_summarize" + ) + + async def analyze_with_context(self, app_id: str): + """Analyze application with historical context.""" + if not self.query_engine: + await self.setup_advanced_rag() + + # Get current app details + spark_tools = SparkMCPTools(self.mcp_url) + current_app = await spark_tools._call_mcp_tool("get_application_info", {"app_id": app_id}) + + # Query for similar issues + query = f""" + Find similar Spark applications that had comparable issues to this one: + + Current Application: {app_id} + Status: {current_app.get('attempts', [{}])[0].get('completed', 'Unknown')} + Duration: {current_app.get('duration', 'Unknown')} + + Look for patterns in: + - Similar execution times + - Memory usage patterns + - Common failure modes + - Configuration similarities + """ + + similar_cases = self.query_engine.query(query) + + return { + "current_application": current_app, + "similar_cases": similar_cases, + "recommendations": self._generate_recommendations(current_app, similar_cases) + } + + def _generate_recommendations(self, current_app, similar_cases): + """Generate recommendations based on historical patterns.""" + # This would use LLM to analyze patterns and generate recommendations + llm = OpenAI(model="gpt-4") + + prompt = f""" + Based on the current application and similar historical cases, provide recommendations: + + Current Application: {current_app} + Similar Historical Cases: {similar_cases} + + Provide: + 1. Root cause analysis + 2. Specific configuration changes + 3. Resource optimization suggestions + 4. Monitoring recommendations + """ + + return llm.complete(prompt) + +# Usage +async def analyze_application(): + rag_system = SparkRAGSystem("http://localhost:18888") + analysis = await rag_system.analyze_with_context("spark-application-12345") + + print("Analysis Results:") + print(f"Current App: {analysis['current_application']}") + print(f"Similar Cases: {analysis['similar_cases']}") + print(f"Recommendations: {analysis['recommendations']}") + +asyncio.run(analyze_application()) +``` + +### 4. Real-time Spark Monitoring with LlamaIndex + +```python +from llama_index.core.chat_engine import SimpleChatEngine +from llama_index.core.memory import ChatMemoryBuffer +import asyncio +import schedule +import time + +class SparkMonitoringChat: + def __init__(self, mcp_server_url: str): + self.mcp_url = mcp_server_url + self.chat_engine = None + self.memory = ChatMemoryBuffer.from_defaults(token_limit=3000) + + async def setup_monitoring_chat(self): + """Setup chat engine for interactive monitoring.""" + # Build knowledge base + kb = SparkKnowledgeIndex(self.mcp_url) + index = await kb.build_index() + + # Create chat engine with memory + self.chat_engine = SimpleChatEngine.from_defaults( + llm=OpenAI(model="gpt-4", temperature=0), + memory=self.memory, + system_prompt=""" + You are a Spark monitoring assistant. You help users understand: + - Current application status and performance + - Historical patterns and trends + - Performance optimization opportunities + - Failure predictions and prevention + + Always provide actionable insights and be proactive about potential issues. + """ + ) + + async def monitor_and_alert(self): + """Continuous monitoring with intelligent alerts.""" + spark_tools = SparkMCPTools(self.mcp_url) + + while True: + try: + # Get current applications + apps = await spark_tools._call_mcp_tool("list_applications") + + for app in apps.get('applications', []): + app_id = app['id'] + + # Analyze current state + analysis = await self._analyze_current_state(app_id) + + if analysis['needs_attention']: + alert_message = f""" + ๐Ÿšจ ALERT: Application {app_id} needs attention! + + Issue: {analysis['issue']} + Severity: {analysis['severity']} + Recommendation: {analysis['recommendation']} + """ + + print(alert_message) + + # Add to chat memory for context + self.memory.put(f"ALERT: {alert_message}") + + await asyncio.sleep(300) # Check every 5 minutes + + except Exception as e: + print(f"Monitoring error: {e}") + await asyncio.sleep(60) + + async def _analyze_current_state(self, app_id: str): + """Analyze current application state.""" + spark_tools = SparkMCPTools(self.mcp_url) + + # Get app info and bottlenecks + app_info = await spark_tools._call_mcp_tool("get_application_info", {"app_id": app_id}) + + try: + bottlenecks = await spark_tools._call_mcp_tool("get_job_bottlenecks", {"spark_id": app_id}) + except: + bottlenecks = {} + + # Simple heuristics for demonstration + needs_attention = False + issue = None + severity = "low" + recommendation = "" + + # Check duration + duration = app_info.get('duration', 0) + if duration > 3600000: # > 1 hour + needs_attention = True + issue = "Long running application" + severity = "medium" + recommendation = "Check for performance bottlenecks" + + # Check completion status + attempts = app_info.get('attempts', []) + if attempts and not attempts[0].get('completed', True): + needs_attention = True + issue = "Application failed" + severity = "high" + recommendation = "Investigate failure cause" + + return { + 'needs_attention': needs_attention, + 'issue': issue, + 'severity': severity, + 'recommendation': recommendation + } + + async def interactive_chat(self): + """Start interactive chat session.""" + if not self.chat_engine: + await self.setup_monitoring_chat() + + print("Spark Monitoring Chat Started. Type 'quit' to exit.") + + while True: + user_input = input("You: ") + if user_input.lower() == 'quit': + break + + response = self.chat_engine.chat(user_input) + print(f"Assistant: {response}") + +# Usage +async def start_monitoring_system(): + monitor = SparkMonitoringChat("http://localhost:18888") + + # Start background monitoring + monitoring_task = asyncio.create_task(monitor.monitor_and_alert()) + + # Start interactive chat + await monitor.interactive_chat() + + # Cancel monitoring when chat ends + monitoring_task.cancel() + +# Run the monitoring system +asyncio.run(start_monitoring_system()) +``` + +## Configuration Examples + +### Custom Embeddings for Spark Metrics + +```python +from llama_index.embeddings.huggingface import HuggingFaceEmbedding + +# Use specialized embeddings for technical content +Settings.embed_model = HuggingFaceEmbedding( + model_name="sentence-transformers/all-MiniLM-L6-v2" +) +``` + +### Custom Node Parsing for Spark Logs + +```python +from llama_index.core.node_parser import SimpleNodeParser + +class SparkLogNodeParser(SimpleNodeParser): + def get_nodes_from_documents(self, documents): + # Custom parsing logic for Spark application data + nodes = [] + for doc in documents: + # Extract key metrics and create focused nodes + # Implementation would parse Spark-specific structures + pass + return nodes +``` + +## Best Practices + +1. **Index Management**: Regularly rebuild indices with fresh Spark data +2. **Query Optimization**: Use specific keywords related to Spark performance +3. **Memory Management**: Implement proper cleanup for long-running monitoring +4. **Error Handling**: Robust handling of MCP connection issues +5. **Caching**: Cache frequently accessed application data + +## Advanced Examples + +See the `/examples/llamaindex/` directory for more examples including: +- Multi-modal analysis with Spark UI screenshots +- Integration with Spark streaming applications +- Custom evaluation metrics for RAG performance +- Automated performance regression detection \ No newline at end of file From b1c1b761150829d987fcc49102502263d938340f Mon Sep 17 00:00:00 2001 From: vara-bonthu Date: Fri, 27 Jun 2025 16:57:57 -0700 Subject: [PATCH 06/13] ci: establish comprehensive CI/CD and development workflows - Add GitHub Actions CI workflow with Python 3.12/3.13 matrix testing - Configure automated testing, linting, and security checks - Add pull request template with testing checklist and guidelines - Enhance .pre-commit-config.yaml with community-ready hooks - Update Dockerfile with security best practices and multi-stage build - Update uv.lock with latest dependency resolution --- .github/pull_request_template.md | 54 ++++++ .github/workflows/ci.yml | 115 ++++++++++++ .pre-commit-config.yaml | 60 ++++-- Dockerfile | 1 - uv.lock | 306 ++++++++++++++++++++++++++++--- 5 files changed, 502 insertions(+), 34 deletions(-) create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/ci.yml diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..6d1d517 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,54 @@ +# ๐Ÿ”„ Pull Request + +## ๐Ÿ“ Description +Brief description of changes and motivation. + +## ๐ŸŽฏ Type of Change + +- [ ] ๐Ÿ› Bug fix (non-breaking change that fixes an issue) +- [ ] โœจ New feature (non-breaking change that adds functionality) +- [ ] ๐Ÿ’ฅ Breaking change (fix or feature that would cause existing functionality to change) +- [ ] ๐Ÿ“– Documentation update +- [ ] ๐Ÿงช Test improvement +- [ ] ๐Ÿ”ง Refactoring (no functional changes) + +## ๐Ÿงช Testing + +- [ ] โœ… All existing tests pass (`uv run pytest`) +- [ ] ๐Ÿ”ฌ Tested with MCP Inspector +- [ ] ๐Ÿ“Š Tested with sample Spark data +- [ ] ๐Ÿš€ Tested with real Spark History Server (if applicable) + +### ๐Ÿ”ฌ Test Commands Run +```bash +# Example: +# uv run pytest test_tools.py -v +# npx @modelcontextprotocol/inspector uv run main.py +``` + +## ๐Ÿ› ๏ธ New Tools Added (if applicable) + +- **Tool Name**: `new_tool_name` +- **Purpose**: What it does +- **Usage**: Example parameters + +## ๐Ÿ“ธ Screenshots (if applicable) + + +## โœ… Checklist +- [ ] ๐Ÿ” Code follows project style guidelines +- [ ] ๐Ÿงช Added tests for new functionality +- [ ] ๐Ÿ“– Updated documentation (README, TESTING.md, etc.) +- [ ] ๐Ÿ”ง Pre-commit hooks pass +- [ ] ๐Ÿ“ Added entry to CHANGELOG.md (if significant change) + +## ๐Ÿ“š Related Issues + +Fixes #(issue number) +Related to #(issue number) + +## ๐Ÿค” Additional Context + + +--- +**๐ŸŽ‰ Thank you for contributing!** Your effort helps make Spark monitoring more intelligent. \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..8e0f600 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,115 @@ +name: CI + +on: + push: + branches: [ main, develop ] + pull_request: + branches: [ main ] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.12"] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v2 + + - name: Set up Python ${{ matrix.python-version }} + run: uv python install ${{ matrix.python-version }} + + - name: Install dependencies + run: uv sync --group dev + + - name: Lint with ruff + run: uv run ruff check . + + - name: Type check with mypy + run: uv run mypy *.py --ignore-missing-imports + + - name: Test with pytest + run: uv run pytest --cov=. --cov-report=xml --cov-report=term-missing + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + if: success() + + integration: + runs-on: ubuntu-latest + needs: test + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v2 + + - name: Set up Python + run: uv python install 3.12 + + - name: Install dependencies + run: uv sync + + - name: Setup test configuration + run: | + # Ensure config.yaml exists and is properly configured for CI + if [ ! -f config.yaml ]; then + echo "Creating default config.yaml for CI" + cat > config.yaml << EOF + servers: + default: + default: true + url: "http://localhost:18080" + EOF + fi + + - name: Verify test data + run: | + echo "Verifying test data structure..." + ls -la examples/basic/ + ls -la examples/basic/events/ + cat examples/basic/history-server.conf + + - name: Start Spark History Server + run: | + echo "Starting Spark History Server with Docker..." + docker run -d \ + --name spark-history-server \ + -v $(pwd)/examples/basic:/mnt/data \ + -p 18080:18080 \ + docker.io/apache/spark:3.5.5 \ + /opt/java/openjdk/bin/java \ + -cp '/opt/spark/conf:/opt/spark/jars/*' \ + -Xmx1g \ + org.apache.spark.deploy.history.HistoryServer \ + --properties-file /mnt/data/history-server.conf + + - name: Wait for Spark History Server + run: | + timeout 60 bash -c 'until curl -f http://localhost:18080; do sleep 2; done' + + - name: Test MCP Server startup + run: | + # Test import structure + uv run python -c "import app; print('โœ“ App imports successfully')" + uv run python -c "import main; print('โœ“ Main imports successfully')" + + # Test MCP server can start (brief startup test) + timeout 10 uv run python main.py & + SERVER_PID=$! + sleep 5 + kill $SERVER_PID 2>/dev/null || true + echo "โœ“ MCP Server startup test completed" + + - name: Cleanup + if: always() + run: | + echo "Cleaning up Docker containers..." + docker stop spark-history-server 2>/dev/null || true + docker rm spark-history-server 2>/dev/null || true \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 60f9a62..9bdbf39 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,12 +1,50 @@ repos: -- repo: https://github.com/astral-sh/ruff-pre-commit - # Ruff version. - rev: v0.12.0 - hooks: - # Run the linter. - - id: ruff-check - types_or: [ python, pyi ] - args: [ --fix ] - # Run the formatter. - - id: ruff-format - types_or: [ python, pyi ] + # Pre-commit hooks for general file hygiene + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-json + - id: check-toml + - id: check-merge-conflict + - id: check-added-large-files + args: ['--maxkb=1000'] + - id: mixed-line-ending + args: ['--fix=lf'] + + # Python linting and formatting with Ruff + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.12.0 + hooks: + # Run the linter + - id: ruff-check + types_or: [python, pyi] + args: [--fix] + # Run the formatter + - id: ruff-format + types_or: [python, pyi] + + # Type checking with mypy + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.11.2 + hooks: + - id: mypy + additional_dependencies: [types-PyYAML, types-requests] + args: [--ignore-missing-imports] + + # Security scanning + - repo: https://github.com/PyCQA/bandit + rev: 1.7.10 + hooks: + - id: bandit + args: [-r, ., -f, json, -o, bandit-report.json] + exclude: ^tests/ + + # Documentation and markdown + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.42.0 + hooks: + - id: markdownlint + args: [--disable, MD013, MD033, MD041] # Disable line length, HTML, first line rules diff --git a/Dockerfile b/Dockerfile index f22dd28..d5e9e23 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,6 @@ RUN groupadd -r app && useradd -r -g app app COPY --from=builder --chown=app:app /app /app WORKDIR /app -WORKDIR /app ENV PATH="/app/.venv/bin:$PATH" diff --git a/uv.lock b/uv.lock index 579c4e0..ea1678f 100644 --- a/uv.lock +++ b/uv.lock @@ -25,6 +25,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, ] +[[package]] +name = "black" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload-time = "2025-01-29T05:37:16.707Z" }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload-time = "2025-01-29T05:37:18.273Z" }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload-time = "2025-01-29T04:18:33.823Z" }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860, upload-time = "2025-01-29T04:19:12.944Z" }, + { url = "https://files.pythonhosted.org/packages/98/87/0edf98916640efa5d0696e1abb0a8357b52e69e82322628f25bf14d263d1/black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", size = 1650673, upload-time = "2025-01-29T05:37:20.574Z" }, + { url = "https://files.pythonhosted.org/packages/52/e5/f7bf17207cf87fa6e9b676576749c6b6ed0d70f179a3d812c997870291c3/black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", size = 1453190, upload-time = "2025-01-29T05:37:22.106Z" }, + { url = "https://files.pythonhosted.org/packages/e3/ee/adda3d46d4a9120772fae6de454c8495603c37c4c3b9c60f25b1ab6401fe/black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", size = 1782926, upload-time = "2025-01-29T04:18:58.564Z" }, + { url = "https://files.pythonhosted.org/packages/cc/64/94eb5f45dcb997d2082f097a3944cfc7fe87e071907f677e80788a2d7b7a/black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", size = 1442613, upload-time = "2025-01-29T04:19:27.63Z" }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload-time = "2025-01-29T04:15:38.082Z" }, +] + [[package]] name = "certifi" version = "2025.6.15" @@ -34,6 +58,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057", size = 157650, upload-time = "2025-06-15T02:45:49.977Z" }, ] +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, +] + [[package]] name = "charset-normalizer" version = "3.4.2" @@ -90,6 +123,66 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] +[[package]] +name = "coverage" +version = "7.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/e0/98670a80884f64578f0c22cd70c5e81a6e07b08167721c7487b4d70a7ca0/coverage-7.9.1.tar.gz", hash = "sha256:6cf43c78c4282708a28e466316935ec7489a9c487518a77fa68f716c67909cec", size = 813650, upload-time = "2025-06-13T13:02:28.627Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/d9/7f66eb0a8f2fce222de7bdc2046ec41cb31fe33fb55a330037833fb88afc/coverage-7.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a8de12b4b87c20de895f10567639c0797b621b22897b0af3ce4b4e204a743626", size = 212336, upload-time = "2025-06-13T13:01:10.909Z" }, + { url = "https://files.pythonhosted.org/packages/20/20/e07cb920ef3addf20f052ee3d54906e57407b6aeee3227a9c91eea38a665/coverage-7.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5add197315a054e92cee1b5f686a2bcba60c4c3e66ee3de77ace6c867bdee7cb", size = 212571, upload-time = "2025-06-13T13:01:12.518Z" }, + { url = "https://files.pythonhosted.org/packages/78/f8/96f155de7e9e248ca9c8ff1a40a521d944ba48bec65352da9be2463745bf/coverage-7.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:600a1d4106fe66f41e5d0136dfbc68fe7200a5cbe85610ddf094f8f22e1b0300", size = 246377, upload-time = "2025-06-13T13:01:14.87Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cf/1d783bd05b7bca5c10ded5f946068909372e94615a4416afadfe3f63492d/coverage-7.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a876e4c3e5a2a1715a6608906aa5a2e0475b9c0f68343c2ada98110512ab1d8", size = 243394, upload-time = "2025-06-13T13:01:16.23Z" }, + { url = "https://files.pythonhosted.org/packages/02/dd/e7b20afd35b0a1abea09fb3998e1abc9f9bd953bee548f235aebd2b11401/coverage-7.9.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81f34346dd63010453922c8e628a52ea2d2ccd73cb2487f7700ac531b247c8a5", size = 245586, upload-time = "2025-06-13T13:01:17.532Z" }, + { url = "https://files.pythonhosted.org/packages/4e/38/b30b0006fea9d617d1cb8e43b1bc9a96af11eff42b87eb8c716cf4d37469/coverage-7.9.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:888f8eee13f2377ce86d44f338968eedec3291876b0b8a7289247ba52cb984cd", size = 245396, upload-time = "2025-06-13T13:01:19.164Z" }, + { url = "https://files.pythonhosted.org/packages/31/e4/4d8ec1dc826e16791f3daf1b50943e8e7e1eb70e8efa7abb03936ff48418/coverage-7.9.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9969ef1e69b8c8e1e70d591f91bbc37fc9a3621e447525d1602801a24ceda898", size = 243577, upload-time = "2025-06-13T13:01:22.433Z" }, + { url = "https://files.pythonhosted.org/packages/25/f4/b0e96c5c38e6e40ef465c4bc7f138863e2909c00e54a331da335faf0d81a/coverage-7.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60c458224331ee3f1a5b472773e4a085cc27a86a0b48205409d364272d67140d", size = 244809, upload-time = "2025-06-13T13:01:24.143Z" }, + { url = "https://files.pythonhosted.org/packages/8a/65/27e0a1fa5e2e5079bdca4521be2f5dabf516f94e29a0defed35ac2382eb2/coverage-7.9.1-cp312-cp312-win32.whl", hash = "sha256:5f646a99a8c2b3ff4c6a6e081f78fad0dde275cd59f8f49dc4eab2e394332e74", size = 214724, upload-time = "2025-06-13T13:01:25.435Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a8/d5b128633fd1a5e0401a4160d02fa15986209a9e47717174f99dc2f7166d/coverage-7.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:30f445f85c353090b83e552dcbbdad3ec84c7967e108c3ae54556ca69955563e", size = 215535, upload-time = "2025-06-13T13:01:27.861Z" }, + { url = "https://files.pythonhosted.org/packages/a3/37/84bba9d2afabc3611f3e4325ee2c6a47cd449b580d4a606b240ce5a6f9bf/coverage-7.9.1-cp312-cp312-win_arm64.whl", hash = "sha256:af41da5dca398d3474129c58cb2b106a5d93bbb196be0d307ac82311ca234342", size = 213904, upload-time = "2025-06-13T13:01:29.202Z" }, + { url = "https://files.pythonhosted.org/packages/d0/a7/a027970c991ca90f24e968999f7d509332daf6b8c3533d68633930aaebac/coverage-7.9.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:31324f18d5969feef7344a932c32428a2d1a3e50b15a6404e97cba1cc9b2c631", size = 212358, upload-time = "2025-06-13T13:01:30.909Z" }, + { url = "https://files.pythonhosted.org/packages/f2/48/6aaed3651ae83b231556750280682528fea8ac7f1232834573472d83e459/coverage-7.9.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0c804506d624e8a20fb3108764c52e0eef664e29d21692afa375e0dd98dc384f", size = 212620, upload-time = "2025-06-13T13:01:32.256Z" }, + { url = "https://files.pythonhosted.org/packages/6c/2a/f4b613f3b44d8b9f144847c89151992b2b6b79cbc506dee89ad0c35f209d/coverage-7.9.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef64c27bc40189f36fcc50c3fb8f16ccda73b6a0b80d9bd6e6ce4cffcd810bbd", size = 245788, upload-time = "2025-06-13T13:01:33.948Z" }, + { url = "https://files.pythonhosted.org/packages/04/d2/de4fdc03af5e4e035ef420ed26a703c6ad3d7a07aff2e959eb84e3b19ca8/coverage-7.9.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4fe2348cc6ec372e25adec0219ee2334a68d2f5222e0cba9c0d613394e12d86", size = 243001, upload-time = "2025-06-13T13:01:35.285Z" }, + { url = "https://files.pythonhosted.org/packages/f5/e8/eed18aa5583b0423ab7f04e34659e51101135c41cd1dcb33ac1d7013a6d6/coverage-7.9.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34ed2186fe52fcc24d4561041979a0dec69adae7bce2ae8d1c49eace13e55c43", size = 244985, upload-time = "2025-06-13T13:01:36.712Z" }, + { url = "https://files.pythonhosted.org/packages/17/f8/ae9e5cce8885728c934eaa58ebfa8281d488ef2afa81c3dbc8ee9e6d80db/coverage-7.9.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:25308bd3d00d5eedd5ae7d4357161f4df743e3c0240fa773ee1b0f75e6c7c0f1", size = 245152, upload-time = "2025-06-13T13:01:39.303Z" }, + { url = "https://files.pythonhosted.org/packages/5a/c8/272c01ae792bb3af9b30fac14d71d63371db227980682836ec388e2c57c0/coverage-7.9.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73e9439310f65d55a5a1e0564b48e34f5369bee943d72c88378f2d576f5a5751", size = 243123, upload-time = "2025-06-13T13:01:40.727Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d0/2819a1e3086143c094ab446e3bdf07138527a7b88cb235c488e78150ba7a/coverage-7.9.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:37ab6be0859141b53aa89412a82454b482c81cf750de4f29223d52268a86de67", size = 244506, upload-time = "2025-06-13T13:01:42.184Z" }, + { url = "https://files.pythonhosted.org/packages/8b/4e/9f6117b89152df7b6112f65c7a4ed1f2f5ec8e60c4be8f351d91e7acc848/coverage-7.9.1-cp313-cp313-win32.whl", hash = "sha256:64bdd969456e2d02a8b08aa047a92d269c7ac1f47e0c977675d550c9a0863643", size = 214766, upload-time = "2025-06-13T13:01:44.482Z" }, + { url = "https://files.pythonhosted.org/packages/27/0f/4b59f7c93b52c2c4ce7387c5a4e135e49891bb3b7408dcc98fe44033bbe0/coverage-7.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:be9e3f68ca9edb897c2184ad0eee815c635565dbe7a0e7e814dc1f7cbab92c0a", size = 215568, upload-time = "2025-06-13T13:01:45.772Z" }, + { url = "https://files.pythonhosted.org/packages/09/1e/9679826336f8c67b9c39a359352882b24a8a7aee48d4c9cad08d38d7510f/coverage-7.9.1-cp313-cp313-win_arm64.whl", hash = "sha256:1c503289ffef1d5105d91bbb4d62cbe4b14bec4d13ca225f9c73cde9bb46207d", size = 213939, upload-time = "2025-06-13T13:01:47.087Z" }, + { url = "https://files.pythonhosted.org/packages/bb/5b/5c6b4e7a407359a2e3b27bf9c8a7b658127975def62077d441b93a30dbe8/coverage-7.9.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0b3496922cb5f4215bf5caaef4cf12364a26b0be82e9ed6d050f3352cf2d7ef0", size = 213079, upload-time = "2025-06-13T13:01:48.554Z" }, + { url = "https://files.pythonhosted.org/packages/a2/22/1e2e07279fd2fd97ae26c01cc2186e2258850e9ec125ae87184225662e89/coverage-7.9.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9565c3ab1c93310569ec0d86b017f128f027cab0b622b7af288696d7ed43a16d", size = 213299, upload-time = "2025-06-13T13:01:49.997Z" }, + { url = "https://files.pythonhosted.org/packages/14/c0/4c5125a4b69d66b8c85986d3321520f628756cf524af810baab0790c7647/coverage-7.9.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2241ad5dbf79ae1d9c08fe52b36d03ca122fb9ac6bca0f34439e99f8327ac89f", size = 256535, upload-time = "2025-06-13T13:01:51.314Z" }, + { url = "https://files.pythonhosted.org/packages/81/8b/e36a04889dda9960be4263e95e777e7b46f1bb4fc32202612c130a20c4da/coverage-7.9.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bb5838701ca68b10ebc0937dbd0eb81974bac54447c55cd58dea5bca8451029", size = 252756, upload-time = "2025-06-13T13:01:54.403Z" }, + { url = "https://files.pythonhosted.org/packages/98/82/be04eff8083a09a4622ecd0e1f31a2c563dbea3ed848069e7b0445043a70/coverage-7.9.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b30a25f814591a8c0c5372c11ac8967f669b97444c47fd794926e175c4047ece", size = 254912, upload-time = "2025-06-13T13:01:56.769Z" }, + { url = "https://files.pythonhosted.org/packages/0f/25/c26610a2c7f018508a5ab958e5b3202d900422cf7cdca7670b6b8ca4e8df/coverage-7.9.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2d04b16a6062516df97969f1ae7efd0de9c31eb6ebdceaa0d213b21c0ca1a683", size = 256144, upload-time = "2025-06-13T13:01:58.19Z" }, + { url = "https://files.pythonhosted.org/packages/c5/8b/fb9425c4684066c79e863f1e6e7ecebb49e3a64d9f7f7860ef1688c56f4a/coverage-7.9.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7931b9e249edefb07cd6ae10c702788546341d5fe44db5b6108a25da4dca513f", size = 254257, upload-time = "2025-06-13T13:01:59.645Z" }, + { url = "https://files.pythonhosted.org/packages/93/df/27b882f54157fc1131e0e215b0da3b8d608d9b8ef79a045280118a8f98fe/coverage-7.9.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:52e92b01041151bf607ee858e5a56c62d4b70f4dac85b8c8cb7fb8a351ab2c10", size = 255094, upload-time = "2025-06-13T13:02:01.37Z" }, + { url = "https://files.pythonhosted.org/packages/41/5f/cad1c3dbed8b3ee9e16fa832afe365b4e3eeab1fb6edb65ebbf745eabc92/coverage-7.9.1-cp313-cp313t-win32.whl", hash = "sha256:684e2110ed84fd1ca5f40e89aa44adf1729dc85444004111aa01866507adf363", size = 215437, upload-time = "2025-06-13T13:02:02.905Z" }, + { url = "https://files.pythonhosted.org/packages/99/4d/fad293bf081c0e43331ca745ff63673badc20afea2104b431cdd8c278b4c/coverage-7.9.1-cp313-cp313t-win_amd64.whl", hash = "sha256:437c576979e4db840539674e68c84b3cda82bc824dd138d56bead1435f1cb5d7", size = 216605, upload-time = "2025-06-13T13:02:05.638Z" }, + { url = "https://files.pythonhosted.org/packages/1f/56/4ee027d5965fc7fc126d7ec1187529cc30cc7d740846e1ecb5e92d31b224/coverage-7.9.1-cp313-cp313t-win_arm64.whl", hash = "sha256:18a0912944d70aaf5f399e350445738a1a20b50fbea788f640751c2ed9208b6c", size = 214392, upload-time = "2025-06-13T13:02:07.642Z" }, + { url = "https://files.pythonhosted.org/packages/08/b8/7ddd1e8ba9701dea08ce22029917140e6f66a859427406579fd8d0ca7274/coverage-7.9.1-py3-none-any.whl", hash = "sha256:66b974b145aa189516b6bf2d8423e888b742517d37872f6ee4c5be0073bd9a3c", size = 204000, upload-time = "2025-06-13T13:02:27.173Z" }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, +] + [[package]] name = "h11" version = "0.16.0" @@ -136,6 +229,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819, upload-time = "2023-12-22T08:01:19.89Z" }, ] +[[package]] +name = "identify" +version = "2.6.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload-time = "2025-05-23T20:37:53.3Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload-time = "2025-05-23T20:37:51.495Z" }, +] + [[package]] name = "idna" version = "3.10" @@ -193,37 +295,56 @@ cli = [ ] [[package]] -name = "mcp-spark-events" -version = "0.1.0" -source = { virtual = "." } -dependencies = [ - { name = "mcp", extra = ["cli"] }, - { name = "pyyaml" }, - { name = "requests" }, +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] -[package.dev-dependencies] -dev = [ - { name = "pytest" }, +[[package]] +name = "mypy" +version = "1.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "typing-extensions" }, ] - -[package.metadata] -requires-dist = [ - { name = "mcp", extras = ["cli"], specifier = ">=1.9.4" }, - { name = "pyyaml", specifier = ">=6.0.2" }, - { name = "requests", specifier = ">=2.32.4" }, +sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747, upload-time = "2025-06-16T16:51:35.145Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d", size = 11066493, upload-time = "2025-06-16T16:47:01.683Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9", size = 10081687, upload-time = "2025-06-16T16:48:19.367Z" }, + { url = "https://files.pythonhosted.org/packages/44/c7/b5cb264c97b86914487d6a24bd8688c0172e37ec0f43e93b9691cae9468b/mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79", size = 11839723, upload-time = "2025-06-16T16:49:20.912Z" }, + { url = "https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15", size = 12722980, upload-time = "2025-06-16T16:37:40.929Z" }, + { url = "https://files.pythonhosted.org/packages/df/f0/2bd41e174b5fd93bc9de9a28e4fb673113633b8a7f3a607fa4a73595e468/mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd", size = 12903328, upload-time = "2025-06-16T16:34:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b", size = 9562321, upload-time = "2025-06-16T16:48:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/28/e3/96964af4a75a949e67df4b95318fe2b7427ac8189bbc3ef28f92a1c5bc56/mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438", size = 11063480, upload-time = "2025-06-16T16:47:56.205Z" }, + { url = "https://files.pythonhosted.org/packages/f5/4d/cd1a42b8e5be278fab7010fb289d9307a63e07153f0ae1510a3d7b703193/mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536", size = 10090538, upload-time = "2025-06-16T16:46:43.92Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/c3c6b4b66374b5f68bab07c8cabd63a049ff69796b844bc759a0ca99bb2a/mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f", size = 11836839, upload-time = "2025-06-16T16:36:28.039Z" }, + { url = "https://files.pythonhosted.org/packages/b4/7e/81ca3b074021ad9775e5cb97ebe0089c0f13684b066a750b7dc208438403/mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359", size = 12715634, upload-time = "2025-06-16T16:50:34.441Z" }, + { url = "https://files.pythonhosted.org/packages/e9/95/bdd40c8be346fa4c70edb4081d727a54d0a05382d84966869738cfa8a497/mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be", size = 12895584, upload-time = "2025-06-16T16:34:54.857Z" }, + { url = "https://files.pythonhosted.org/packages/5a/fd/d486a0827a1c597b3b48b1bdef47228a6e9ee8102ab8c28f944cb83b65dc/mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee", size = 9573886, upload-time = "2025-06-16T16:36:43.589Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d3/53e684e78e07c1a2bf7105715e5edd09ce951fc3f47cf9ed095ec1b7a037/mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37", size = 2265923, upload-time = "2025-06-16T16:48:02.366Z" }, ] -[package.metadata.requires-dev] -dev = [{ name = "pytest", specifier = ">=8.4.1" }] +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] [[package]] -name = "mdurl" -version = "0.1.2" +name = "nodeenv" +version = "1.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, ] [[package]] @@ -235,6 +356,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + [[package]] name = "pluggy" version = "1.6.0" @@ -244,6 +383,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "pre-commit" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, +] + [[package]] name = "pydantic" version = "2.11.7" @@ -340,6 +495,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, ] +[[package]] +name = "pytest-cov" +version = "6.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pluggy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload-time = "2025-06-12T10:47:47.684Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload-time = "2025-06-12T10:47:45.932Z" }, +] + [[package]] name = "python-dotenv" version = "1.1.0" @@ -412,6 +581,31 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload-time = "2025-03-30T14:15:12.283Z" }, ] +[[package]] +name = "ruff" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/97/38/796a101608a90494440856ccfb52b1edae90de0b817e76bfade66b12d320/ruff-0.12.1.tar.gz", hash = "sha256:806bbc17f1104fd57451a98a58df35388ee3ab422e029e8f5cf30aa4af2c138c", size = 4413426, upload-time = "2025-06-26T20:34:14.784Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/bf/3dba52c1d12ab5e78d75bd78ad52fb85a6a1f29cc447c2423037b82bed0d/ruff-0.12.1-py3-none-linux_armv6l.whl", hash = "sha256:6013a46d865111e2edb71ad692fbb8262e6c172587a57c0669332a449384a36b", size = 10305649, upload-time = "2025-06-26T20:33:39.242Z" }, + { url = "https://files.pythonhosted.org/packages/8c/65/dab1ba90269bc8c81ce1d499a6517e28fe6f87b2119ec449257d0983cceb/ruff-0.12.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b3f75a19e03a4b0757d1412edb7f27cffb0c700365e9d6b60bc1b68d35bc89e0", size = 11120201, upload-time = "2025-06-26T20:33:42.207Z" }, + { url = "https://files.pythonhosted.org/packages/3f/3e/2d819ffda01defe857fa2dd4cba4d19109713df4034cc36f06bbf582d62a/ruff-0.12.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9a256522893cb7e92bb1e1153283927f842dea2e48619c803243dccc8437b8be", size = 10466769, upload-time = "2025-06-26T20:33:44.102Z" }, + { url = "https://files.pythonhosted.org/packages/63/37/bde4cf84dbd7821c8de56ec4ccc2816bce8125684f7b9e22fe4ad92364de/ruff-0.12.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:069052605fe74c765a5b4272eb89880e0ff7a31e6c0dbf8767203c1fbd31c7ff", size = 10660902, upload-time = "2025-06-26T20:33:45.98Z" }, + { url = "https://files.pythonhosted.org/packages/0e/3a/390782a9ed1358c95e78ccc745eed1a9d657a537e5c4c4812fce06c8d1a0/ruff-0.12.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a684f125a4fec2d5a6501a466be3841113ba6847827be4573fddf8308b83477d", size = 10167002, upload-time = "2025-06-26T20:33:47.81Z" }, + { url = "https://files.pythonhosted.org/packages/6d/05/f2d4c965009634830e97ffe733201ec59e4addc5b1c0efa035645baa9e5f/ruff-0.12.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdecdef753bf1e95797593007569d8e1697a54fca843d78f6862f7dc279e23bd", size = 11751522, upload-time = "2025-06-26T20:33:49.857Z" }, + { url = "https://files.pythonhosted.org/packages/35/4e/4bfc519b5fcd462233f82fc20ef8b1e5ecce476c283b355af92c0935d5d9/ruff-0.12.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:70d52a058c0e7b88b602f575d23596e89bd7d8196437a4148381a3f73fcd5010", size = 12520264, upload-time = "2025-06-26T20:33:52.199Z" }, + { url = "https://files.pythonhosted.org/packages/85/b2/7756a6925da236b3a31f234b4167397c3e5f91edb861028a631546bad719/ruff-0.12.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84d0a69d1e8d716dfeab22d8d5e7c786b73f2106429a933cee51d7b09f861d4e", size = 12133882, upload-time = "2025-06-26T20:33:54.231Z" }, + { url = "https://files.pythonhosted.org/packages/dd/00/40da9c66d4a4d51291e619be6757fa65c91b92456ff4f01101593f3a1170/ruff-0.12.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cc32e863adcf9e71690248607ccdf25252eeeab5193768e6873b901fd441fed", size = 11608941, upload-time = "2025-06-26T20:33:56.202Z" }, + { url = "https://files.pythonhosted.org/packages/91/e7/f898391cc026a77fbe68dfea5940f8213622474cb848eb30215538a2dadf/ruff-0.12.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd49a4619f90d5afc65cf42e07b6ae98bb454fd5029d03b306bd9e2273d44cc", size = 11602887, upload-time = "2025-06-26T20:33:58.47Z" }, + { url = "https://files.pythonhosted.org/packages/f6/02/0891872fc6aab8678084f4cf8826f85c5d2d24aa9114092139a38123f94b/ruff-0.12.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ed5af6aaaea20710e77698e2055b9ff9b3494891e1b24d26c07055459bb717e9", size = 10521742, upload-time = "2025-06-26T20:34:00.465Z" }, + { url = "https://files.pythonhosted.org/packages/2a/98/d6534322c74a7d47b0f33b036b2498ccac99d8d8c40edadb552c038cecf1/ruff-0.12.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:801d626de15e6bf988fbe7ce59b303a914ff9c616d5866f8c79eb5012720ae13", size = 10149909, upload-time = "2025-06-26T20:34:02.603Z" }, + { url = "https://files.pythonhosted.org/packages/34/5c/9b7ba8c19a31e2b6bd5e31aa1e65b533208a30512f118805371dbbbdf6a9/ruff-0.12.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2be9d32a147f98a1972c1e4df9a6956d612ca5f5578536814372113d09a27a6c", size = 11136005, upload-time = "2025-06-26T20:34:04.723Z" }, + { url = "https://files.pythonhosted.org/packages/dc/34/9bbefa4d0ff2c000e4e533f591499f6b834346025e11da97f4ded21cb23e/ruff-0.12.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:49b7ce354eed2a322fbaea80168c902de9504e6e174fd501e9447cad0232f9e6", size = 11648579, upload-time = "2025-06-26T20:34:06.766Z" }, + { url = "https://files.pythonhosted.org/packages/6f/1c/20cdb593783f8f411839ce749ec9ae9e4298c2b2079b40295c3e6e2089e1/ruff-0.12.1-py3-none-win32.whl", hash = "sha256:d973fa626d4c8267848755bd0414211a456e99e125dcab147f24daa9e991a245", size = 10519495, upload-time = "2025-06-26T20:34:08.718Z" }, + { url = "https://files.pythonhosted.org/packages/cf/56/7158bd8d3cf16394928f47c637d39a7d532268cd45220bdb6cd622985760/ruff-0.12.1-py3-none-win_amd64.whl", hash = "sha256:9e1123b1c033f77bd2590e4c1fe7e8ea72ef990a85d2484351d408224d603013", size = 11547485, upload-time = "2025-06-26T20:34:11.008Z" }, + { url = "https://files.pythonhosted.org/packages/91/d0/6902c0d017259439d6fd2fd9393cea1cfe30169940118b007d5e0ea7e954/ruff-0.12.1-py3-none-win_arm64.whl", hash = "sha256:78ad09a022c64c13cc6077707f036bab0fac8cd7088772dcd1e5be21c5002efc", size = 10691209, upload-time = "2025-06-26T20:34:12.928Z" }, +] + [[package]] name = "shellingham" version = "1.5.4" @@ -430,6 +624,60 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, ] +[[package]] +name = "spark-history-server-mcp" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "mcp", extra = ["cli"] }, + { name = "pydantic" }, + { name = "pyyaml" }, + { name = "requests" }, +] + +[package.optional-dependencies] +dev = [ + { name = "black" }, + { name = "mypy" }, + { name = "pre-commit" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "ruff" }, +] + +[package.dev-dependencies] +dev = [ + { name = "black" }, + { name = "mypy" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "black", marker = "extra == 'dev'", specifier = ">=23.0.0" }, + { name = "mcp", extras = ["cli"], specifier = ">=1.9.4" }, + { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.7.0" }, + { name = "pre-commit", marker = "extra == 'dev'", specifier = ">=3.0.0" }, + { name = "pydantic", specifier = ">=2.0.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.4.1" }, + { name = "pytest-cov", marker = "extra == 'dev'", specifier = ">=4.0.0" }, + { name = "pyyaml", specifier = ">=6.0.2" }, + { name = "requests", specifier = ">=2.32.4" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.1.0" }, +] +provides-extras = ["dev"] + +[package.metadata.requires-dev] +dev = [ + { name = "black", specifier = ">=23.0.0" }, + { name = "mypy", specifier = ">=1.7.0" }, + { name = "pytest", specifier = ">=8.4.1" }, + { name = "pytest-cov", specifier = ">=4.0.0" }, + { name = "ruff", specifier = ">=0.1.0" }, +] + [[package]] name = "sse-starlette" version = "2.3.6" @@ -511,3 +759,17 @@ sdist = { url = "https://files.pythonhosted.org/packages/de/ad/713be230bcda622ea wheels = [ { url = "https://files.pythonhosted.org/packages/6d/0d/8adfeaa62945f90d19ddc461c55f4a50c258af7662d34b6a3d5d1f8646f6/uvicorn-0.34.3-py3-none-any.whl", hash = "sha256:16246631db62bdfbf069b0645177d6e8a77ba950cfedbfd093acef9444e4d885", size = 62431, upload-time = "2025-06-01T07:48:15.664Z" }, ] + +[[package]] +name = "virtualenv" +version = "20.31.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, +] From a350d552ecf7dc8d2ec207bb1f5dc73191538652 Mon Sep 17 00:00:00 2001 From: vara-bonthu Date: Fri, 27 Jun 2025 17:16:11 -0700 Subject: [PATCH 07/13] docs: add work-in-progress note for Kubernetes deployment - Add warning note about container image and Helm registry publishing - Clarify that deployment setup is still being tested --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c8cc5a4..9887b46 100644 --- a/README.md +++ b/README.md @@ -73,15 +73,14 @@ npx @modelcontextprotocol/inspector uv run main.py ## ๐Ÿ“ธ Screenshots -### ๐Ÿ” Get Spark Applications -![Get Applications](screenshots/get-applications.png) -*Browse all available Spark applications with filtering options* +### ๐Ÿ” Get Spark Application +![Get Application](screenshots/get-application.png) ### โšก Job Performance Comparison -![Job Comparison](screenshots/job-comparison.png) +![Job Comparison](screenshots/job-compare.png) *Compare performance metrics between different Spark jobs* +![alt text](job-compare.png) -> ๐Ÿ“ **Note**: Replace placeholder screenshots with actual MCP Inspector screenshots showing the tool execution and results. ## ๐Ÿ› ๏ธ Available Tools @@ -103,6 +102,8 @@ npx @modelcontextprotocol/inspector uv run main.py Deploy using Kubernetes with Helm: +> โš ๏ธ **Work in Progress**: We are still testing and will soon publish the container image and Helm registry to GitHub for easy deployment. + ```bash # ๐Ÿ“ฆ Deploy with Helm helm install spark-history-mcp ./deploy/kubernetes/helm/spark-history-mcp/ From 335461934077953ebdb846c7b6d3d43f5a7a3d8f Mon Sep 17 00:00:00 2001 From: vara-bonthu Date: Fri, 27 Jun 2025 17:16:52 -0700 Subject: [PATCH 08/13] docs: add work-in-progress note and MCP Inspector screenshots - Add warning note about container image and Helm registry publishing - Include MCP Inspector screenshots for get-application and job-compare tools - Update uv.lock with latest dependencies --- screenshots/get-application.png | Bin 0 -> 318708 bytes screenshots/job-compare.png | Bin 0 -> 327098 bytes uv.lock | 92 -------------------------------- 3 files changed, 92 deletions(-) create mode 100644 screenshots/get-application.png create mode 100644 screenshots/job-compare.png diff --git a/screenshots/get-application.png b/screenshots/get-application.png new file mode 100644 index 0000000000000000000000000000000000000000..de22b3b2b5d6d7264bc795bfe42ee4445c8566e7 GIT binary patch literal 318708 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

Mtl0*s}m0wVCm)MkluhAGkU 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�+((1pKAT=B}fD=z}CyxWn6shw1zR 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%0AtKTFR^6Izm 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