Галоўная / Артыкулы / Практычныя прытамулі: Адклёнкае кантролюванне сервернасаго Apache Spark за дапамогай Gemini і MCP

Практычныя прытамулі: Адклёнкае кантролюванне сервернасаго Apache Spark за дапамогай Gemini і MCP

Практычныя прыказкі: адлагоджванне сервернасонаго Apache Spark за дапамою Gemini з MCP: контракты, перакантрольванні і месцы для вставкі коду для команд, якіе выкарыстоўваюць гэты патэрн.

1385 слоў

У гэтым керавану практыкуецца стварэнне шляху ад сыр'ёў да рабочай системы для: дэбагавання Serverless Apache Spark за дапамою Gemini і MCP. Акцэнт ставіцца на практычныя крокі, чыстае перакананне і код, які можна проста дадзіць у репазітарый, не прабуючы здогадвацца пра мету. У стадіўцы «Аптаварыс» неабходна праказаць вхідныя даны, адпаведальнага за крок і критэрыя завершэння прычымоў перад зменай коду. Аператары должны магчымае перадзягнуць крок з вядомага пункта контролю, не прабуючы здогадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехацкага рэзультата должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.

Меры нульовага контэксту у AI

Калі працюеце над стадзіяй «Абсалютна кантэкстная незалежнасць», спачатку запішыце кантракт: неабяжлівыя даннэ, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі список контроля дапамагае заліцьварыць пасляэйшныя змены ў кодзе. Спрытывайце гэту стадзію як кантракт межа даннэмі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, задаць правіла пераканання успеху і не прымкнуцца да тых, хто выкаанае частковую роботу без паведамлення. Зявляйце логі з ідэнтыфікаторам запросу, ідэнтыфікаторам моделі і часам затрымкі праз кожны вызов. Без такога лёгку, періодычныя кантрыбутарскія адказы выглядаюць як багі ў самай працоўнай програме.

py4j.protocol.Py4JJavaError: An error occurred while calling o80.load.
org.apache.spark.SparkException: Job aborted due to stage failure.
Traceback (most recent call last):
  File "spark_job.py", line 26, in main
    df_with_status = df.withColunm("status", lit("active"))
AttributeError: 'DataFrame' object has no attribute 'withColunm'

Адналажванне кантэксту ў вашай тэрмінале за дапамогою Google Antigravity CLI

Калі працуеце над практыкай «Прынесенне контэксту на вашу сцэну», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разы частковага нявыпалення. Такі список пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Запісвайце час выканення і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы відомасці коста ў раннім періяде запобегае неспакойным рахункам, калі парадокс перейшае з дэмаверсіі ў спяльныя среды. Запісвайце ID запытку, ID модэлю і час затрымкі праза кожным вызовам. Без такога следу періадычныя паказнікі прадаўцу выглядаюць як багі ў прыемніку.

export GOOGLE_CLOUD_PROJECT="$PROJECT_ID"
mkdir -p ~/.gemini/antigravity-cli
cat << 'EOF' | tee ~/.gemini/antigravity-cli/settings.json ~/.gemini/jetski/cli/settings.json ~/.gemini/antigravity/settings.json ~/.gemini/settings.json
{
  "toolPermission": "always-proceed",
  "permissions": {
    "allow": [
      "read_file(*)",
      "write_file(*)",
      "mcp(*)"
    ]
  }
}
EOF
agy -p "examine spark_job.py, fix the DataFrame method typo, and save the file"

Дэбаггін цэлай інфраструктуры з серверам Spark MCP

Калі вы працуеце над адмініструванням цэлай інфраструктуры на стадыі тэставання, спачатку запісайце умовы вярбунка: неабходныя даны, сігнал працэйнасці і тое, што выходзіць на частыя адказы. Такі список дапамагае заліцварваць пазнейшыя змены ў кодзе. Зберагаюце настройкі праза код аплікацыі. Файлы сераўіснага сэрвісу, храненні секретных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць пераглядаць іх без неабходнасці чытання всей структуры. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам адказу праз кожны вызов. Без такога следу періодычныя адказы прадастоўніка выглядаюць як багі аплікацыі. Калі вы працуеце над адмініструванням цэлай інфраструктуры на стадыі тэставання, спачатку запісайце умовы вярбунка: неабходныя даны, сігнал працэйнасці і тое, што выходзіць на частыя адказы. Такі список дапамагае заліцварваць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, адказ павінен вказваць на адную адпаведальнасць, а не на заплутаную лінію обработкі.

mkdir -p ~/.gemini/config
cat << EOF | tee ~/.gemini/config/mcp_config.json
{
  "mcpServers": {
    "spark": {
      "serverUrl": "https://dataproc-${REGION}.googleapis.com/mcp"
    }
  }
}
EOF
agy -p "inspect my latest failed Spark batch via MCP, identify the root cause, and fix spark_job.py so it succeeds"

Кодаванне плэйбукіў з викорытам агентаў

Этап кодавання плэйбукіў з агентамі працюе наякша, калі яго спрыяваць як мерыемую структуру. Зберажыце адна ідеальная транскрыпцію, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Спрыяйце гэты этап як даговор межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху і не падзеўляйцеся частым, непазначаным завершэнням задачы. Зафіксавайце інтэрпретара і файл з правіламі залежнасцяў пры тым, як выучаеце циклы. Нестабільнасць межа ноутбукам і системай CI ёст тыповая прычына непазначаных абрываў практык API.

mkdir -p .agents/skills/spark-troubleshooter
cat << 'EOF' > .agents/skills/spark-troubleshooter/SKILL.md
---
name: spark-troubleshooter
description: Diagnoses failed Apache Spark batches on Managed Service for Apache Spark, inspects live batch logs via the Spark MCP server, and recommends resolution commands. Use when troubleshooting Spark job failures.
---

# Spark Troubleshooter Skill

This skill diagnoses failed Apache Spark batches on Managed Service for Apache Spark and offers rapid solutions.

## Instructions
1. Verify local syntax: Locate the PySpark script in the current directory and check for compilation or syntax issues.
2. Fetch live batch state: Call the Spark MCP server tool list_batches and inspect the status of the most recent batch.
3. Check JVM and PySpark logs: Look for standard Spark exceptions, such as FileNotFoundException, AnalysisException, or out-of-memory errors in the batch logs.
4. Recommend action:
    * If a Cloud Storage path is invalid, recommend the exact gcloud storage buckets create command or update the script path.
    * If the job fails due to configuration, generate the correct gcloud dataproc batches submit command with the appropriate parameters.
    * If a syntax error is detected, fix the code in-place.
    * For other errors, recommend a fix.
EOF
agy -p "Diagnose why my last Spark batch failed and recommend a fix"
[Spark Troubleshooter] Running diagnostic playbook...
- Local Syntax: OK (spark_job.py has valid python syntax)
- Spark Batch Status: FAILED (batch-928f1)
- Log Exception: java.io.FileNotFoundException for gs://my-missing-bucket/input.csv

Recommendation:
The bucket gs://my-missing-bucket does not exist. Run this command to create it:

  gcloud storage buckets create gs://my-missing-bucket --location=$REGION

Once created, submit the batch again with:

  gcloud dataproc batches submit pyspark spark_job.py \
      --region=$REGION \
      --deps-bucket=gs://$BUCKET_NAME

Усуненне проблем на базе веба з викорытам Gemini у Cloud Logging

Рэшэнак проблемаў на базе Інтэрнету з апрантам Gemini работае наяўней, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваце сферу дзейнасці. Запісвайце часы выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі праця пераходзіць з дэмавайнага режыма ў спяльныя среды. Закрепіце інтэрпретара і файл з правіламі завісання залежнасцяў пры навучэнні циклу. Разлік межаў між ноутбукам і системай CI ёсць найчастэйшым таямным абрывам дэмавайных працяў з API.

Падсумак

Этап падзеўкі работае наякша, калі яго спрыяваць як мерыемую паверхню. Зберагучы адны ідеальны транскрыпт, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Зберагаючы настройкі паза кодам прыемлівай программы. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Закрепіце інтэрпретара і файл з блокаванням залежнасцяў пры практыкуванні циклаў. Разлікы межа лэптопам і системай CI ёсць найчымнейшым таямным абрывам для дэманстрацый API. Этап падзеўкі работае наякша, калі яго спрыяваць як мерыемую паверхню. Зберагучы адны ідеальны транскрыпт, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі які-небудзь крок не выйшаў, неудача должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцоўкі дзеянняў.

Чэрніцца роботы

Этап стварэння чек-ліста для аператыўных задач работае наякша, калі яго спрыяваць як мерыемую величыну. Запісайце адны ідеальны прыклад роботы, адзін прыклад неудачы і зьміст запісу пра анулювання змян, перш чым расширваць сферу дзеяння.

Документавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є частью продукту, а не етапамі пазнейшай доработкі.

Зафіксавайце інтэрпретара та файлы з правамі на выкарыстоўванне раней, чым почнуце вучыць циклы. Разлік межаў между ноутбукам і системай CI є найчастэйшым прычыной тых, чаму дэманстраціі API не працуюць.

Автентыфікуйцеся на воратах доступу і паўтарна автарызавайцеся на роўні дадзеных. Толькі токэн-носіцель не є межай адпаведнае часткі системы.

Напісайце кароткі посібнік: як змяніць кантроллеры, як спрачыслаць чергу, як анулюваць пярэднія змены.

Запісвайце часы выконання та вартасьць токэнаў чы апыткаў разам з функцыйнымі рэзультатамі. Відразлівасьць вартасей з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэманстрацыі ў спяльныя сераўеры.

Перш чым запускать даныя стэка, заморозьце версіі, зафіксавце «золаты» транскрыпты для критычных шляхоў і паказваце способы атрыбуцыі. У спяльных средах неабходны ліміты частоты запытанняў, пераконтроўванні прав на выкарыстоўванне ресурсаў і чысткі власніка для змены секрэтных даных. Валіце простую надзейнасць працы над крэатывнымі, адзінразовымі дамах.

Прыметкі для 3af041a23886: не кладзіце ключы прадаўцаў у репазітарый, задаце ліміт токена на кожную сесію і храніце транскрыпты празаўседы ў фіксатыях для ацэнкі, каб пазнейшыя замены моделяў заставаліся пораўнанымі.