PySpark انٹرویو سوالات

تحریر: Aaron Cao · اپ ڈیٹ

PySpark انٹرویو سوالات
PySpark انٹرویوز کا مرکز execution model اور performance ہوتا ہے۔ توقع رکھیں کہ آپ کو transformation اور action کا فرق سمجھانا ہوگا، یہ بتانا ہوگا کہ کون سی operations shuffle کا سبب بنتی ہیں، broadcast join کا انتخاب کرنا ہوگا، data skew کی تشخیص کرنی ہوگی، caching کا جواز پیش کرنا ہوگا، اور یہ بیان کرنا ہوگا کہ آپ اس job کو کیسے tune کریں گے جس کی memory ختم ہو رہی ہو۔

PySpark انٹرویوز کا مرکز execution model اور performance ہوتا ہے۔ توقع رکھیں کہ آپ کو transformation اور action کا فرق سمجھانا ہوگا، یہ بتانا ہوگا کہ کون سی operations shuffle کا سبب بنتی ہیں، broadcast join کا انتخاب کرنا ہوگا، data skew کی تشخیص کرنی ہوگی، caching کا جواز پیش کرنا ہوگا، اور یہ بیان کرنا ہوگا کہ آپ اس job کو کیسے tune کریں گے جس کی memory ختم ہو رہی ہو۔

Execution model کے بارے میں انٹرویو لینے والے کیا پوچھتے ہیں؟

آپ چلتا ہوا PySpark لکھ سکتے ہیں اور پھر بھی یہاں الجھ سکتے ہیں، کیونکہ یہ سوالات یہ پوچھتے ہیں کہ engine کیا کرتا ہے، نہ کہ آپ کا کوڈ کیا کہتا ہے۔ انٹرویو لینے والے انہی سوالات سے شروع کرتے ہیں کیونکہ یہ ان لوگوں کو الگ کرتے ہیں جنہوں نے کبھی job کو tune کیا ہو ان سے جنہوں نے صرف اسے چلایا ہو۔ یہ حصہ ماڈل کے سوالات اور مکمل جواب میں شامل چیزوں کا احاطہ کرتا ہے۔

  • Transformation یا action، فرق کیا ہے؟ Transformation ایک plan بناتی ہے اور lazily ایک نیا DataFrame واپس کرتی ہے؛ count، collect جیسے action یا کوئی write execution کو trigger کرتے ہیں۔ جب تک کوئی action نتیجہ نہ مانگے، کچھ compute نہیں ہوتا۔
  • Laziness کیوں مفید ہے؟ Optimizer پوری chain کو چلانے سے پہلے دیکھ لیتا ہے، اس لیے وہ filters کو دوبارہ ترتیب دے سکتا ہے، columns کو prune کر سکتا ہے اور steps کو combine کر سکتا ہے۔
  • Narrow یا wide transformation؟ filter اور select جیسی narrow operations ہر output partition کو صرف ایک input partition پر منحصر رکھتی ہیں۔ groupBy، join اور distinct جیسی wide operations ڈیٹا کو partitions کے درمیان دوبارہ تقسیم کرتی ہیں، جو کہ ایک shuffle ہے۔
  • Shuffle کیا ہے اور یہ کیوں اہم ہے؟ ڈیٹا نیٹ ورک پر حرکت کرتا ہے اور disk کو چھوتا ہے، جس سے ایک stage boundary بنتی ہے۔ عام طور پر یہ کسی job کا سب سے مہنگا کام ہوتا ہے۔
  • Job، stage اور task کی وضاحت کریں۔ ایک action job شروع کرتا ہے، shuffle boundaries اسے stages میں تقسیم کرتی ہیں، اور ہر stage ہر partition کے لیے ایک task چلاتا ہے۔
  • RDD، DataFrame یا Dataset؟ DataFrame کو ترجیح دیں، کیونکہ Catalyst optimizer اور columnar execution وہاں لاگو ہوتے ہیں۔ RDD کم سطح کے control کے لیے موجود رہتے ہیں۔ Typed Dataset ایک JVM concept ہے، اس لیے Python میں ایماندارانہ جواب یہ ہے کہ یہ لاگو نہیں ہوتے۔

جب مناسب ہو تو shuffle اور stage الفاظ ضرور استعمال کریں۔ انٹرویو لینے والے انہیں یہ جاننے کے شارٹ کٹ کے طور پر استعمال کرتے ہیں کہ آپ نے کبھی Spark UI پڑھا ہے یا نہیں۔

Performance کے سوالات کا جواب کیسے دیں؟

زیادہ تر senior PySpark انٹرویوز performance interviews ہوتے ہیں۔ سوالات definitions کی بجائے scenarios کی شکل میں آتے ہیں۔

  • ایک join سست ہے۔ آپ کیا چیک کرتے ہیں؟ پہلے دونوں طرف کا سائز۔ اگر ایک طرف executor memory میں فٹ ہو جائے تو اسے broadcast کریں اور shuffle کو مکمل طور پر ٹال دیں۔ ورنہ cluster کا سائز چھیڑنے سے پہلے partitioning اور skew دیکھیں۔
  • Data skew کیا ہے اور اسے کیسے ٹھیک کریں؟ چند keys زیادہ تر rows رکھتی ہیں، اس لیے ایک task باقیوں کے مکمل ہونے کے بعد بھی دیر تک چلتا ہے۔ حل میں hot key کی salting، چھوٹی طرف کا broadcast، یا ان null ویلیوز کو filter کرنا شامل ہے جو سب ایک ہی جگہ hash ہوتی ہیں۔ diagnostic signal Spark UI میں task duration کا spread ہے۔
  • آپ cache یا persist کب کرتے ہیں؟ جب کوئی DataFrame متعدد actions میں دوبارہ استعمال ہو اور دوبارہ compute کرنا مہنگا ہو۔ صرف ایک بار استعمال ہونے والی چیز کو cache کرنا memory ضائع کرتا ہے، اور طویل jobs میں unpersist کرنا اہم ہے۔
  • Repartition یا coalesce؟ Repartition shuffle کرتا ہے اور partitions کو یکساں طور پر بڑھا یا گھٹا سکتا ہے؛ coalesce مکمل shuffle کے بغیر ملاتا ہے، جو output فائلیں کم کرنے کا سستا طریقہ ہے۔
  • Python UDF سے کیوں بچیں؟ Rows JVM اور Python process کے درمیان serialize ہوتی ہیں، اور optimizer function کے اندر نہیں دیکھ سکتا۔ built-in functions کو ترجیح دیں، اور vectorized UDF کا سہارا صرف اسی وقت لیں جب کوئی built-in موجود نہ ہو۔
  • collect خطرناک کیوں ہے؟ یہ پورا نتیجہ driver تک کھینچ لاتا ہے اور اس کی memory ختم کر سکتا ہے۔
  • ایک job out of memory کے ساتھ fail ہو جاتا ہے۔ آپ کی تحقیق کی ترتیب کیا ہے؟ پہلے driver ہے یا executor، پھر skew، پھر partition sizing، پھر memory configuration۔ پہلے قدم کے طور پر memory بڑھانا وہ جواب ہے جو ناتجربہ کاری ظاہر کرتا ہے۔

ایک platform team کے لیے انٹرویو دینے والے data engineer سے پوچھا گیا کہ ایک سال سے چلنے والا nightly job اچانک چار گھنٹے کیوں لینے لگا۔ جو جواب کارگر ثابت ہوا وہ configuration میں تبدیلی نہیں تھا، بلکہ یہ تھا کہ ایک upstream partner نے join key میں null بھیجنا شروع کر دیے تھے، جس سے ہر null row ایک ہی partition میں hash ہو رہی تھی۔ انٹرویو لینے والے اسی ترتیب کو انعام دیتے ہیں: cluster سے پہلے ڈیٹا دیکھیں۔

role کے مطابق متعلقہ question banks interview questions by role کے تحت موجود ہیں۔

کون سے عملی اور data-handling سوالات آتے ہیں؟

باقی سوالات یہ چیک کرتے ہیں کہ آیا آپ نے کوئی pipeline ship کی ہے یا صرف کوئی tutorial مکمل کیا ہے۔

  • آپ ڈیٹا کو مؤثر طریقے سے کیسے پڑھتے ہیں؟ Parquet جیسے columnar formats، filter column پر partition pruning، اور predicate pushdown۔ سمجھائیں کہ کم bytes پڑھنا بعد میں ہونے والی چیزوں کو optimize کرنے سے بہتر کیوں ہے۔
  • schema infer کروانے کی بجائے خود define کیوں کریں؟ Inference ڈیٹا پر ایک اضافی pass کی قیمت لیتا ہے اور runs کے درمیان types کا اندازہ غیر مستقل طور پر لگا سکتا ہے۔
  • آپ nulls اور duplicates کو کیسے سنبھالتے ہیں؟ متعلقہ functions، اور یہ نکتہ کہ null سے بھرپور join keys skew پیدا کرتی ہیں۔
  • Window functions کس کام آتی ہیں؟ Ranking، running totals، اور ہر key کے لیے تازہ ترین record تک deduplicate کرنا، جو ایک بہت عام pipeline کام ہے۔
  • ہزاروں چھوٹی فائلیں بنائے بغیر output کیسے لکھیں؟ لکھنے سے پہلے coalesce یا repartition کریں، اور output کو معقول cardinality والے column کے ذریعے partition کریں۔
  • آپ PySpark کوڈ کو کیسے test کرتے ہیں؟ fixture DataFrames کے ساتھ چھوٹی local sessions، اور business logic ایسے functions میں تقسیم جو DataFrames لیتے اور واپس کرتے ہیں۔
  • آپ کسی job کو کیسے submit اور configure کرتے ہیں؟ Executor کی تعداد، cores اور memory، اور یہ استدلال کہ زیادہ چھوٹے executors اور بہت کم بڑے executors دونوں capacity ضائع کرتے ہیں۔

انٹرویو سے پہلے آپ کو کیسے مشق کرنی چاہیے؟

PySpark کے جوابات بلند آواز میں بولتے وقت ایک پہچانے جانے والے انداز میں ناکام ہوتے ہیں۔ candidate جانتا ہے کہ shuffle مہنگا ہے لیکن یہ نہیں بتا سکتا کہ کون سی operations اس کا سبب بنتی ہیں، اس لیے جواب صفات کی ایک فہرست بن جاتا ہے۔ question bank پڑھنے سے پہچان پیدا ہوتی ہے، اور پہچان اس وضاحت جیسی نہیں جو کسی کے انتظار کے دوران دی جائے۔

ایک pipeline لیں جو آپ نے بنائی ہو اور اسے شروع سے آخر تک بیان کریں: read، ہر transformation، stage boundaries کہاں گرتی ہیں، اور اگر یہ سست پڑ جائے تو آپ پہلے کیا چیک کریں گے۔ اسے بلند آواز میں تب تک کریں جب تک آپ دوبارہ شروع کرنا بند نہ کر دیں۔ ان prompts کی مشق ایک AI انٹرویو لینے والے کے سامنے کرنا، جو follow-up سوال پوچھتا ہے، نوٹس دوبارہ پڑھنے سے حقیقی round کے زیادہ قریب ہے، اور mock interview موڈ بالکل اسی لیے بنایا گیا ہے۔

SubcueAI کے بانی Aaron Cao نے یہ مشق مزید سوالات فراہم کرنے کے بجائے اسی بولنے کے فرق کے گرد تعمیر کی۔ live انٹرویو میں desktop app اور browser extension کا Side Panel، انٹرویو لینے والے کی گفتگو کے دوران structure سامنے لا سکتے ہیں، جو اس مواد پر سب سے زیادہ مدد دیتا ہے جس کی آپ پہلے ہی مشق کر چکے ہیں۔ setup میں چند منٹ لگتے ہیں اور یہ tutorial صفحے پر بیان کیا گیا ہے۔

عام سوالات

کیا PySpark انٹرویوز میں live coding شامل ہوتی ہے؟

اکثر ہاں۔ ایک عام کام join کے ساتھ aggregation، یا window function کے ذریعے ہر key کے لیے تازہ ترین row تک deduplicate کرنا ہے۔ انٹرویو لینے والے دیکھتے ہیں کہ آیا آپ UDF کی بجائے built-in functions کا سہارا لیتے ہیں، اور بغیر پوچھے partitioning کا ذکر کرتے ہیں۔

PySpark role کے لیے مجھے کتنا SQL چاہیے؟

کافی زیادہ۔ Spark SQL اور DataFrame API ایک جیسی operations کا اظہار کرتے ہیں، اور بہت سی ٹیمیں joins اور window functions براہ راست SQL میں لکھتی ہیں۔ کم از کم ایک ایسے سوال کی توقع رکھیں جس کا جواب آپ دونوں شکلوں میں دے سکیں۔

کیا مجھے Spark انٹرویو کے لیے Scala سیکھنی چاہیے؟

PySpark role کے لیے نہیں۔ یہ جاننا مددگار ہے کہ Spark JVM پر چلتا ہے اور Python UDF اس حد کے پار serialization کی قیمت ادا کرتے ہیں، بالکل اسی وجہ سے built-in functions کو ترجیح دی جاتی ہے۔

PySpark انٹرویو کی سب سے عام غلطی کیا ہے؟

Performance کے سوالات کا جواب cluster کے سائز سے دینا۔ انٹرویو لینے والے چاہتے ہیں کہ پہلے ڈیٹا کا جائزہ لیا جائے: partition sizes، skew، join strategy اور کتنا پڑھا جا رہا ہے۔ پہلے قدم کے طور پر executors شامل کرنا محدود production تجربہ ظاہر کرتا ہے۔

کیا کوئی AI assistant live data engineering انٹرویو کے دوران میری مدد کر سکتا ہے؟

یہ انٹرویو لینے والے کی گفتگو کے دوران structure سامنے لا سکتا ہے، جو اس مواد پر سب سے زیادہ مفید ہے جو آپ پہلے ہی جانتے ہیں۔ یہ مشق کا متبادل نہیں ہے، اور screen sharing، recorded sessions، proctored assessments اور کمپنی کے زیر انتظام laptops دائرہ کار سے باہر رہتے ہیں۔

متعلقہ سوالات

← مزید: عہدے اور موضوع کے مطابق انٹرویو سوالات