Skip to content

JudahGazit/spark_test_case

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spark_test_case

הפרויקט הקטן הזה הוא מדגים של פתרון אפשרי לבעיית unittests המשתמשים בספארק. כבר מזמן גילינו איך לעשות UT המשתמש בספארק בתוכו. לרוב התהליך נראה כך:
  • Create input dataframe (in memory)
  • Create expected dataframe (in memory)
  • Execute function over the input dataframe
  • Assert whether the result equals to the expected result
    • Compare sizes?
    • Join? Subtract?
    • Collect both?
UT בספארק הם דבר לא פשוט בכלל, מכמה סיבות:
  • היעדר יכולות מובנות המאפשרות בדיקה של התוצאה המתקבלת מול התוצאה הצפויה
  • זמן ריצה ארוך מאוד
    • יצירת הContext מהווה צוואר בקבוק
  • תלות בסביבה חיצונית

הפרויקט הזה מציג שיטה שמאפשרת הרצה של UT בצורה מהירה פי 100 (!) מהצורה הנאיבית שבה אנחנו משתמשים היום. איך זה קורה?

  • שימוש spark local במקום יצירת Context "אמיתי"
  • Context לא נסגר - לא מריצים UT דרך pycharm יותר, אלא דרך קובץ main מיוחד שישאיר את הContext באוויר. כדי להריץ מחדש UT לא צריך להריץ כלום, רק ללחוץ Enter. כמובן שזה יודע להתייחס לשינוי בCodeBase בין הרצה להרצה.

בנוסף, TestCase מיועד ל Spark מכיל בדיקה של תוכן הטבלאות בבדיקה (כולל הירככיה), ובודק (אם רוצים) גם את סדר העמודות והסוג שלהן בנפרד.

שני אלו ביחד מאפשרים הרצה של UT אמינים במהירות גבוהה מאוד, מה שעשוי לאפשר קפיצת מדרגה בזמן כתיבת הקוד. במקום שיקח 10 שניות להרצת TEST אחד, כיוון שה Context נשמר - לוקח 0.6 שניות להריץ 5 בדיקות!

About

Spark test case demo

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages