Databricks के इंटरव्यू में आम तौर पर Apache Spark (जॉब्स कैसे चलते हैं, वे धीमे क्यों होते हैं), Delta Lake (टेबल्स को भरोसेमंद क्या बनाता है), और प्लेटफ़ॉर्म (क्लस्टर, जॉब्स, गवर्नेंस) का मिश्रण होता है। सबसे मज़बूत जवाब हर कॉन्सेप्ट को किसी असली समस्या से जोड़ते हैं, जैसे skewed joins, छोटी फ़ाइलें, या ऐसा पाइपलाइन जिसे सुरक्षित तरीके से दोबारा चलाना ज़रूरी हो।
Databricks प्रोडक्ट्स के नाम और उनका संगठन काफ़ी बार बदलता है, इसलिए बताएँ कि आपने कौन-से नाम इस्तेमाल किए हैं (जैसे Delta Live Tables, जो अब Lakeflow परिवार का हिस्सा है) और जॉब डिस्क्रिप्शन में स्टैक ज़रूर देखें।
नीचे 25 सवाल उनके जवाबों के साथ दिए गए हैं।
प्लेटफ़ॉर्म और आर्किटेक्चर
1. Databricks क्या है, और lakehouse क्या है?
Databricks एक क्लाउड डेटा और AI प्लेटफ़ॉर्म है जो Apache Spark के इर्द-गिर्द बना है। lakehouse डेटा को क्लाउड ऑब्जेक्ट स्टोरेज पर खुले फ़ॉर्मैट में रखता है और उसके ऊपर वेयरहाउस जैसी विश्वसनीयता और गवर्नेंस जोड़ता है, ताकि डेटा की एक ही कॉपी इंजीनियरिंग, एनालिटिक्स और मशीन लर्निंग—तीनों के काम आ सके।
2. all-purpose clusters, job clusters और SQL warehouses में क्या अंतर है?
all-purpose clusters इंटरैक्टिव काम और डेवलपमेंट के लिए होते हैं। job clusters किसी शेड्यूल्ड जॉब के लिए शुरू होते हैं और उसके बाद बंद हो जाते हैं, जिससे खर्च कम लगता है। SQL warehouses ऐसा कंप्यूट हैं जो SQL और BI क्वेरीज़ के लिए ट्यून किया गया होता है।
3. आप लागत कैसे कंट्रोल करते हैं?
प्रोडक्शन के लिए job clusters, इंटरैक्टिव क्लस्टर पर auto-termination, समझदार सीमाओं के साथ autoscaling, सही साइज़ के instance types, fault-tolerant काम के लिए spot instances, लोग क्या बना सकते हैं इसे सीमित करने के लिए cluster policies, और कॉस्ट रिपोर्टिंग के लिए tags—इन सबका इस्तेमाल करें।
4. Unity Catalog क्या है?
डेटा और AI एसेट्स के लिए गवर्नेंस लेयर। यह तीन-स्तरीय namespace (catalog, schema, table), केंद्रीकृत एक्सेस कंट्रोल, lineage, और सभी वर्कस्पेस में ऑडिटिंग देता है।
Delta Lake
5. Delta Lake क्या है, और सादे Parquet की जगह इसे क्यों इस्तेमाल करें?
Delta Lake एक टेबल फ़ॉर्मैट है जो Parquet फ़ाइलों में एक ट्रांज़ैक्शन लॉग जोड़ता है। यह ACID ट्रांज़ैक्शन, schema enforcement और evolution, time travel, और कुशल updates और deletes देता है। सादे Parquet में ट्रांज़ैक्शन नहीं होते, इसलिए एक फेल हुई राइट आधा-अधूरा डेटा छोड़ सकती है, और पढ़ने वालों को असंगत स्थिति दिख सकती है।
6. Delta ट्रांज़ैक्शन लॉग कैसे काम करता है?
हर कमिट _delta_log फ़ोल्डर में एक JSON एंट्री जोड़ता है, साथ में समय-समय पर checkpoints बनते हैं। लॉग बताता है कि हर वर्ज़न पर टेबल में कौन-सी डेटा फ़ाइलें हैं। पढ़ने वाले इससे एक संगत स्नैपशॉट देखते हैं, और लिखने वाले optimistic concurrency इस्तेमाल करते हैं—अगर कोई दूसरा कमिट टकराता है तो दोबारा कोशिश करते हैं या फेल हो जाते हैं।
7. time travel क्या है?
किसी टेबल के पुराने वर्ज़न को वर्ज़न नंबर या टाइमस्टैम्प से क्वेरी करना—ऑडिट, डीबगिंग, या रोलबैक के लिए।
SELECT * FROM sales VERSION AS OF 12;
RESTORE TABLE sales TO VERSION AS OF 12;
8. Delta में upsert कैसे करते हैं?
MERGE INTO से:
MERGE INTO customers t
USING updates s ON t.id = s.id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;
ध्यान रखें कि सोर्स में हर key के लिए एक ही रो हो, वरना merge फेल हो जाता है या गलत नतीजे देता है।
9. OPTIMIZE और VACUUM क्या करते हैं?
OPTIMIZE बहुत सारी छोटी फ़ाइलों को बड़ी फ़ाइलों में समेटता है, जिससे रीड तेज़ होती हैं। VACUUM ऐसी फ़ाइलें हटाता है जो अब टेबल में रेफ़र नहीं हैं और retention अवधि से पुरानी हैं, जिससे स्टोरेज खाली होती है लेकिन time travel सीमित हो जाता है। retention बहुत छोटा न रखें जब तक दूसरे जॉब्स पुराने वर्ज़न पढ़ सकते हों।
10. तेज़ क्वेरीज़ के लिए डेटा को कैसे व्यवस्थित करते हैं?
सिर्फ़ कम-cardinality वाले कॉलम पर partition करें जिन पर क्वेरीज़ अक्सर फ़िल्टर करती हैं, और partitions को काफ़ी बड़ा रखें। ज़रूरत से ज़्यादा partitioning बहुत सारी छोटी फ़ाइलें बना देती है। बाकी कॉलम के लिए Z-ordering या liquid clustering (नया तरीका) इस्तेमाल करें, जो डेटा को इस तरह क्लस्टर करते हैं कि क्वेरीज़ फ़ाइलें छोड़ सकें।
Spark की बुनियादी बातें
11. Transformations और actions क्या हैं, और lazy evaluation क्या है?
filter और select जैसे transformations एक plan बनाते हैं लेकिन चलते नहीं। count और write जैसे actions execution शुरू करते हैं। चूँकि Spark पहले पूरा plan देख लेता है, यह उसे optimize कर सकता है।
12. Shuffle क्या है, और यह महँगा क्यों है?
Shuffle executors के बीच network पर data को इधर-उधर भेजता है ताकि एक ही key वाली rows एक साथ आ जाएँ, जैसे joins, groupBy, और distinct में। इसमें disk और network I/O लगता है, इसलिए shuffles कम करना ही तेज़ jobs का मुख्य रास्ता है।
13. Spark दो tables को कैसे join करता है, और आप इसे तेज़ कैसे बनाते हैं?
डिफ़ॉल्ट रूप से बड़े joins एक shuffle (sort-merge) join का उपयोग करते हैं। अगर एक table छोटी है, तो broadcast join उसे हर executor पर भेज देता है और बड़ी table को shuffle करने से बचा लेता है।
from pyspark.sql.functions import broadcast
df = big.join(broadcast(small), "id")
14. Data skew क्या है, और आप इसे कैसे ठीक करते हैं?
कुछ keys में ज़्यादातर rows होती हैं, इसलिए कुछ tasks बाकी की तुलना में बहुत ज़्यादा समय लेते हैं। संकेत यह है कि Spark UI में एक task लंबे समय तक चल रहा हो। समाधान हैं adaptive query execution की skew handling, key को salt करना, छोटी side को broadcast करना, या उन null या default keys को filter कर देना जो skew पैदा करती हैं।
15. Adaptive query execution (AQE) क्या है?
Spark असली statistics का उपयोग करके execution के दौरान plan को समायोजित करता है: यह छोटे shuffle partitions को coalesce कर सकता है, join strategies बदल सकता है, और skewed partitions को split कर सकता है। हाल के versions में यह डिफ़ॉल्ट रूप से चालू रहता है।
16. repartition और coalesce में क्या अंतर है?
repartition partitions को बढ़ा या घटा सकता है और पूरा shuffle करता है। coalesce केवल partitions घटाता है और पूरा shuffle टाल देता है, इसलिए यह सस्ता है लेकिन असमान partitions बना सकता है।
17. आप DataFrame को कब cache करना चाहिए?
जब आप एक ही DataFrame को किसी job में कई बार दोबारा उपयोग करते हैं और उसे दोबारा compute करना महँगा पड़ता है। जो चीज़ें एक ही बार उपयोग होती हैं उन्हें cache न करें, और काम पूरा होने पर cache release कर दें।
18. Python UDFs की जगह built-in functions को क्यों प्राथमिकता दें?
Built-in functions JVM के अंदर चलते हैं और optimize किए जा सकते हैं। Python UDFs data को JVM और Python के बीच ले जाते हैं और optimizer के लिए अपारदर्शी होते हैं, इसलिए वे धीमे होते हैं। जहाँ संभव हो built-ins या pandas UDFs का उपयोग करें।
Pipelines
19. Medallion architecture क्या है?
एक स्तरित design: bronze कच्चा ingested data रखता है, silver साफ़ और conformed data रखता है, और gold reporting के लिए तैयार business-level aggregates रखता है। यह स्पष्ट करता है कि quality checks कहाँ होते हैं और आपको बाद की layers को पहले वाली layers से दोबारा बनाने देता है।
20. Auto Loader क्या है?
एक feature जो cloud storage से आने वाली नई files को incrementally और कुशलता से ingest करता है, यह track करते हुए कि कौन-सी files process हो चुकी हैं, साथ में schema inference और evolution support के।
21. Structured Streaming failures और exactly-once को कैसे संभालता है?
यह checkpoints का उपयोग करता है जो progress और state संग्रहीत करते हैं, ताकि restart हुई query वहीं से जारी रहे जहाँ रुकी थी। Replayable sources और Delta जैसे idempotent या transactional sinks के साथ, आपको end-to-end exactly-once results मिलते हैं।
22. आप एक pipeline को दोबारा चलाने के लिए सुरक्षित कैसे बनाते हैं?
Writes को idempotent बनाएँ: किसी key पर MERGE का उपयोग करें, किसी विशिष्ट partition को overwrite करें, या duplicates से बचने के लिए run ID का उपयोग करें। Job की input range स्पष्ट रखें और row counts log करें ताकि आप results जाँच सकें।
23. आप data quality checks कैसे करते हैं?
Pipeline में expectations या constraints का उपयोग करें (जैसे Delta constraints या declarative pipeline expectations), row counts, nulls, और uniqueness validate करें, और पूरे load को fail करने के बजाय खराब rows को quarantine करें, जो downstream users के साथ contract पर निर्भर करता है।
परिदृश्य
24. एक job जो 20 मिनट में चलती थी अब तीन घंटे ले रही है। आप क्या करते हैं?
- दोनों runs के Spark UI की तुलना करें: कौन-सा stage धीमा हो गया?
- Input size जाँचें और देखें कि कोई table बढ़ी है या उसका layout खो गया है, जैसे बहुत सारी छोटी files।
- धीमे stage में skew ढूँढें, और disk पर spilling भी।
- Cluster में बदलाव जाँचें, जैसे कम workers या बदला हुआ instance type।
- Code या Spark settings में बदलाव, और किसी नए join या UDF की जाँच करें।
- कारण ठीक करें (compaction, broadcast, skew handling, या sizing) और monitoring जोड़ें।
25. एक pipeline design करें जो रोज़ाना JSON files ingest करे और एक dashboard को serve करे।
"Auto Loader नई files को raw data और metadata के साथ एक bronze Delta table में पढ़ता है। एक job उन्हें parse और clean करके silver में डालती है, MERGE के साथ key पर deduplicate करते हुए। एक gold table dashboard के लिए aggregate करती है, जो एक SQL warehouse से पढ़ता है। Unity Catalog access manage करता है, expectations खराब data पकड़ती हैं, और job एक job cluster पर चलती है जिसमें failure पर और row-count anomalies पर alerts होते हैं।"
तैयारी कैसे करें
एक नोटबुक पर काम करें जो एक फ़ाइल पढ़ती है, किसी दूसरी टेबल से जॉइन करती है, Delta में लिखती है, और MERGE का उपयोग करती है। Spark UI खोलें और एक shuffle तथा एक skewed task ढूँढें। एक पाइपलाइन को तेज़ करने या ठीक करने की एक कहानी तैयार करें, आँकड़ों के साथ। संबंधित विषयों के लिए, हमारी Kafka, Snowflake, और Talend गाइड देखें।
अपने जवाब ज़ोर से बोलें, खासकर परफ़ॉर्मेंस वाले, जहाँ उम्मीदवार बिना निदान किए ट्यूनिंग टिप्स की सूची बना देते हैं। एक मॉक इंटरव्यू ट्रांसक्रिप्ट दिखाता है कि कहाँ। किसी भी लाइव इंटरव्यू में AI टूल्स के बारे में नियोक्ता के नियमों का पालन करें।
YesToTheOffer के साथ Databricks साक्षात्कार उत्तरों का अभ्यास करें
एक मॉक तकनीकी साक्षात्कार चलाएँ, एक पाइपलाइन डिज़ाइन को ज़ोर से समझाएँ, और बाद में अपने ट्रांसक्रिप्ट की समीक्षा करें। 30 मुफ्त मिनट, कोई सदस्यता नहीं।



