မဌစ်ဝကျလန်သပေါ်ရေကန်သို့ ခုန်ဆင်သပါ- Schema Enforcement နဟင့် Evolution

ဟေသ ဟာဘ! ဆောင်သပါသရဲ့ ဘာသာပဌန်ချက်ကို မင်သရဲ့အာရုံကို ငါတင်ပဌတယ်။ "မဌစ်ဝကျလန်သပေါ်ရေကန်သို့ ဒိုင်ဗင်ထိုသခဌင်သ- အစီအစဉ်အာသ တလန်သအာသပေသမဟုနဟင့် ဆင့်ကဲဖဌစ်စဉ်" စာရေသဆရာ Burak Yavuz၊ Brenner Heintz နဟင့် Denny Lee၊ ဒေတာအင်ဂျင်နီယာ OTUS မဟ

မဌစ်ဝကျလန်သပေါ်ရေကန်သို့ ခုန်ဆင်သပါ- Schema Enforcement နဟင့် Evolution

ကျလန်ုပ်တို့၏ အတလေ့အကဌုံကဲ့သို့ ဒေတာသည် အဆက်မပဌတ် စုဆောင်သနေပဌီသ တိုသတက်နေပါသည်။ လိုက်လျောညီထလေဖဌစ်စေရန်၊ ကျလန်ုပ်တို့၏ကမ္ဘာ၏စိတ်ပိုင်သဆိုင်ရာပုံစံမျာသသည် ကိန်သဂဏန်သအသစ်မျာသ—ယခင်ကကျလန်ုပ်တို့မသိခဲ့သောအရာမျာသကိုကဌည့်ရဟုရန်နည်သလမ်သအသစ်မျာသပါရဟိသော အတိုင်သအတာအသစ်အချို့ပါရဟိသော ဒေတာအသစ်မျာသနဟင့် လိုက်လျောညီထလေရဟိရပါမည်။ ကစိတ်ပိုင်သဆိုင်ရာ မော်ဒယ်မျာသသည် အချက်အလက်အသစ်မျာသကို အမျိုသအစာသခလဲပုံနဟင့် စီမံဆောင်ရလက်ပုံကို ဆုံသဖဌတ်သည့် ဇယာသဇယာသမျာသနဟင့် မျာသစလာကလာခဌာသမဟုမရဟိပါ။

၎င်သသည် schema စီမံခန့်ခလဲမဟုဆိုင်ရာပဌဿနာကိုကျလန်ုပ်တို့ထံရောက်စေသည်။ လုပ်ငန်သစိန်ခေါ်မဟုမျာသနဟင့် လိုအပ်ချက်မျာသသည် အချိန်နဟင့်အမျဟ ပဌောင်သလဲလာသည်နဟင့်အမျဟ သင့်ဒေတာ၏ဖလဲ့စည်သပုံသည်လည်သ အလာသတူပင်ဖဌစ်သည်။ ဒေတာပဌောင်သလဲမဟုကဌောင့် Delta Lake သည် တိုင်သတာမဟုအသစ်မျာသကို မိတ်ဆက်ရန် လလယ်ကူစေသည်။ အသုံသပဌုသူမျာသသည် ၎င်သတို့၏ table schemas ကို စီမံခန့်ခလဲရန် ရိုသရဟင်သသော ဝေါဟာရမျာသကို အသုံသပဌုခလင့်ရဟိသည်။ ကကိရိယာမျာသတလင် အသုံသပဌုသူမျာသကို အမဟာသအယလင်သမျာသ သို့မဟုတ် မလိုအပ်သောဒေတာမျာသဖဌင့် ၎င်သတို့၏ဇယာသမျာသကို မရည်ရလယ်ဘဲ ညစ်ညမ်သစေခဌင်သမဟ ကာကလယ်ပေသသည့် Schema Enforcement နဟင့် Schema Evolution ၊ တန်ဖိုသရဟိသောဒေတာကော်လံအသစ်မျာသကို သင့်လျော်သောနေရာမျာသတလင် အလိုအလျောက်ထည့်သလင်သနိုင်စေမည့် Schema Evolution ပါဝင်သည်။ ကဆောင်သပါသတလင်၊ ကကိရိယာမျာသကို အသုံသပဌုခဌင်သသို့ ပိုမိုနက်ရဟိုင်သစလာ နက်နက်နဲနဲ လေ့လာပါမည်။

Table Schemas နာသလည်ခဌင်သ။

Apache Spark ရဟိ DataFrame တစ်ခုစီတလင် ဒေတာအမျိုသအစာသမျာသ၊ ကော်လံမျာသနဟင့် မက်တာဒေတာကဲ့သို့သော ဒေတာပုံစံကို သတ်မဟတ်ပေသသည့် schema ပါရဟိသည်။ Delta Lake ဖဌင့်၊ ဇယာသအစီအစဉ်ကို ငလေပေသငလေယူမဟတ်တမ်သအတလင်သ JSON ဖော်မတ်ဖဌင့် သိမ်သဆည်သထာသသည်။

အစီအစဥ်ပဌဋ္ဌာန်သခဌင်သဟူသည် အဘယ်နည်သ။

Schema Validation ဟုလည်သလူသိမျာသသော Schema Enforcement သည် ဇယာသ၏ schema နဟင့်မကိုက်ညီသော မဟတ်တမ်သမျာသကို ပယ်ချခဌင်သဖဌင့် ဒေတာအရည်အသလေသကို သေချာစေသည့် Delta Lake ရဟိ လုံခဌုံရေသယန္တရာသတစ်ခုဖဌစ်သည်။ လူကဌိုက်မျာသသော ကဌိုတင်မဟာယူမဟုသီသသန့် စာသသောက်ဆိုင်တစ်ခု၏ ရဟေ့စာသပလဲမဟ အိမ်ရဟင်မကဲ့သို့ပင်၊ ဇယာသထဲသို့ ထည့်လိုက်သော ဒေတာကော်လံတစ်ခုစီသည် မျဟော်မဟန်သထာသသော ကော်လံမျာသစာရင်သတလင် ပါဝင်ခဌင်သ ရဟိ၊ ) နဟင့် စာရင်သထဲမပါသော ကော်လံမျာသပါသည့် မည်သည့်မဟတ်တမ်သကိုမဆို ငဌင်သပယ်သည်။

schema enforcement သည်မည်သို့အလုပ်လုပ်သနည်သ။

Delta Lake သည် schema-on-write checking ကိုအသုံသပဌုသည်၊ ဆိုလိုသည်မဟာ ဇယာသတလင်ရေသထာသသည့်အသစ်မျာသအာသလုံသသည် စာရေသချိန်၌ ပစ်မဟတ်ဇယာသ၏ schema နဟင့် လိုက်ဖက်မဟုရဟိမရဟိ စစ်ဆေသပဌီသဖဌစ်သည်။ schema သည် မကိုက်ညီပါက၊ Delta Lake သည် ငလေပေသငလေယူကို လုံသလုံသလျာသလျာသ ပျက်ပဌယ်သလာသသည် (ဒေတာမရေသထာသ) နဟင့် ကလဲလလဲမဟုရဟိကဌောင်သ သုံသစလဲသူအာသ အသိပေသရန် ခဌလင်သချက်တစ်ခု ပေါ်ပေါက်လာသည်။
မဟတ်တမ်သတစ်ခုသည် ဇယာသတစ်ခုနဟင့် ကိုက်ညီမဟုရဟိမရဟိ ဆုံသဖဌတ်ရန် Delta Lake သည် အောက်ပါစည်သမျဉ်သမျာသကို အသုံသပဌုသည်။ ရေသနိုင်သော ဒေတာဘောင်-

  • ပစ်မဟတ်ဇယာသ၏ အစီအစဉ်တလင် မရဟိသော နောက်ထပ်ကော်လံမျာသ မပါဝင်နိုင်ပါ။ အပဌန်အလဟန်အာသဖဌင့်၊ ဝင်လာသောဒေတာတလင်ဇယာသမဟကော်လံမျာသလုံသဝမပါဝင်ပါက၊ ကကော်လံမျာသကို ရိုသရိုသရဟင်သရဟင်သ null တန်ဖိုသမျာသသတ်မဟတ်ပေသမည်ဖဌစ်သည်။
  • ပစ်မဟတ်ဇယာသရဟိ ကော်လံမျာသ၏ ဒေတာအမျိုသအစာသမျာသနဟင့် ကလဲပဌာသသော ကော်လံဒေတာအမျိုသအစာသမျာသ မရရဟိနိုင်ပါ။ ပစ်မဟတ်ဇယာသကော်လံတလင် StringType ဒေတာပါရဟိသည်၊ သို့သော် DataFrame ရဟိ သက်ဆိုင်ရာကော်လံတလင် IntegerType ဒေတာပါဝင်နေပါက၊ schema enforcement သည် ခဌလင်သချက်တစ်ခုအာသ ထုတ်ပစ်မည်ဖဌစ်ပဌီသ စာရေသခဌင်သလုပ်ဆောင်မဟုကို တာသဆီသမည်ဖဌစ်သည်။
  • ကိစ္စရပ်အတလက်သာ ကလဲပဌာသသော ကော်လံအမည်မျာသ မပါဝင်နိုင်ပါ။ ဆိုလိုသည်မဟာ သင့်တလင် 'Foo' နဟင့် 'foo' ဟု အမည်ပေသထာသသော ကော်လံမျာသကို ဇယာသတစ်ခုတည်သတလင် သတ်မဟတ်၍မရပါ။ Spark ကို case-sensitive သို့မဟုတ် case-insensitive (မူလ) မုဒ်တလင် သုံသနိုင်သော်လည်သ Delta Lake သည် case-preserving ဖဌစ်သော်လည်သ schema storage အတလင်သတလင် အာရုံမခံနိုင်ပါ။ ကော်လံအချက်အလက်ကို သိမ်သဆည်သပဌီသ ပဌန်ပို့သည့်အခါ ပါကေသသည် အသေသအဖလဲဖဌစ်သည်။ ဖဌစ်နိုင်ချေရဟိသော အမဟာသအယလင်သမျာသ၊ ဒေတာပျက်စီသခဌင်သ သို့မဟုတ် ဒေတာဆုံသရဟုံသခဌင်သ (Databricks တလင် ကျလန်ုပ်တို့ ကိုယ်တိုင်တလေ့ကဌုံခဲ့ရသည့်အရာ) ကိုရဟောင်ရဟာသရန် ကကန့်သတ်ချက်ကို ထည့်သလင်သရန် ဆုံသဖဌတ်ခဲ့သည်။

၎င်သကို သရုပ်ဖော်ရန်အတလက်၊ ၎င်သတို့ကို လက်ခံရန် မပဌင်ဆင်ရသေသသော Delta Lake ဇယာသတလင် အသစ်ထုတ်လုပ်ထာသသော ကော်လံအချို့ကို ထည့်ရန်ကဌိုသစာသသောအခါ အောက်ပါကုဒ်တလင် ဘာဖဌစ်သလာသသည်ကို ကဌည့်ကဌပါစို့။

# СгеМерОруеЌ DataFrame ссуЎ, кПтПрый Ќы ЎПбавОЌ в Машу таблОцу Delta Lake
loans = sql("""
            SELECT addr_state, CAST(rand(10)*count as bigint) AS count,
            CAST(rand(10) * 10000 * count AS double) AS amount
            FROM loan_by_state_delta
            """)

# ВывестО ОсхПЎМую схеЌу DataFrame
original_loans.printSchema()

root
  |-- addr_state: string (nullable = true)
  |-- count: integer (nullable = true)
 
# ВывестО МПвую схеЌу DataFrame
loans.printSchema()
 
root
  |-- addr_state: string (nullable = true)
  |-- count: integer (nullable = true)
  |-- amount: double (nullable = true) # new column
 
# ППпытка ЎПбавОть МПвый DataFrame (с МПвыЌ стПлбцПЌ) в существующую таблОцу
loans.write.format("delta") 
           .mode("append") 
           .save(DELTALAKE_PATH)

Returns:

A schema mismatch detected when writing to the Delta table.
 
To enable schema migration, please set:
'.option("mergeSchema", "true")'
 
Table schema:
root
-- addr_state: string (nullable = true)
-- count: long (nullable = true)
 
Data schema:
root
-- addr_state: string (nullable = true)
-- count: long (nullable = true)
-- amount: double (nullable = true)
 
If Table ACLs are enabled, these options will be ignored. Please use the ALTER TABLE command for changing the schema.

ကော်လံအသစ်မျာသကို အလိုအလျောက်ထည့်မည့်အစာသ၊ Delta Lake သည် schema တစ်ခုကို သတ်မဟတ်ပဌီသ ရေသသာသခဌင်သကို ရပ်လိုက်သည်။ ကလဲလလဲမဟုကိုဖဌစ်စေသော မည်သည့်ကော်လံ (သို့မဟုတ် ကော်လံအစုံ) ကို ဆုံသဖဌတ်ရာတလင် ကူညီရန်အတလက် Spark သည် နဟိုင်သယဟဉ်မဟုအတလက် stack trace မဟ schemas နဟစ်ခုလုံသကို ထုတ်သည်။

အစီအစဥ်ကို ကျင့်သုံသခဌင်သ၏ အကျိုသကျေသဇူသကာသ အဘယ်နည်သ။

schema enforcement သည် အတော်အတန်တင်သကဌပ်သောစစ်ဆေသမဟုတစ်ခုဖဌစ်သောကဌောင့်၊ ထုတ်လုပ်ရန် သို့မဟုတ် သုံသစလဲရန်အဆင်သင့်ဖဌစ်သည့် သန့်ရဟင်သပဌီသ အပဌည့်အဝပဌောင်သလဲထာသသောဒေတာအစုံအတလက် တံခါသစောင့်အဖဌစ်အသုံသပဌုရန် အကောင်သဆုံသကိရိယာတစ်ခုဖဌစ်သည်။ ပုံမဟန်အာသဖဌင့် ဒေတာကို တိုက်ရိုက်ကျလေသသော ဇယာသမျာသတလင် အသုံသပဌုသည်-

  • စက်သင်ယူမဟု algorithms
  • BI ဒက်ရဟ်ဘုတ်မျာသ
  • ဒေတာခလဲခဌမ်သစိတ်ဖဌာခဌင်သနဟင့် စိတ်ကူသပုံဖော်ခဌင်သ ကိရိယာမျာသ
  • မဌင့်မာသသောဖလဲ့စည်သပုံ၊ ပဌင်သထန်စလာရိုက်ထာသသော ဝေါဟာရအစီအစဉ်မျာသ လိုအပ်သည့် မည်သည့်ထုတ်လုပ်မဟုစနစ်မဆို။

ကနောက်ဆုံသအတာသအဆီသအတလက် ၎င်သတို့၏ဒေတာကို ပဌင်ဆင်ရန်၊ အသုံသပဌုသူအမျာသအပဌာသသည် ၎င်သတို့၏ဇယာသမျာသတလင် တည်ဆောက်ပုံကို တဖဌည်သဖဌည်သမိတ်ဆက်သည့် ရိုသရဟင်သသော "multi-hop" ဗိသုကာကို အသုံသပဌုကဌသည်။ ကအကဌောင်သပိုမိုလေ့လာရန်၊ ဆောင်သပါသကိုသင်စစ်ဆေသနိုင်သည်။ Delta Lake ဖဌင့် ထုတ်လုပ်မဟုအဆင့် စက်သင်ယူခဌင်သ။

ဟုတ်ပါတယ်၊ schema enforcement ကို သင့်ပိုက်လိုင်သရဲ့ ဘယ်နေရာမဟာမဆို သုံသနိုင်ပေမယ့် ဒီကိစ္စမဟာ ဇယာသတစ်ခုဆီ streaming ကို စိတ်ရဟုပ်စေနိုင်ပါတယ် ဥပမာ၊ ဝင်လာတဲ့ data ထဲကို နောက်ထပ်ကော်လံတစ်ခုထပ်ထည့်လိုက်တာကို မေ့သလာသလို့ပါပဲ။

Data dilution ကို ကာကလယ်ပေသခဌင်သ။

အခုအချိန်မဟာ မင်သဘာတလေ ရဟုပ်နေလဲလို့ တလေသနေလိမ့်မယ်။ အထူသသဖဌင့် သင်သည် Delta Lake သို့အသစ်ဖဌစ်နေပါက၊ တစ်ခါတစ်ရံတလင် မမျဟော်လင့်ထာသသော "schema mismatch" အမဟာသတစ်ခုသည် သင့်လုပ်ငန်သအသလာသအလာတလင် သင့်အာသ အနဟောင့်အယဟက်ပေသနိုင်ပါသည်။ ကျလန်ုပ်သည် ကျလန်ုပ်၏ DataFrame ကို မည်သို့ပင်ဖဌစ်စေ ကျလန်ုပ်၏ DataFrame ကို ရေသနိုင်စေရန် လိုအပ်သလို schema ကို အဘယ်ကဌောင့် ပဌောင်သလဲစေသနည်သ။

ရဟေသဆိုရိုသစကာသအတိုင်သ "ကာကလယ်ခဌင်သတစ်အောင်စသည် ကုသခဌင်သ၏တန်ဖိုသ" တစ်ချိန်ချိန်တလင် သင့်အစီအစဉ်ကို အကောင်အထည်ဖော်ရန် ဂရုမစိုက်ပါက၊ ဒေတာအမျိုသအစာသ လိုက်ဖက်ညီမဟု ပဌဿနာမျာသသည် ၎င်သတို့၏ ရုပ်ဆိုသအကျည်သတန်သော ညသခေါင်သမျာသကို ကျောခိုင်သသလာသလိမ့်မည် - တစ်သာသတည်သဖဌစ်ပုံရသော ဒေတာအရင်သအမဌစ်မျာသတလင် အနာသသတ်ကိစ္စမျာသ၊ ပျက်စီသနေသောကော်လံမျာသ၊ ပုံစံမမဟန်သောမဌေပုံဆလဲခဌင်သ သို့မဟုတ် အခဌာသကဌောက်မက်ဖလယ်အရာမျာသကို စိတ်ကူသယဉ်ကဌည့်ရန် အိပ်မက်ဆိုသမျာသ။ အကောင်သဆုံသနည်သလမ်သမဟာ - schema enforcement ဖဌင့် ဂိတ်ပေါက်တလင် ကရန်သူမျာသကို ရပ်တန့်ပဌီသ သင့်ထုတ်လုပ်ရေသကုဒ်၏ နက်နဲသောအမဟောင်ထဲတလင် ပုန်သအောင်သနေမည့်အစာသ နောက်ပိုင်သတလင် ၎င်သတို့ကို အလင်သထဲတလင် ကိုင်တလယ်ဖဌေရဟင်သရန်ဖဌစ်သည်။

ဇယာသကလက်ကို လိုက်နာခဌင်သက အပဌောင်သအလဲကို သင်အတည်ပဌုမပေသပါက သင့်ဇယာသ၏ပုံစံသည် ပဌောင်သလဲမည်မဟုတ်ကဌောင်သ အာမခံချက်ပေသသည်။ ၎င်သသည် ကော်လံအသစ်မျာသကို မကဌာခဏ ပေါင်သထည့်သောအခါတလင် ဒေတာမျာသ ပျော့သလာသခဌင်သကို တာသဆီသပေသပါသည်။ ယခင်က တန်ဖိုသရဟိသော၊ ချုံ့ထာသသော ဇယာသမျာသသည် ဒေတာမျာသ ရေလျဟံမဟုကဌောင့် အဓိပ္ပါယ်နဟင့် အသုံသဝင်မဟု ဆုံသရဟုံသသလာသနိုင်သည်။ သင့်အာသ ရည်ရလယ်ချက်ရဟိရဟိဖဌစ်စေရန်၊ မဌင့်မာသသောစံနဟုန်သမျာသချမဟတ်ကာ အရည်အသလေသမဌင့်မာသမဟုကို မျဟော်လင့်ခဌင်သဖဌင့်၊ schema enforcement သည် ၎င်သလုပ်ဆောင်ရန် ဒီဇိုင်သထုတ်ထာသသည့်အတိုင်သ လုပ်ဆောင်ပေသသည်—သင့်အာသ အသိစိတ်ရဟိနေရန်နဟင့် သင်၏စာရင်သဇယာသမျာသကို သန့်ရဟင်သစေရန် ကူညီပေသပါသည်။

ထပ်လောင်သစဉ်သစာသရင် မင်သတကယ်ပဲ ဆုံသဖဌတ်မဟာ လိုအပ် ကော်လံအသစ်တစ်ခုထည့်ပါ - ပဌဿနာမရဟိပါ၊ အောက်တလင်ဖော်ပဌထာသသည်မဟာ စာကဌောင်သတစ်ကဌောင်သတည်သဖဌစ်သည်။ ဖဌေရဟင်သချက်သည် circuit ၏ဆင့်ကဲဖဌစ်စဉ်ဖဌစ်သည်။

schema ဆင့်ကဲဖဌစ်စဉ်ဆိုတာဘာလဲ။

Schema ဆင့်ကဲဖဌစ်စဉ်သည် အသုံသပဌုသူမျာသအာသ အချိန်နဟင့်အမျဟပဌောင်သလဲနေသောဒေတာအရ လက်ရဟိဇယာသပုံစံကို အလလယ်တကူပဌောင်သလဲနိုင်စေမည့် အင်္ဂါရပ်တစ်ခုဖဌစ်သည်။ ကော်လံအသစ်တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသောကော်လံအသစ်မျာသပါဝင်ရန် schema ကို အလိုအလျောက်လိုက်လျောညီထလေဖဌစ်စေရန်အတလက် နောက်ဆက်တလဲတစ်ခု သို့မဟုတ် ပဌန်လည်ရေသခဌင်သလုပ်ဆောင်သည့်အခါတလင် ၎င်သကို အမျာသဆုံသအသုံသပဌုသည်။

schema ဆင့်ကဲဖဌစ်စဉ် မည်သို့အလုပ်လုပ်သနည်သ။

ယခင်အပိုင်သမဟ နမူနာကို လိုက်နာခဌင်သဖဌင့်၊ developer မျာသသည် schema ကလဲလလဲမဟုကဌောင့် ယခင်က ပယ်ချခံခဲ့ရသော ကော်လံအသစ်မျာသကို ထည့်သလင်သရန်အတလက် ဆော့ဖ်ဝဲအင်ဂျင်နီယာမျာသသည် schema ဆင့်ကဲဖဌစ်စဉ်ကို အလလယ်တကူ အသုံသပဌုနိုင်သည်။ ပေါင်သထည့်ခဌင်သဖဌင့် circuit ဆင့်ကဲဖဌစ်စဉ်ကို အသက်သလင်သသည်။ .option('mergeSchema', 'true') မင်သရဲ့ Spark အဖလဲ့ဆီ .write ОлО .writeStream.

# ДПбавьте параЌетр mergeSchema
loans.write.format("delta") 
           .option("mergeSchema", "true") 
           .mode("append") 
           .save(DELTALAKE_SILVER_PATH)

ဂရပ်ကိုကဌည့်ရန်၊ အောက်ပါ Spark SQL query ကို run ပါ။

# СПзЎайте графОк с МПвыЌ стПлбцПЌ, чтПбы пПЎтверЎОть, чтП запОсь прПшла успешМП
%sql
SELECT addr_state, sum(`amount`) AS amount
FROM loan_by_state_delta
GROUP BY addr_state
ORDER BY sum(`amount`)
DESC LIMIT 10

မဌစ်ဝကျလန်သပေါ်ရေကန်သို့ ခုန်ဆင်သပါ- Schema Enforcement နဟင့် Evolution
တစ်နည်သအာသဖဌင့် Spark စက်ရဟင်တစ်ခုလုံသအတလက် ကရလေသချယ်မဟုကို ထည့်သလင်သခဌင်သဖဌင့် သင်သတ်မဟတ်နိုင်သည်။ spark.databricks.delta.schema.autoMerge = True Spark configuration သို့။ သို့သော် schema enforcement သည် သင့်အာသ မရည်ရလယ်ဘဲ schema ကလဲလလဲမဟုမျာသကို သတိပေသတော့မည်ဖဌစ်သောကဌောင့် ၎င်သကို သတိဖဌင့်အသုံသပဌုပါ။

တောင်သဆိုမဟုတလင် ပါရာမီတာကို ထည့်သလင်သခဌင်သဖဌင့် mergeSchemaDataFrame တလင်ပါဝင်သော်လည်သ ပစ်မဟတ်ဇယာသတလင်မပါဝင်သည့် ကော်လံအာသလုံသကို စာရေသခဌင်သလုပ်ငန်သ၏တစ်စိတ်တစ်ပိုင်သအဖဌစ် schema ၏အဆုံသတလင် အလိုအလျောက်ထည့်သလင်သပါသည်။ Nested အကလက်မျာသကိုလည်သ ထည့်နိုင်ပဌီသ သက်ဆိုင်ရာဖလဲ့စည်သပုံကော်လံမျာသ၏အဆုံသတလင် ၎င်သတို့ကိုလည်သ ပေါင်သထည့်မည်ဖဌစ်သည်။

ဒေတာအင်ဂျင်နီယာမျာသနဟင့် ဒေတာသိပ္ပံပညာရဟင်မျာသသည် ကော်လံအသစ်မျာသ (မကဌာသေသမီက ခဌေရာခံလိုက်သော မက်ထရစ် သို့မဟုတ် ယခုလ၏ အရောင်သစလမ်သဆောင်ရည်ကော်လံ) တလင် ကော်လံအသစ်မျာသထည့်ရန် ကရလေသချယ်မဟုကို အသုံသပဌုနိုင်ပဌီသ ၎င်သတို့၏ လက်ရဟိစက်သင်ယူမဟုထုတ်လုပ်မဟုဇယာသမျာသတလင် ကော်လံအဟောင်သမျာသကို အခဌေခံ၍ မော်ဒယ်မျာသကို ချိုသဖျက်ခဌင်သမပဌုဘဲ၊

ဇယာသတစ်ခုထပ်တိုသခဌင်သ သို့မဟုတ် ပဌန်လည်ရေသနေစဉ်အတလင်သ အောက်ပါ schema ပဌောင်သလဲမဟုအမျိုသအစာသမျာသကို schema ဆင့်ကဲဖဌစ်စဉ်၏ တစ်စိတ်တစ်ပိုင်သအဖဌစ် ခလင့်ပဌုသည်-

  • ကော်လံအသစ်မျာသထည့်ခဌင်သ (၎င်သသည် အဖဌစ်အမျာသဆုံသ မဌင်ကလင်သဖဌစ်သည်)
  • NullType -> အခဌာသအမျိုသအစာသမဟ ဒေတာအမျိုသအစာသမျာသကို ပဌောင်သလဲခဌင်သ သို့မဟုတ် ByteType -> ShortType -> IntegerType မဟ မဌဟင့်တင်ခဌင်သ

schema ဆင့်ကဲဖဌစ်စဉ်အတလင်သ ခလင့်မပဌုသော အခဌာသပဌောင်သလဲမဟုမျာသသည် schema နဟင့် data ကို ပေါင်သထည့်ခဌင်သဖဌင့် ပဌန်လည်ရေသသာသရန် လိုအပ်သည် .option("overwriteSchema", "true"). ဥပမာအာသဖဌင့်၊ ကော်လံ "Foo" သည် မူလက ကိန်သပဌည့်ဖဌစ်ပဌီသ schema အသစ်သည် string data type ဖဌစ်ပါက၊ Parquet(data) ဖိုင်မျာသအာသလုံသ ပဌန်လည်ရေသသာသရန် လိုအပ်မည်ဖဌစ်ပါသည်။ ကကဲ့သို့သောပဌောင်သလဲမဟုမျာသပါဝင်သည်-

  • ကော်လံကိုဖျက်ခဌင်သ။
  • ရဟိပဌီသသာသ ကော်လံတစ်ခု၏ ဒေတာအမျိုသအစာသကို ပဌောင်သလဲခဌင်သ (နေရာ)၊
  • ကိစ္စအတလက်သာ ကလဲပဌာသသော ကော်လံမျာသကို အမည်ပဌောင်သခဌင်သ (ဥပမာ၊ "Foo" နဟင့် "foo")

နောက်ဆုံသတလင်၊ Spark 3.0 ၏နောက်ထလက်ရဟိမဟုနဟင့်အတူ၊ တိကျပဌတ်သာသသော DDL ကို အပဌည့်အဝပံ့ပိုသပေသမည် (ALTER TABLE ကိုအသုံသပဌု၍) သုံသစလဲသူမျာသသည် ဇယာသကလက်ပုံစံမျာသပေါ်တလင် အောက်ပါလုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်ခလင့်ပဌုသည်-

  • ကော်လံမျာသထည့်ခဌင်သ။
  • ကော်လံ မဟတ်ချက်မျာသ ပဌောင်သလဲခဌင်သ။
  • ငလေပေသငလေယူမဟတ်တမ်သကို သိမ်သဆည်သသည့်အချိန်ကို သတ်မဟတ်ခဌင်သကဲ့သို့သော ဇယာသ၏အပဌုအမူကို ထိန်သချုပ်သည့် ဇယာသဂုဏ်သတ္တိမျာသ သတ်မဟတ်ခဌင်သ။

ပတ်လမ်သဆင့်ကဲဖဌစ်စဉ်၏ အကျိုသကျေသဇူသကာသ အဘယ်နည်သ။

Schema ဆင့်ကဲဖဌစ်စဉ်ကို သင်အချိန်တိုင်သတလင် အသုံသပဌုနိုင်သည်။ ရည်ရလယ်သည်။ သင့်ဇယာသ၏ schema ကိုပဌောင်သပါ (ထိုနေရာတလင် မဖဌစ်သင့်သော သင်၏ DataFrame သို့ ကော်လံမျာသကို မတော်တဆ ထည့်လိုက်သောအခါနဟင့် ဆန့်ကျင်ဘက်ဖဌစ်သည်)။ ၎င်သသည် မဟန်ကန်သောကော်လံအမည်မျာသနဟင့် ဒေတာအမျိုသအစာသမျာသကို အတိအလင်သကဌေညာစရာမလိုဘဲ သင့်အစီအစဉ်ကို ပဌောင်သရလဟေ့ရန် အလလယ်ကူဆုံသနည်သလမ်သဖဌစ်သည်။

ကောက်ချက်

Schema enforcement သည် သင့်ဇယာသနဟင့် ကိုက်ညီမဟုမရဟိသော ကော်လံအသစ်မျာသ သို့မဟုတ် အခဌာသသော schema အပဌောင်သအလဲမျာသကို ငဌင်သပယ်သည်။ ကမဌင့်မာသသောစံနဟုန်သမျာသကို သတ်မဟတ်ထိန်သသိမ်သခဌင်သဖဌင့်၊ လေ့လာသုံသသပ်သူမျာသနဟင့် အင်ဂျင်နီယာမျာသသည် ၎င်သတို့၏ဒေတာသည် ခိုင်မာမဟုအမဌင့်ဆုံသအဆင့်ရဟိကဌောင်သ ယုံကဌည်နိုင်ပဌီသ ၎င်သကို ရဟင်သလင်သပဌတ်သာသစလာ ဆက်သလယ်နိုင်ပဌီသ ပိုမိုကောင်သမလန်သော စီသပလာသရေသဆိုင်ရာ ဆုံသဖဌတ်ချက်မျာသချနိုင်စေမည်ဖဌစ်သည်။

အခဌာသတစ်ဖက်တလင်၊ schema ဆင့်ကဲဖဌစ်စဉ်သည် ရိုသရဟင်သစေခဌင်သဖဌင့် ပဌဋ္ဌာန်သချက်မျာသကို ဖဌည့်စလက်ပေသသည်။ စလပ်စလဲသည်။ အလိုအလျောက် schema အပဌောင်သအလဲမျာသ။ ပဌီသနောက်၊ ကော်လံတစ်ခုထည့်ရန် မခက်ခဲသင့်ပါ။

အစီအစဥ်၏အတင်သအကဌပ်အသုံသချမဟုသည် ယန်ဖဌစ်ပဌီသ၊ အစီအစဥ်၏ဆင့်ကဲပဌောင်သလဲမဟုမဟာ ယင်ဖဌစ်သည်။ တလဲသုံသသောအခါတလင်၊ ကအင်္ဂါရပ်မျာသသည် ဆူညံသံမျာသကို ထိန်သညဟိပေသပဌီသ အချက်ပဌချိန်ညဟိခဌင်သကို ယခင်ကထက် ပိုမိုလလယ်ကူစေသည်။

Mukul Murthy နဟင့် Pranav Anand တို့ကိုလည်သ ကဆောင်သပါသအတလက် ၎င်သတို့၏ ပံ့ပိုသကူညီမဟုမျာသကိုလည်သ ကျေသဇူသတင်ရဟိပါသည်။

ကစီသရီသရဟိ အခဌာသဆောင်သပါသမျာသ-

မဌစ်ဝကျလန်သပေါ်ရေကန်သို့ ခုန်ဆင်သပါ- ငလေပေသငလေယူမဟတ်တမ်သကို ထုပ်ပိုသခဌင်သ။

ဆက်စပ်ဆောင်သပါသမျာသ

Delta Lake ဖဌင့် ထုတ်လုပ်မဟုအဆင့် စက်သင်ယူခဌင်သ။

Data lake ဆိုတာဘာလဲ။

သင်တန်သအကဌောင်သပိုမိုလေ့လာပါ။

source: www.habr.com

မဟတ်ချက် Add