ืืขืื, ืืืืจ! ืืื ืคืึธืจืฉืืขืื ืฆื ืืืื ืืคืืขืจืงืืึทืืงืืึทื ืึท ืืืืขืจืืขืฆืื ื ืคืื ืืขื ืึทืจืืืงื
ืืึทืื, ืืื ืืื ืืืขืจ ืืขืจืคืึทืจืื ื, ืืื ืงืขืกืืืืขืจ ืึทืงืืืืืึทืืืืืื ื ืืื ืืืืึทืืืืื ื. ืฆื ืืึทืืื ืืื, ืืื ืืืขืจ ืืืึทืกืืืง ืืึธืืขืืก ืคืื ืืขืจ ืืืขืื ืืืื ืึทืืึทืคึผื ืฆื ื ืืึทืข ืืึทืื, ืขืืืขืืข ืคืื โโโโืืืึธืก ืึทื ืืืึทืืื ื ืืึทืข ืืืืขื ืฉืึทื ื - ื ืืึทืข ืืืขืื ืฆื ืึธืืกืขืจืืืืจื ืืืื ืืืึธืก ืืืจ ืืึธืื ืงืืื ืืขืืึทื ืง ืืืขืื ืคืจืืขืจ. ืื ืืขื ืืึทื ืืึธืืขืืก ืืขื ืขื ื ืืฉื ืคืื ืึทื ืืขืจืฉ ืคืื ืื ืืืฉ ืกืืฉืขืืึทืก ืืืึธืก ืืึทืฉืืืกื ืืื ืืืจ ืงืึทืืึทืืขืจืืื ืืื ืคึผืจืึธืฆืขืก ื ืืึทืข ืืื ืคึฟืึธืจืืึทืฆืืข.
ืืึธืก ืืจืขื ืื ืืื ืื ืฆื ืื ืึทืจืืืกืืขืื ืคืื ืกืืฉืขืืึท ืคืึทืจืืืึทืืืื ื. ืืื ืืขืฉืขืคื ืืฉืึทืืึทื ืืืฉืื ืืื ืจืขืงืืืืจืขืืขื ืฅ ืืืืฉื ืืืืขืจ ืฆืืึทื, ืึทืืื ืืืื ืื ืกืืจืืงืืืจ ืคืื ืืืื ืืึทืื. ืืขืืืึท ืืืืง ืืืื ืขืก ืืจืื ื ืฆื ืืึทืงืขื ืขื ื ืืึทืข ืืขืืฉืขืจืืึทื ืฅ ืืื ืืึทืื ืขื ืืขืจืื ืืขื. ืืืืขืจื ืืึธืื ืฆืืืจืื ืฆื ืคึผืฉืื ืกืขืืึทื ืืืงืก ืฆื ืคืืจื ืืืืขืจ ืืืฉ ืกืืฉืขืืึทืก. ืื ืืืฉืืจืื ืึทืจืืึทื ื ืขืืขื ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื, ืืืึธืก ืคึผืจืึทืืขืงืฅ ืืืืขืจื ืคืื ืึทื ืื ืืขื ืฉืึทื ืึทื ืคึผืึทืืืืื ื ืืืืขืจ ืืืฉื ืืื ืขืจืจืึธืจืก ืึธืืขืจ ืืื ืืืืืง ืืึทืื, ืืื ืกืืฉืขืืึท ืขืืืึทืืืฉืึทื, ืืืึธืก ืึทืืึทืื ื ืืึท ืฉืคืืืื ืคืื ืืืขืจืืคืื ืืึทืื ืฆื ืืืื ืืืืืึธืืึทืืืฉ ืฆืืืขืืขืื ืฆื ืื ืฆืื ืขืืขื ืืึธืืงืืืฉืึทื ื. ืืื ืืขื ืึทืจืืืงื, ืืืจ ืืืขืื ืื ืืขืจืืืงื ืืื ืืืคึผืขืจ ืืื ืื ื ืืฆื ืคืื ืื ืืืฉืืจืื.
ืคืืจืฉืืื ื ืืึทืืืข ืกืืฉืขืืึทืก
ืืขืืขืจ ืืึทืืึทืคืจืึทืืข ืืื ืึทืคึผืึทืืฉื ืกืคึผืึทืจืง ืึผืืื ืึท ืกืืขืืข ืืืึธืก ืืืคืืื ื ืื ืคืึธืจืขื ืคืื ืื ืืึทืื, ืึทืืึท ืืื ืืึทืื ืืืืคึผืก, ืฉืคืืืื ืืื ืืขืืึทืืึทืืึท. ืืื Delta Lake, ืื ืืืฉ ืกืืฉืขืืึท ืืื ืกืืึธืจื ืืื JSON ืคึฟืึธืจืืึทื ืืื ืื ืืจืึทื ืกืึทืงืืืึธื ืงืืึธืฅ.
ืืืึธืก ืืื ืกืืขืืข ืขื ืคืึธืจืกืืึทื ื?
ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื, ืืืื ืืืงืื ื ืืื ืกืืฉืขืืึท ืืืึทืืืืึทืืืึธื, ืืื ืึท ืืืืขืจืืืื ืืขืงืึทื ืืืึทื ืืื ืืขืืืึท ืืืืง ืืืึธืก ืื ืฉืืจื ืืึทืื ืงืืืึทืืืืขื ืืืจื ืจืืืืฉืขืงืืื ื ืจืขืงืึธืจืืก ืืืึธืก ืืึธื ื ืื ืืืืึทืื ืื ืืืฉ ืกืืฉืขืืึท. ืืื ืื ืืึทืืขืืึธืกืืข ืืื ืื ืคืจืึธื ื ืฉืจืืึทืืืืฉ ืคืื ืึท ืคืึธืืงืก ืจืขืืขืจืืืึทืฆืืข-ืืืืื ืจืขืกืืึธืจืึทื, ืื ืืฉืขืงืก ืฆื ืืขืืขืจ ืืืึทื ืคืื ืืึทืื ืืจืืื ืืื ืื ืืืฉ ืืื ืืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืจืฉืืื ืคืื ืืขืจืืืึทืจื ืฉืคืืืื (ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืฆื ืขืก ืืื ืึท "ืจืขืืขืจืืืืืฉืึทื" ืคึฟืึทืจ ืืขืืขืจ ืคืื ืืื ), ืืื ืคืืจืืืืจืคื ืงืืื ืจืขืงืึธืจืืก ืืื ืฉืคืืืื ืืืึธืก ืืขื ืขื ื ืืฉื ืืื ืืขืจ ืจืฉืืื.
ืืื ืืื ืกืืขืืข ืขื ืคืึธืจืกืืึทื ื ืึทืจืืขื?
ืืขืืืึท ืืืืง ื ืืฆื ืกืืฉืขืืึท-ืืืืฃ-ืฉืจืืื ืงืึธื ืืจืึธืืืจืื ื, ืืืึธืก ืืืื ืึทื ืึทืืข ื ืืึท ืฉืจืืืื ืฆื ืื ืืืฉ ืืขื ืขื ืึธืคึผืืขืฉืืขืื ืคึฟืึทืจ ืงืึทืืคึผืึทืืึทืืืืึทืื ืืื ืื ืฆืื ืืืฉ ืกืืฉืขืืึท ืืื ืฉืจืืืื ืฆืืื. ืืืื ืื ืกืืขืืข ืืื ืกืชืืจื, Delta Lake ืึทืืึธืจื ืื ืืจืึทื ืกืึทืงืืืึธื ืืขืืึทืืจืข (ืงืืื ืืึทืื ืืขื ืขื ืืขืฉืจืืื) ืืื ืจืืืืึทื ืึท ืืืกื ืขื ืฆื ืืขืื ืฆื ืืืืกื ืื ืืึทื ืืฆืขืจ ืคืื ืื ืื ืงืึทื ืกืืกืืึทื ืก.
Delta Lake ื ืืฆื ืื ืคืืืืขื ืืข ืึผืืืื ืฆื ืืึทืฉืืืกื ืฆื ืึท ืจืขืงืึธืจื ืืื ืงืึทืืคึผืึทืืึทืืึทื ืืื ืึท ืืืฉ. ืฉืจืืืืืึทืืืข ืืึทืืึทืคืจืึทืืข:
- ืงืขื ืขื ื ืืฉื ืึทื ืืืึทืืื ื ืึธื ืฉืคืืืื ืืืึธืก ืืขื ืขื ื ืืฉื ืืื ืื ืกืืขืืข ืคืื โโืื ืฆืื ืืืฉ. ืงืึธื ืืืขืจืกืขืื, ืึทืืฅ ืืื ืืื ืืืื ืื ืื ืงืึทืืื ื ืืึทืื ืืึธื ื ืื ืึทื ืืืึทืืื ืืขืืึทืืจืข ืึทืืข ืฉืคืืืื ืคืื ืื ืืืฉ - ืื ืฉืคืืืื ืืืขื ื ืึธืจ ืืืื ืึทืกืืื ื ื ืึทื ืืืึทืืืขืก.
- ืงืขื ืขื ื ืืฉื ืืึธืื ืืืึทื ืืึทืื ืืืืคึผืก ืืืึธืก ืืขื ืขื ืึทื ืืขืจืฉ ืคืื ืื ืืึทืื ืืืืคึผืก ืคืื ืื ืฉืคืืืื ืืื ืื ืฆืื ืืืฉ. ืืืื ืืขืจ ืฆืื ืืืฉ ืืืึทื ืึผืืื ืกืืจืื ืืืืคึผืข ืืึทืื, ืึธืืขืจ ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืืึทื ืืื ืื ืืึทืืึทืคืจืึทืืข ืึผืืื ืื ืืขืืขืจืืืคึผืข ืืึทืื, ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื ืืืขื ืืืึทืจืคื ืึท ืืืกื ืขื ืืื ืคืึทืจืืืึทืื ืื ืฉืจืืึทืื ืึธืคึผืขืจืึทืฆืืข.
- ืงืขื ืขื ื ืืฉื ืึทื ืืืึทืืื ืืืึทื ื ืขืืขื ืืืึธืก ืืขื ืขื ืึทื ืืขืจืฉ ืืืืื ืืื ืคืึทื. ืืขื ืืืื ืึทื ืืืจ ืงืขื ืขื ื ืืฉื ืืึธืื ืฉืคืืืื ืืขืืืืกื 'ืคืึธืึธ' ืืื 'ืคื' ืืืคืืื ื ืืื ืืขืจ ืืขืืืืงืขืจ ืืืฉ. ืืฉืขืช ืกืคึผืึทืจืง ืงืขื ืขื ืืืื ืืขืืืืื ื ืืื ืคืึทื-ืฉืคึผืืจืขืืืืืง ืึธืืขืจ ืคืึทื-ืื ืกืขื ืกืืืืื (ืคืขืืืงืืึทื) ืืึธืืข, ืืขืืืึท ืืืืง ืืื ืคืึทื-ืคึผืจืึทืืขืจืืืื ื ืึธืืขืจ ืืื ืื ืกืขื ืกืืืืื ืืื ืื ืกืืฉืขืืึท ืกืืึธืจืืืืฉ. ืคึผืึทืจืงืื ืืื ืคืึทื-ืฉืคึผืืจืขืืืืืง ืืืขื ืกืืึธืจืื ื ืืื ืฆืืจืืงืงืืืขื ืืืึทื ืืื ืคึฟืึธืจืืึทืฆืืข. ืฆื ืืืกืืืืื ืืขืืืขื ืขืจืจืึธืจืก, ืืึทืื ืงืึธืจืืคึผืฆืืข ืึธืืขืจ ืืึทืื ืึธื ืืืขืจ (ืขืคึผืขืก ืืืจ ืคึผืขืจืกื ืึทืื ืืงืกืคึผืืจืืึทื ืกื ืืื 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 ืืืคึผืึธืืืึทื ืึท ืกืืขืืข ืืื ืกืืึทืคึผืก ืฉืจืืืื. ืฆื ืืขืืคื ืืึทืฉืืืืขื ืืืึธืก ืืืึทื (ืึธืืขืจ ืืึทื ื ืคืื ืฉืคืืืื) ืืื ืงืึธืืื ื ืื ืืืกืงืจืขืคึผืึทื ืกื, ืกืคึผืึทืจืง ืึทืืืคึผืืฅ ืืืืืข ืกืืฉืขืืึทืก ืคืื ืื ืกืืึทืง ืฉืคึผืืจ ืคึฟืึทืจ ืคืึทืจืืืืึทื.
ืืืึธืก ืืื ืื ื ืืฅ ืคืื ืขื ืคืึธืจืกืื ื ืึท ืกืืขืืข?
ืืืืึทื ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื ืืื ืึท ืคืขืจืื ืกืืจืื ืืืฉืึทื ื ืืฉืขืง, ืขืก ืืื ืึท ืืืกืืขืฆืืืื ื ืืขืฆืืึทื ืฆื ื ืืฆื ืืื ืึท ืืืืขืจ ืืืคึผืขืจ ืฆื ืึท ืจืืื, ืืึธืจ ืคืืจืืืื ืืืขื ืืึทืื ืฉืืขืื ืืืึธืก ืืื ืืจืืื ืคึฟืึทืจ ืคึผืจืึธืืืงืฆืืข ืึธืืขืจ ืงืึทื ืกืึทืืฉืึทื. ืืืคึผืืงืึทืืื ืืขืืืขื ืื ืฆื ืืืฉื ืืืึธืก ืืืืื ืคืืืขืจ ืืึทืื:
- ืืึทืฉืื ืืขืจื ืขื ืึทืืืขืจืืืึทืื
- BI ืืึทืฉืืึธืจืื
- ืืึทืืึท ืึทื ืึทืืืืืงืก ืืื ืืืืืฉืืืึทืืึทืืืืฉืึทื ืืืฉืืจืื
- ืงืืื ืคึผืจืึธืืืงืฆืืข ืกืืกืืขื ืืืึธืก ืจืืงืืืืืขืจื ืืขืืกื ืกืืจืึทืงืืฉืขืจื, ืฉืืืจืง ืืืืคึผื ืกืขืืึทื ืืืง ืกืืฉืขืืึทืก.
ืฆื ืฆืืืจืืืื ืืืืขืจ ืืึทืื ืคึฟืึทืจ ืืขื ืืขืฆื ืืขืจืืึทื, ืคืืืข ืืืืขืจื ื ืืฆื ืึท ืคึผืฉืื "ืืึทืืื-ืืึธืคึผืงืขื" ืึทืจืงืึทืืขืงืืฉืขืจ ืืืึธืก ืืืกืืขืืืืืึทื ืื ืืจืึทืืืกืื ืกืืจืืงืืืจ ืืื ืืืืขืจ ืืืฉื. ืฆื ืืขืจื ืขื ืืขืจ ืืืขืื ืืขื, ืืืจ ืงืขื ืขื ืืืืขื ืขื ืืขื ืึทืจืืืงื
ืคืื ืงืืจืก, ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื ืงืขื ืขื ืืืื ืืขืืืืื ื ืขืจืืขืฅ ืืื ืืืื ืจืขืจื - ืืื ืืข, ืึธืืขืจ ืืขืืขื ืงืขื ืึทื ืกืืจืืืื ื ืฆื ืึท ืืืฉ ืืื ืืขื ืคืึทื ืงืขื ืขื ืืืื ืคืจืึทืกืืจืืืืื ื ืืืืึทื, ืืืฉื, ืืืจ ืืึธื ืคืืจืืขืกื ืึทื ืืืจ ืืึธื ืฆืืืขืืขืื ืื ืื ืืขืจ ืืืึทื ืฆื ืื ืื ืงืึทืืื ื ืืึทืื.
ืคึผืจืขืืืขื ืืื ื ืืึทืื ืืืืืืฉืึทื
ืืืฆื ืืืจ ืงืขื ืืืื ืืืึทื ืืขืจืื ื, ืืืึธืก ืก ืึทืืข ืื ืืึทืจืขืจืึทื ืืืขืื? ื ืึธื ืึทืืข, ืืื ืึท ืืืืืขืจืืื "ืกืืฉืขืืึท ืืืกืืึทืืฉ" ืืขืืช ืงืขื ืขื ืืจืืืกืืขื ืืืจ ืืื ืืืื ืืืึธืจืงืคืืึธืื, ืกืคึผืขืฆืืขื ืืืื ืืืจ ืืขื ื ื ืืึท ืืื ืืขืืืึท ืืืืง. ืคืืจืืืืก ื ืืฉื ื ืึธืจ ืืึธืื ืื ืกืืฉืขืืึท ืืืืฉื ืืื ืืืจืฃ ืึทืืื ืืื ืงืขื ืขื ืฉืจืืึทืื ืืืื ืืึทืืึทืคืจืึทืืข ืงืืื ืขื ืื ืืืึธืก?
ืืื ืืขืจ ืึทืื ืืืื ืืืื, "ืึท ืืื ืก ืคืื ืคืึทืจืืืืื ื ืืื ืืืขืจื ืึท ืคืื ื ืคืื ืืืืื." ืืื ืขืืืขืืข ืคืื ื, ืืืื ืืืจ ืืึธื ื ืื ื ืขืืขื ืงืขืืจ ืฆื ืืืจืืคืืจื ืืืื ืกืืขืืข, ืืึทืื ืืืคึผ ืงืึทืืคึผืึทืืึทืืืืึทืื ืืฉืื ืืืขื ืืขืจืฆืืขื ืืืืขืจ ืืืขืก ืงืขืค - ืคึผืึธื ืขื ืืึธืืืึทืืืฉืื ืืึทืก ืจืื ืืึทืื ืงืืืืื ืงืขื ืึทื ืืืึทืืื ืืจืขื ืงืึทืกืขืก, ืคืืจืืืจืื ืฉืคืืืื, ืืึทืืคืึธืจืืขื ืืึทืคึผืื ืื ืึธืืขืจ ืื ืืขืจืข ืกืงืขืจื ืืื ืื ืฆื ืืืื ืืืขืื ืืื ื ืืืืืขืจื. ืืขืจ ืืขืกืืขืจ ืฆืืืึทื ื ืืื ืฆื ืืึทืืื ืื ืคืืื ื ืืื ืื ืืืืขืจ - ืืื ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื - ืืื ืืึทื ืืืขื ืืื ืืื ืืื ืื ืืืื, ืืื ืืื ืฉืคึผืขืืขืจ ืืืขื ืืื ืึธื ืืืืื ืืขืจืงืื ื ืืื ืื ืืื ืงื ืืืคืขื ืืฉื ืคืื ืืืื ืคึผืจืึธืืืงืฆืืข ืงืึธื.
ืขื ืคืึธืจืกืื ื ืึท ืกืืฉืขืืึท ืืื ืืืจ ืื ืคืืจืืืืขืจืื ื ืึทื ืืืื ืืืฉ ืก ืกืืฉืขืืึท ืืืขื ื ืืฉื ืืืืฉื ืกืืึทืื ืืืจ ืึทืคึผืจืืื ืื ืขื ืืขืจืื ื. ืืึธืก ืคึผืจืืืืขื ืฅ ืืึทืื ืืืืืืฉืึทื, ืืืึธืก ืงืขื ืคึผืึทืกืืจื ืืืขื ื ืืึทืข ืฉืคืืืื ืืขื ืขื ืืืกืืฃ ืึทืืื ืึธืคื ืึทื ืืื ืึทืืขืจ ืืืขืจืืคืื, ืงืึทืืคึผืจืขืกื ืืืฉื ืคืึทืจืืืจื ืืืืขืจ ืืืึทืืฉ ืืื ื ืืฆืืงืืื ืจืขืื ืฆื ืืึทืื ืื ืึทื ืืืืฉืึทื. ืืืจื ืขื ืงืขืจืืืืฉืื ื ืืืจ ืฆื ืืืื ืื ืืขื ืฉืึทื ืึทื, ืฉืืขืื ืืืื ืกืืึทื ืืึทืจืืก ืืื ืืขืจืืืึทืจืื ืืืื ืงืืืึทืืืืขื, ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื ืืื ืคึผืื ืงื ืืืึธืก ืขืก ืืื ืืืืืื ื ืฆื ืืึธื - ืืขืืคึผืก ืืืจ ืฆื ืืืืืื ืงืึทื ืฉืืขื ืฉืึทืก ืืื ืจืืื ืกืคึผืจืขืืฉืืฅ.
ืืืื ืืืืฃ ืืืืึทืืขืจ ืืึทืืจืึทืืืื ื ืืืจ ืืึทืฉืืืกื ืึทื ืืืจ ืืึทืงืข ืืึทืจืคึฟื ืฆื ืืืืื ืึท ื ืืึทืข ืืืึทื - ืงืืื ืคึผืจืึธืืืขื, ืืื ืื ืืื ืึท ืืืื-ืฉืืจื ืคืึทืจืจืืืื. ืื ืืืืืื ื ืืื ืื ืขืืืึธืืืฆืืข ืคืื โโืื ืงืจืืึทื!
ืืืึธืก ืืื ืกืืฉืขืืึท ืขืืืึทืืืฉืึทื?
ืกืืฉืขืืึท ืขืืืึทืืืฉืึทื ืืื ืึท ืฉืืจืื ืืืึธืก ืึทืืึทืื ื ืืฆืขืจืก ืฆื ืืืืื ืืืืฉื ืื ืงืจืึทื ื ืืืฉ ืกืืฉืขืืึท ืืืื ืืึทืื ืืืึธืก ืขื ืืขืจืื ืืขื ืืืืขืจ ืฆืืึทื. ืขืก ืืื ืืขืจืกื ืึธืคื ืืขื ืืฆื ืืืขื ืคึผืขืจืคืึธืจืืื ื ืึท ืฆืืืขืื ืึธืืขืจ ืจืืจืืื ืึธืคึผืขืจืึทืฆืืข ืฆื ืืืืืึธืืึทืืืฉ ืึทืืึทืคึผื ืื ืกืืฉืขืืึท ืฆื ืึทืจืืึทื ื ืขืืขื ืืืื ืขืจ ืึธืืขืจ ืืขืจ ื ืืึทืข ืฉืคืืืื.
ืืื ืืื ืกืืฉืขืืึท ืขืืืึทืืืฉืึทื ืึทืจืืขื?
ื ืึธื ืืขื ืืืึทืฉืคึผืื ืคืื ืื ืคืจืืขืจืืืงืข ืึธืคึผืืืืืื ื, ืืขืืืขืืึธืคึผืขืจืก ืงืขื ืขื ืืืืื ื ืืฆื ืกืืฉืขืืึท ืขืืืึทืืืฉืึทื ืฆื ืืืืื ื ืืึทืข ืฉืคืืืื ืืืึธืก ืืขื ืขื ืคืจืืขืจ ืคืืจืืืืจืคื ืจืขืื ืฆื ืกืืฉืขืืึท ืื ืงืึทื ืกืืกืืึทื ืกื. ืงืจืืึทื ืขืืืึธืืืฆืืข ืืื ืึทืงืืืืืืืืื ืืืจื ืึทืืื ื .option('mergeSchema', 'true')
ืฆื ืืืื ืกืคึผืึทืจืง ืืึทื ืฉืึทืคึฟื .write ะธะปะธ .writeStream.
# ะะพะฑะฐะฒััะต ะฟะฐัะฐะผะตัั mergeSchema
loans.write.format("delta")
.option("mergeSchema", "true")
.mode("append")
.save(DELTALAKE_SILVER_PATH)
ืฆื ืืขื ืื ืืจืึทืคืืง, ืืืืคื ืื ืคืืืืขื ืืข Spark SQL ืึธื ืคึฟืจืขื
# ะกะพะทะดะฐะนัะต ะณัะฐัะธะบ ั ะฝะพะฒัะผ ััะพะปะฑัะพะผ, ััะพะฑั ะฟะพะดัะฒะตัะดะธัั, ััะพ ะทะฐะฟะธัั ะฟัะพัะปะฐ ััะฟะตัะฝะพ
%sql
SELECT addr_state, sum(`amount`) AS amount
FROM loan_by_state_delta
GROUP BY addr_state
ORDER BY sum(`amount`)
DESC LIMIT 10
ืึทืืืขืจื ืึทืืืืืขืื, ืืืจ ืงืขื ืขื ืฉืืขืื ืืขื ืึธืคึผืฆืืข ืคึฟืึทืจ ืื ืืื ืฆืข ืกืคึผืึทืจืง ืกืขืกืืข ืืืจื ืึทืืื ื spark.databricks.delta.schema.autoMerge = True
ืฆื ืื Spark ืงืึทื ืคืืืืขืจืืืฉืึทื. ืึธืืขืจ ื ืืฆื ืืขื ืืื ืืืึธืจืขื ืขื, ืืืืึทื ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื ืืืขื ื ืื ืืขืจ ืคืืื ืง ืืืจ ืฆื ืึทื ืื ืืขื ืฉืึทื ืึทื ืกืืฉืขืืึท ืื ืืงืึทื ืกืืกืืขื ืกืื.
ืืืจื ืึทืจืืึทื ืืขืจืขืื ื ืืขื ืคึผืึทืจืึทืืขืืขืจ ืืื ืื ืืงืฉื mergeSchema
, ืึทืืข ืฉืคืืืื ืืืึธืก ืืขื ืขื ืคืึธืจืฉืืขืื ืืื ืื ืืึทืืึทืคืจืึทืืข ืึธืืขืจ ื ืืฉื ืืื ืื ืฆืื ืืืฉ ืืขื ืขื ืืืืืึธืืึทืืืฉ ืฆืืืขืืขืื ืฆื ืื ืกืืฃ ืคืื ืื ืกืืฉืขืืึท ืืื ืืืื ืคืื ืึท ืฉืจืืึทืื ืืจืึทื ืกืึทืงืืืึธื. ื ืขืกืืขื ืคืขืืืขืจ ืงืขื ืขื ืืืื ืืืื ืืืกืืฃ ืืื ืื ืืืขื ืืืื ืืืื ืืืกืืฃ ืฆื ืื ืกืืฃ ืคืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืกืืจืืงืืืจ ืฉืคืืืื.
ืืึทืืข ืขื ืืืฉืึทื ืืจื ืืื ืืึทืื ืกืืืึทื ืืืก ืงืขื ืขื ื ืืฆื ืืขื ืึธืคึผืฆืืข ืฆื ืืืืื ื ืืึท ืฉืคืืืื (ืืึธืืขืจ ืึท ืืขืฆืื ืก ืืจืึทืงื ืืขืืจืืง ืึธืืขืจ ืืขื ืืืืฉ ืก ืคืืจืงืืืคืื ื ืคืึธืจืฉืืขืืื ื ืืืึทื) ืฆื ืืืืขืจ ืืืืืกืืื ื ืืึทืฉืื ืืขืจื ืขื ืคึผืจืึธืืืงืฆืืข ืืืฉื ืึธื ืืจืืืงืื ื ืืืืืกืืื ื ืืึธืืขืืก ืืืืืจื ืืืืฃ ืึทืื ืฉืคืืืื.
ืื ืคืืืืขื ืืข ืืืืคึผืก ืคืื ืกืืฉืขืืึท ืขื ืืขืจืื ืืขื ืืขื ืขื ืขืจืืืืื ืืื ืึท ืืืื ืคืื ืกืืฉืขืืึท ืขืืืึทืืืฉืึทื ืืขืฉืึทืก ืึท ืืืฉ ืึทืืืฉืึทื ืึธืืขืจ ืจืืจืืื:
- ืึทืืื ื ื ืืึทืข ืฉืคืืืื (ืืึธืก ืืื ืื ืืขืจืกื ืคึผืจืึธืกื ืกืฆืขื ืึทืจ)
- ืืฉืึทื ืืื ื ืืึทืื ืืืืคึผืก ืคืื NullType -> ืงืืื ืื ืืขืจืข ืืืคึผ ืึธืืขืจ ืคึผืจืึทืืึธืืืื ื ืคึฟืื ByteType -> ShortType -> IntegerType
ืื ืืขืจืข ืขื ืืขืจืื ืืขื ืืืึธืก ืืขื ืขื ื ืืฉื ืขืจืืืืื ืืื ืกืืฉืขืืึท ืขืืืึธืืืฆืืข ืืึทืจืคื ืึทื ืื ืกืืฉืขืืึท ืืื ืืึทืื ืืขื ืขื ืจืืจืืืึทื ืืืจื ืึทืืื ื .option("overwriteSchema", "true")
. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืื ืืขื ืคืึทื ืืืขื ืื ืืืึทื "ืคืึธืึธ" ืืื ืืขืืืขื ืขืจืืืืฉื ืึทืื ืึท ืื ืืึทืืืฉืขืจ ืืื ืื ื ืืึทืข ืกืืฉืขืืึท ืืื ืืขืืืขื ืึท ืฉืืจืืงื ืืึทืื ืืืคึผ, ืึทืืข ืคึผืึทืจืงืืืขื (ืืึทืืึท) ืืขืงืขืก ืืืึธืื ืืืื ืจืืจืืืึทื. ืึทืืึท ืขื ืืขืจืื ืืขื ืึทืจืืึทื ื ืขืืขื:
- ืืืืกืืขืงื ืึท ืืืึทื
- ืืฉืึทื ืืื ื ืื ืืึทืื ืืืคึผ ืคืื ืึท ืืืืืกืืื ื ืืืึทื (ืืื-ืึธืจื)
- ืจืื ืืืืื ื ืฉืคืืืื ืืืึธืก ืึทื ืืขืจืฉ ืืืึทื ืืืืื ืืื ืคืึทื (ืืืฉื, "ืคืึธืึธ" ืืื "ืคืึธืึธ")
ืฆืื ืกืืฃ, ืืื ืืขืจ ืืืืึทืืขืจ ืืขืืืื ื ืคืื Spark 3.0, ืืงืกืคึผืืืกืึทื DDL ืืืขื ืืืื ืืึธืจ ืืขืฉืืืฆื (ื ืืฆื ALTER TABLE), ืึทืืึทืืื ื ื ืืฆืขืจืก ืฆื ืืืจืืคืืจื ืื ืคืืืืขื ืืข ืึทืงืฉืึทื ื ืืืืฃ ืืืฉ ืกืืฉืขืืึทืก:
- ืึทืืื ื ืฉืคืืืื
- ืืฉืึทื ืืื ื ืืืึทื ืืึทืืขืจืงืื ืืขื
- ืืึทืฉืืขืืืงื ืืืฉ ืคึผืจืึธืคึผืขืจืืืขืก ืืืึธืก ืงืึธื ืืจืึธืืืจื ืื ื ืึทืืืจ ืคืื ืื ืืืฉ, ืึทืืึท ืืื ืืึทืฉืืขืืืงื ืื ืืขื ื ืคืื ืฆืืื ืืืึธืก ืึท ืืจืึทื ืกืึทืงืืืึธื ืงืืึธืฅ ืืื ืกืืึธืจื.
ืืืึธืก ืืื ืื ื ืืฅ ืคืื ืงืจืืึทื ืขืืืึธืืืฆืืข?
ืกืืขืืข ืขืืืึธืืืฆืืข ืงืขื ืขื ืืืื ืืขืืืืื ื ืืืขื ืืืจ ืืืขื ืืืืฉื ืื ืกืืขืืข ืคืื โโโโืืืื ืืืฉ (ืืืื ืืืจ ืึทืงืกืึทืืขื ืึทืื ืฆืืืขืืขืื ืฉืคืืืื ืฆื ืืืื ืืึทืืึทืคืจืึทืืข ืืืึธืก ืืึธื ื ืืฉื ืืืื ืืึธืจื). ืืึธืก ืืื ืื ืืืืึทืกื ืืืขื ืฆื ืืืืืจืืื ืืืื ืกืืฉืขืืึท ืืืืึทื ืขืก ืืืืืึธืืึทืืืฉ ืืืกืืฃ ืื ืจืืืืืง ืืืึทื ื ืขืืขื ืืื ืืึทืื ืืืืคึผืก ืึธื ืืื ืืคืืจืืฉ ืืขืจืงืืขืจื.
ืกืึธืฃ
ืกืืฉืขืืึท ืขื ืคืึธืจืกืืึทื ื ืึธืคึผืืืึทืจืคื ืงืืื ื ืืึทืข ืฉืคืืืื ืึธืืขืจ ืื ืืขืจืข ืกืืฉืขืืึท ืขื ืืขืจืื ืืขื ืืืึธืก ืืขื ืขื ื ืืฉื ืงืึทืืคึผืึทืืึทืืึทื ืืื ืืืื ืืืฉ. ืืืจื ืืึทืฉืืขืืืงื ืืื ืืืื ืืืื ืื ื ืื ืืืื ืกืืึทื ืืึทืจืืก, ืึทื ืึทืืืก ืืื ืขื ืืืฉืึทื ืืจื ืงืขื ืขื ืฆืืืจืื ืึทื ืืืืขืจ ืืึทืื ืืึธืื ืื ืืขืืกืื ืฉืืึทืคึผื ืคืื ืึธืจื ืืืขืืงืืึทื, ืงืึทืืืื ืึทืงืืืืื ื ืขืก ืงืืืจ ืืื ืงืืืจ, ืึทืืึทืืื ื ืืื ืฆื ืืึทืื ืืขืกืขืจ ืืขืฉืขืคื ืืืกืืืฉืึทื ื.
ืืืืฃ ืื ืื ืืขืจืข ืืึทื ื, ืกืืฉืขืืึท ืขืืืึทืืืฉืึทื ืงืึทืืคึผืืึทืืึทื ืฅ ืขื ืคืึธืจืกืืึทื ื ืืืจื ืกืืืคึผืืึทืคืืืื ื ืึทืืขืืืฉื ืึธืืึทืืึทืืืง ืกืืฉืขืืึท ืขื ืืขืจืื ืืขื. ื ืึธื ืึทืืข, ืขืก ืืึธื ื ืืฉื ืืืื ืฉืืืขืจ ืฆื ืืืืื ืึท ืืืึทื.
ืื ืืขืฆืืืื ืืขื ืึทืคึผืืึทืงืืืฉืึทื ืคืื ืื ืกืืขืืข ืืื ืืึทื ื, ืืื ืื ืขืืืึธืืืฆืืข ืคืื โโืื ืกืืขืืข ืืื ืืื. ืืืขื ืืขืืืืื ื ืฆืืืึทืืขื, ืื ืคึฟืขืึดืงืืืื ืืึทืื ืจืึทืฉ ืกืึทืคึผืจืขืฉืึทื ืืื ืกืืื ืึทื ืืื ืื ื ืืจืื ืืขืจ ืืื ืืืฅ.
ืืืจ ืืืขืื ืืืื ืืึทื ืงืขื Mukul Murthy ืืื Pranav Anand ืคึฟืึทืจ ืืืืขืจ ืงืึทื ืืจืึทืืืืฉืึทื ื ืฆื ืืขื ืึทืจืืืงื.
ืื ืืขืจืข ืืจืืืงืืขื ืืื ืืขืจ ืกืขืจืืข:
ืฉืืึทืืืช ืึทืจืืืงืืขื
ืืงืืจ: www.habr.com