Hey Habr! เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเบฒโเบชเบฐโเปเบซเบเบตโเปเบซเปโเบเปเบฒเบโเบชเบปเบโเปเบโเบเบฒเบโเปเบโเบเบฒโเบชเบฒโเบเบญเบโเบเบปเบโเบเบงเบฒเบกโเปเบเปโ
เบเปเปเบกเบนเบ, เบเบทเบเบฑเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบกเปเบเบชเบฐเบชเบปเบก เปเบฅเบฐเบเบฑเบเบเบฐเบเบฒเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ. เปเบเบทเปเบญเบฎเบฑเบเบชเบฒ, เบฎเบนเบเปเบเบเบเบดเบเปเบเบเบญเบเปเบฅเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฑเบเบเบปเบงเปเบเบปเปเบฒเบเบฑเบเบเปเปเบกเบนเบเปเบซเบกเป, เบเบฒเบเบญเบฑเบเบกเบตเบเบฐเบซเบเบฒเบเปเบซเบกเป - เบงเบดเบเบตเบเบฒเบเปเบซเบกเปเบเบญเบเบเบฒเบเบชเบฑเบเปเบเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเบตเบเบเบดเบเบเปเบฝเบงเบเบฑเบเบกเบฒเบเปเบญเบ. เบฎเบนเบเปเบเบเบเบฒเบเบเบดเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบฒเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเปเบฒเบเบปเบเบงเบดเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเปเบเบเปเบฅเบฐเบเบธเบเปเบเปเบเบเปเปเบกเบนเบเปเบซเบกเป.
เบเบตเปเบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเบซเบฒเบเบฑเบเบซเบฒเบเบญเบเบเบฒเบเบเบธเปเบกเบเบญเบ schema. เปเบกเบทเปเบญเบเบงเบฒเบกเบเปเบฒเบเบฒเบเบเบฒเบเบเบธเบฅเบฐเบเบดเบ เปเบฅเบฐเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบฒเบกเปเบงเบฅเบฒ, เปเบเบเบชเปเบฒเบเบเบญเบเบเปเปเบกเบนเบเบเบญเบเบเปเบฒเบเบเปเปเบเบทเบเบฑเบ. Delta Lake เปเบฎเบฑเบเปเบซเปเบกเบฑเบเบเปเบฒเบเบเบตเปเบเบฐเปเบเบฐเบเปเบฒเบเบฒเบเบงเบฑเบเปเบเบเปเบซเบกเปเบเปเบญเบเบงเปเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบเปเปเบกเบนเบ. เบเบนเปเปเบเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบ semantics เบเปเบฒเบเปเปเบเบทเปเบญเบเบฑเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒ. เปเบเบทเปเบญเบเบกเบทเปเบซเบผเบปเปเบฒเบเบตเปเบฅเบงเบกเบกเบตเบเบฒเบเบเบฑเบเบเบฑเบเปเบเป Schema, เปเบเบดเปเบเบเบปเบเบเปเบญเบเบเบนเปเปเบเปเบเบฒเบเบเบฒเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเบฐเบฅเบฒเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบกเบปเบเบฅเบฐเบเบดเบเปเบเบเบเปเปเปเบเปเบเบฑเปเบเปเบเบเปเบงเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบซเบผเบทเบเปเปเบกเบนเบเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบ, เปเบฅเบฐ Schema Evolution, เปเบเบดเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบฑเบเปเบซเบกเปเบเบญเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเบเบธเบเบเปเบฒเบเบทเบเปเบเบตเปเบกเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก. เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบฅเบดเบเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบกเบทเปเบซเบผเบปเปเบฒเบเบตเป.
เบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบฐเบฅเบฒเบ
เปเบเปเบฅเบฐ DataFrame เปเบ Apache Spark เบกเบต schema เบเบตเปเบเปเบฒเบเบปเบเบฎเบนเบเปเบเบเบเบญเบเบเปเปเบกเบนเบ, เปเบเบฑเปเบ: เบเบฐเปเบเบเบเปเปเบกเบนเบ, เบเบฑเบ, เปเบฅเบฐ metadata. เบเปเบงเบ Delta Lake, เปเบเบเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบฎเบนเบเปเบเบ JSON เบเบฒเบเปเบเบเบฑเบเบเบถเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒ.
เบเบฒเบเบเบฑเบเบเบฑเบเปเบเปเปเบเบเบเบฒเบเปเบกเปเบเบซเบเบฑเบ?
เบเบฒเบเบเบฑเบเบเบฑเบเปเบเป Schema, เปเบเบดเปเบเปเบญเบตเปเบเบเบฑเบเบงเปเบฒ Schema Validation, เปเบกเปเบเบเบปเบเปเบเบเบงเบฒเบกเบเบญเบเปเบเปเบ Delta Lake เบเบตเปเบฎเบฑเบเบเบฐเบเบฑเบเบเบธเบเบเบฐเบเบฒเบเบเปเปเบกเบนเบเปเบเบเบเบฒเบเบเบฐเบเบดเปเบชเบเบเบฑเบเบเบถเบเบเบตเปเบเปเปเบเบปเบเบเบฑเบ schema เบเบญเบเบเบฒเบเบฐเบฅเบฒเบ. เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ hostess เบขเบนเปเบซเบเปเบฒเบฎเปเบฒเบเบเบญเบเบฎเปเบฒเบเบญเบฒเบซเบฒเบเบเบตเปเบเบญเบเปเบเบปเปเบฒเบเบฑเปเบ, เบเบฒเบเบเบงเบเปเบเบดเปเบเบงเปเบฒเปเบเปเบฅเบฐเบเปเบฅเปเบฒเบเบญเบเบเปเปเบกเบนเบเบเบตเปเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบกเปเบเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบเบญเบเบเบฑเบเบเบตเปเบเบฒเบเปเบงเป (เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป, เบเปเปเบงเปเบฒเบเบฐเบกเบต "เบเบฒเบเบเบญเบ" เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบปเบ. ), เปเบฅเบฐเบเบฐเบเบดเปเบชเบเบเบฒเบเบเบฑเบเบเบถเบเปเบเปเบเบตเปเบกเบตเบเปเบฅเปเบฒเบเบตเปเบเปเปเบกเบตเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป.
เบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ?
Delta Lake เปเบเปเบเบฒเบเบเบงเบเบชเบญเบ schema-on-write, เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบฒเบเบเบฝเบเปเบซเบกเปเบเบฑเบเบซเบกเบปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบทเบเบเบงเบเบชเบญเบเปเบเบทเปเบญเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบ schema เบเบญเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเปเบเปเบงเบฅเบฒเบเบฝเบ. เบเปเบฒ schema เบเปเปเบชเบญเบเบเปเบญเบ, Delta Lake เบเบฐเบเบปเบเปเบฅเบตเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบฑเบเบซเบกเบปเบ (เบเปเปเบกเบตเบเปเปเบกเบนเบเบเบทเบเบเบฝเบเปเบงเป) เปเบฅเบฐเบเบปเบเบเปเปเบเบปเบเปเบงเบฑเปเบเปเบเบทเปเบญเปเบเปเบเปเบซเปเบเบนเปเปเบเปเบฎเบนเปเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเปเปเบชเบญเบเบเปเบญเบ.
Delta Lake เปเบเปเบเบปเบเบฅเบฐเบเบฝเบเบเปเปเปเบเบเบตเปเปเบเบทเปเบญเบเปเบฒเบเบปเบเบงเปเบฒเบเบฑเบเบเบถเบเปเบกเปเบเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบ. เบเบญเบเบเปเปเบกเบนเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฝเบเปเบเป:
- เบเปเปเบชเบฒเบกเบฒเบเบกเบตเบเบฑเบเปเบเบตเปเบกเปเบเบตเบกเบเบตเปเบเปเปเปเบเปเบขเบนเปเปเบเปเบเบเบฎเปเบฒเบเบเบญเบเบเบฒเบเบฒเบฅเบฒเบเปเบเบปเปเบฒเปเบฒเบ. เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบฐเบเบตเบเปเบฒเบเปเปเบกเบนเบเบเบฒเปเบเบปเปเบฒเบเปเปเบกเบตเบเปเบฅเปเบฒเบเบฑเบเบซเบกเบปเบเบเบฒเบเบเบฒเบเบฐเบฅเบฒเบ - เบเบฑเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฝเบเปเบเปเบเบฐเบเบทเบเบกเบญเบเบซเบกเบฒเบเบเปเบฒ null.
- เบเปเปเบชเบฒเบกเบฒเบเบกเบตเบเบฐเปเบเบเบเปเปเบกเบนเบเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฒเบเบเบฐเปเบเบเบเปเปเบกเบนเบเบเบญเบเบเบฑเบเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบปเปเบฒเปเบฒเบ. เบเปเบฒเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเบกเบตเบเปเปเบกเบนเบ StringType, เปเบเปเบเปเบฅเปเบฒเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเปเบ DataFrame เบกเบตเบเปเปเบกเบนเบ IntegerType, เบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เบเบฐเบเบดเปเบกเบเปเปเบเบปเบเปเบงเบฑเปเบเปเบฅเบฐเบเปเบญเบเบเบฑเบเบเปเปเปเบซเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฝเบ.
- เบเปเปเบชเบฒเบกเบฒเบเบกเบตเบเบทเปเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฝเบเปเบเปเปเบเบเปเบฅเบฐเบเบต. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบกเบตเบเปเบฅเปเบฒเบเบตเปเบกเบตเบเบทเป 'Foo' เปเบฅเบฐ 'foo' เบเปเบฒเบเบปเบเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฝเบงเบเบฑเบ. เปเบเบเบฐเบเบฐเบเบตเป Spark เบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเปเบซเบกเบเบเบตเปเบฅเบฐเบญเบฝเบเบญเปเบญเบเบซเบผเบทเบเบปเบงเบเบดเบกเบเปเบญเบ (เบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ), Delta Lake เปเบกเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเบฅเบฐเบเบตเปเบเปเบเปเปเบกเบตเบเบงเบฒเบกเบฎเบนเปเบชเบถเบเบเบฒเบเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ schema. Parquet เปเบกเปเบเบเบปเบงเบเบดเบกเบเปเบญเบเปเบซเบเปเปเบเปเบงเบฅเบฒเบเบตเปเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบฅเบฐเบชเบปเปเบเบเบทเบเบเปเปเบกเบนเบเบเบฑเบ. เปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเปเบเบฑเบเปเบเปเบเป, เบเปเปเบกเบนเบเปเบชเบเบซเบฒเบ, เบซเบผเบทเบเบฒเบเบชเบนเบเปเบชเบเบเปเปเบกเบนเบ (เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฐเบชเบปเบเบเบฒเบเบชเปเบงเบเบเบปเบงเบขเบนเปเบเบตเป 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 เบเบปเบเปเบเปเบฎเบฑเบเบเบฑเบเบชเบญเบ schemas เบเบฒเบ stack trace เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฝเบเบเบฝเบ.
เบเบปเบเบเบฐเปเบซเบเบเบเบญเบเบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เปเบกเปเบเบซเบเบฑเบ?
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เปเบกเปเบเบเบฒเบเบเบงเบเบชเบญเบเบเบตเปเปเบเบฑเปเบกเบเบงเบ, เบกเบฑเบเปเบเบฑเบเปเบเบทเปเบญเบเบกเบทเบเบตเปเบเบตเปเบฅเบตเบเบเบตเปเบเบฐเปเบเปเปเบเบฑเบเบเบนเปเบฎเบฑเบเบชเบฒเบเบฐเบเบนเปเบเบซเบฒเบเบธเบเบเปเปเบกเบนเบเบเบตเปเบชเบฐเบญเบฒเบ, เบเปเบฝเบเปเบเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเบเบตเปเบเบฝเบกเบเปเบญเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบฅเบดเบเบซเบผเบทเบเบฒเบเบเปเบฅเบดเปเบเบ. เปเบเบเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเปเบเปเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเปเบญเบเบเปเปเบกเบนเบเปเบเบเบเบปเบ:
- เบเบฑเปเบเบเบญเบเบเบฒเบเบฎเบฝเบเบฎเบนเปเปเบเบทเปเบญเบเบเบฑเบ
- BI dashboards
- เปเบเบทเปเบญเบเบกเบทเบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเปเบกเบนเบ เปเบฅเบฐเบเบฒเบเบชเปเบฒเบเบเบฒเบ
- เบฅเบฐโเบเบปเบโเบเบฒเบโเบเบฐโเบฅเบดเบโเปเบโเบซเบเบถเปเบโเบเบตเปโเบฎเบฝเบโเบฎเปเบญเบโเปเบซเปโเบกเบตโเปเบเบโเบชเปเบฒเบโเบชเบนเบโ, เบเบฒเบโเบเบดเบกโเบขเปเบฒเบโเปเบเบโเปเบฎเบ schemas semanticโ.
เปเบเบทเปเบญเบเบฐเบเบฝเบกเบเปเปเบกเบนเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเบชเปเบฒเบฅเบฑเบเบญเบธเบเบฐเบชเบฑเบเบชเบธเบเบเปเบฒเบเบเบตเป, เบเบนเปเปเบเปเบซเบผเบฒเบเบเบปเบเปเบเปเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒ "multi-hop" เบเบตเปเบเปเบฒเบเบเบฒเบเบเบตเปเบเปเบญเบเปเปเบเบฐเบเปเบฒเปเบเบเบชเปเบฒเบเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒ. เปเบเบทเปเบญเบฎเบฝเบเบฎเบนเปเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบเบเบปเบเบเบงเบฒเบก
เปเบเปเบเบญเบ, เบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเปเบเปเบเบธเบเบเปเบญเบเปเบเบเปเปเบเบญเบเบเปเบฒเบ, เปเบเปเบเบทเปเปเบงเปเบงเปเบฒเบเบฒเบเบเปเบฒเบเบเบญเบเปเบเบซเบฒเบเบฒเบเบฐเบฅเบฒเบเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบญเบธเบเบญเบฑเปเบเปเบเบฒเบฐเบงเปเบฒ, เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบฅเบทเบกเบงเปเบฒเบเปเบฒเบเปเบเบตเปเบกเบเปเบฅเปเบฒเบญเบทเปเบเปเบชเปเบเปเปเบกเบนเบเบเบฒเปเบเบปเปเบฒ.
เบเปเบญเบเบเบฑเบเบเบฒเบเปเบเบทเบญเบเบฒเบเบเบญเบเบเปเปเบกเบนเบ
เบเบฝเบงเบเบตเปเปเบเบปเปเบฒเบญเบฒเบเบเบฐเบชเบปเบเปเบชเบงเปเบฒ, เปเบกเปเบเบซเบเบฑเบเบเบตเปเบชเบฑเบเบชเบปเบ? เบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบฑเบเบซเบกเบปเบ, เบเบฒเบเบเบฑเปเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ "schema mismatch" เบเบตเปเบเปเปเบเบฒเบเบเบดเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบเปเบฒเบเบขเบนเปเปเบเบเบฐเบเบงเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบฒเบ, เปเบเบเบชเบฐเปเบเบฒเบฐเบเปเบฒเบเปเบฒเบเปเบซเบกเปเบเบฑเบ Delta Lake. เปเบเบฑเบเบซเบเบฑเบเบเปเปเบเบฝเบเปเบเปเปเบซเป schema เบเปเบฝเบเปเบเบเบเบฒเบกเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเปเบซเปเบเปเบญเบเบชเบฒเบกเบฒเบเบเบฝเบ DataFrame เบเบญเบเบเปเบญเบเปเบเปเบเปเปเบงเปเบฒเบเบฐเปเบเบฑเบเปเบเบงเปเบ?
เบเบฑเปเบเบเบณเปเบเบปเปเบฒเปเบเปเบเบตเปเบเปเบฒเบงเปเบงเปเบงเปเบฒ, "เบเบฒเบเบเปเบญเบเบเบฑเบเปเบถเปเบเบญเบฑเบเปเบกเปเบเบเบธเปเบกเบเปเบฒเบเบฑเบเบเบฒเบเบเบดเปเบเบเบปเบง." เปเบเบเบฒเบเบเบธเบ, เบเปเบฒเบเปเบฒเบเบเปเปเปเบญเบปเบฒเปเบเปเบชเปเปเบเบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เบเบญเบเบเปเบฒเบ, เบเบฑเบเบซเบฒเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบญเบเบเบฐเปเบเบเบเปเปเบกเบนเบเบเบฐเบขเบนเปเบซเบฅเบฑเบเบซเบปเบงเบเบตเปเบเบตเปเบฎเปเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒ - เปเบซเบผเปเบเบเปเปเบกเบนเบเบงเบฑเบเบเบธเบเบดเบเบเบตเปเปเบเบดเปเบเบเบทเบงเปเบฒเบเบฐเบเบฐเบเบญเบเบเปเบงเบเบเปเบฅเบฐเบเบตเปเบเบ, เบเบฑเบเบเบตเปเปเบชเบเบซเบฒเบ, เบเบฒเบเบชเปเบฒเบเปเบเบเบเบตเปเบเบตเปเบเปเปเบเบทเบเบเปเบญเบ, เบซเบผเบทเบชเบดเปเบเบเบตเปเบซเบเปเบฒเบขเปเบฒเบเบเบปเบงเบญเบทเปเบเปเบเบตเปเบเบฐเบเบฑเบเปเบ. เบเบฑเบเบฎเปเบฒเบ. เบงเบดเบเบตเบเบฒเบเบเบตเปเบเบตเบเบตเปเบชเบธเบเปเบกเปเบเปเบเบทเปเบญเบขเบธเบเบชเบฑเบเบเบนเปเบซเบผเบปเปเบฒเบเบตเปเบขเบนเปเบเบตเปเบเบฐเบเบนเบฎเบปเปเบง - เบเปเบงเบเบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema - เปเบฅเบฐเบเบฑเบเบเบฒเบเบเบฑเบเบเบงเบเบกเบฑเบเปเบเบเบงเบฒเบกเบชเบฐเบซเบงเปเบฒเบ, เปเบเบเบเบตเปเบเบฐเบเปเปเบกเบฒเปเบกเบทเปเบญเบเบงเบเปเบเบปเบฒเปเบฅเบตเปเบกเบฅเบตเปเบขเบนเปเปเบเบเบงเบฒเบกเปเบฅเบดเบเบเปเปเบฒเบเบญเบเบฅเบฐเบซเบฑเบเบเบฒเบเบเบฐเบฅเบดเบเบเบญเบเบเปเบฒเบ.
เบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เปเบฎเบฑเบเปเบซเปเบเปเบฒเบเบซเบกเบฑเปเบเปเบเบงเปเบฒ schema เบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบญเบเปเบเบปเปเบฒเบเบฐเบเปเปเบเปเบฝเบเปเบเบเปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบเปเบฒเบเบญเบฐเบเบธเบกเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบ. เบเบตเปเบเปเบญเบเบเบฑเบเบเบฒเบเปเบเบทเบญเบเบฒเบเบเบญเบเบเปเปเบกเบนเบ, เปเบเบดเปเบเบชเบฒเบกเบฒเบเปเบเบตเบเบเบทเปเบเปเบเปเปเบกเบทเปเบญเบกเบตเบเบฑเบเปเบซเบกเปเบเบทเบเปเบเบตเปเบกเปเบฅเบทเปเบญเบเปเปเบฅเบทเปเบญเบเป, เบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเบทเบเบเบตเบเบญเบฑเบเปเบเปเบกเบทเปเบญเบเปเบญเบเบชเบนเบเปเบชเบเบเบงเบฒเบกเบซเบกเบฒเบเปเบฅเบฐเบเบฐเปเบซเบเบเบเบญเบเบเบงเบเปเบเบปเบฒเบเปเบญเบเบเบฒเบเบเปเปเบฒเบเปเบงเบกเบเบญเบเบเปเปเบกเบนเบ. เปเบเบเบเบฒเบเบเบธเบเบเบนเปเปเบซเปเบเปเบฒเบเบเบฑเปเบเปเบ, เบเบฑเปเบเบกเบฒเบเบเบฐเบเบฒเบเบชเบนเบ, เปเบฅเบฐเบเบฒเบเบซเบงเบฑเบเบงเปเบฒเบกเบตเบเบธเบเบเบฐเบเบฒเบเบชเบนเบ, เบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบกเบฑเบเบเบทเบเบญเบญเบเปเบเบเบกเบฒเปเบเบทเปเบญเปเบฎเบฑเบ - เบเปเบงเบเปเบซเปเบเปเบฒเบเบกเบตเบชเบฐเบเบดเปเบฅเบฐเบชเบฐเปเบเบฃเบเบเบตเบเบเบญเบเบเปเบฒเบเบชเบฐเบญเบฒเบ.
เบเปเบฒโเบซเบฒเบโเบเปเบฒเบโเบเบดโเบเบฒโเบฅเบฐโเบเบฒโเปเบเบตเปเบกโเปเบเบตเบกโเบเปเบฒเบโเบเบฑเบโเบชเบดเบโเปเบโเบงเปเบฒโเบเปเบฒเบโเปเบเปโ เบเปเบญเบเบเบฒเบ เปเบเบตเปเบกเบเบฑเบเปเบซเบกเป - เบเปเปเบกเบตเบเบฑเบเบซเบฒ, เบเปเบฒเบเบฅเบธเปเบกเบเบตเปเปเบกเปเบเบเบฒเบเปเบเปเปเบเบซเบเบถเปเบเปเบเบง. เบเบฒเบเปเบเปเปเบเปเบกเปเบเบงเบดเบงเบฑเบเบเบฐเบเบฒเบเบฒเบเบเบญเบเบงเบปเบเบเบญเบ!
เบงเบดเบงเบฑเบเบเบฐเบเบฒเบเบฒเบ schema เปเบกเปเบเบซเบเบฑเบ?
Schema evolution เปเบกเปเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบตเปเบเปเบงเบเปเบซเปเบเบนเปเปเบเปเบชเบฒเบกเบฒเบเบเปเบฝเบเบเบฒเบเบฐเบฅเบฒเบเบเบฐเบเบธเบเบฑเบเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเบเบฒเบกเบเปเปเบกเบนเบเบเบตเปเบเปเบฝเบเปเบเบเปเบเปเบฅเบเบฐเปเบงเบฅเบฒ. เบกเบฑเบเบเบทเบเบเปเบฒเปเบเปเบซเบผเบฒเบเบเบตเปเบชเบธเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเบตเปเบกเปเบเบตเบกเบซเบผเบทเบเบฒเบเบเบฝเบเบเบทเบเปเบซเบกเปเปเบเบทเปเบญเบเบฑเบเบเบปเบงเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบทเปเบญเบเบฐเบเบญเบเบกเบตเบซเบเบถเปเบเบซเบผเบทเบซเบผเบฒเบเบเบฑเบเปเบซเบกเป.
เบงเบดเบงเบฑเบเบเบฐเบเบฒเบเบฒเบ schema เปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ?
เบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเบปเบงเบขเปเบฒเบเบเบฒเบเบเบฒเบเบเปเบญเบ, เบเบฑเบเบเบฑเบเบเบฐเบเบฒเบชเบฒเบกเบฒเบเปเบเป schema evolution เปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบเบทเปเบญเปเบเบตเปเบกเบเปเบฅเปเบฒเปเบซเบกเปเบเบตเปเบเบทเบเบเบฐเบเบดเปเบชเบเบเปเบญเบเบซเบเปเบฒเบเบตเปเปเบเบทเปเบญเบเบเบฒเบเบเบงเบฒเบกเบเปเปเบชเบญเบเบเปเบญเบเบเบญเบ schema. เบงเบดเบงเบฑเบเบเบฐเบเบฒเบงเบปเบเบเบญเบเบเบทเบเปเบเบตเบเปเบเปเปเบเบเบเบฒเบเปเบเบตเปเบก .option('mergeSchema', 'true')
เบเบฑเบเบเบตเบกเบเบฒเบ Spark เบเบญเบเบเปเบฒเบ .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 เบเบฑเบเบซเบกเบปเบเปเบเบเบเบฒเบเปเบเบตเปเบก spark.databricks.delta.schema.autoMerge = True
เบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ Spark. เปเบเปเปเบซเปเปเบเปเบกเบฑเบเบขเปเบฒเบเบฅเบฐเบกเบฑเบเบฅเบฐเบงเบฑเบ, เปเบเบฒเบฐเบงเปเบฒเบเบฒเบเบเบฑเบเบเบฑเบเปเบเป schema เบเบฐเบเปเปเปเบเปเบเปเบเบทเบญเบเบเปเบฒเบเปเบเบดเบเบเบงเบฒเบกเบเปเปเบชเบญเบเบเปเบญเบเบเบญเบ schema เบญเบตเบเบเปเปเปเบ.
เปเบเบเบเบฒเบเบฅเบงเบกเปเบญเบปเบฒเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเบเปเบฒเบฎเปเบญเบเบเป mergeSchema
, เบเปเบฅเปเบฒเบเบฑเบเบซเบกเบปเบเบเบตเปเบขเบนเปเปเบ DataFrame เปเบเปเบเปเปเปเบกเปเบเบขเบนเปเปเบเบเบฒเบเบฐเบฅเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบฐเบเบทเบเปเบเบตเปเบกเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบชเปเปเบเบเบญเบเบเปเบฒเบเบเบญเบ schema เปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบฒเบเบเบฝเบ. เบชเบฒเบกเบฒเบเปเบเบตเปเบกเบเปเบญเบเบเปเปเบกเบนเบ Nested เปเบเป เปเบฅเบฐเบชเบดเปเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฐเบเบทเบเปเบเบตเปเบกเปเบชเปเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบฑเบเปเบเบเบชเปเบฒเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ.
เบงเบดเบชเบฐเบงเบฐเบเบญเบเบงเบฑเบเบเบตเปเบฅเบฐเบเบฑเบเบงเบดเบเบฐเบเบฒเบชเบฒเบเบเปเปเบกเบนเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเปเบเบทเปเบญเปเบเบตเปเบกเบเปเบฅเปเบฒเปเบซเบกเป (เบเบฒเบเบเบต metric เบเบดเบเบเบฒเบกเบเปเปเบเบปเบเบกเบฒเบเบตเปเบซเบผเบทเบเปเบฅเปเบฒเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบฒเบเบเบฒเบเบเบญเบเปเบเบทเบญเบเบเบตเป) เบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเบฐเบฅเบดเบเบเบฒเบเบฎเบฝเบเบฎเบนเปเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบงเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบเบเปเปเบกเบตเบเบฒเบเบเปเบฒเบฅเบฒเบเบฎเบนเบเปเบเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบงเปเบเบเบญเบตเบเปเบชเปเบเปเบฅเปเบฒเปเบเบปเปเบฒ.
เบเบฐเปเบเบเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบ schema เบเปเปเปเบเบเบตเปเปเบกเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบ schema evolution เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเปเบเบตเปเบกเบเบฒเบเบฐเบฅเบฒเบเบซเบผเบทเบเบฝเบเปเบซเบกเป:
- เบเบฒเบเปเบเบตเปเบกเบเบฑเบเปเปเป (เบเบตเปเปเบกเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบปเปเบงเปเบเบเบตเปเบชเบธเบ)
- เบเบฒเบเบเปเบฝเบเบเบฐเปเบเบเบเปเปเบกเบนเบเบเบฒเบ NullType -> เบเบฐเปเบเบเบญเบทเปเบเป เบซเบผเบทเบเบฒเบเบชเบปเปเบเปเบชเบตเบกเบเบฒเบ ByteType -> ShortType -> IntegerType
เบเบฒเบโเบเปเบฝเบโเปเบเบโเบญเบทเปเบเปโเบเบตเปโเบเปเปโเปเบเปโเบญเบฐโเบเบธโเบเบฒเบโเปเบซเปโเบเบฒเบโเปเบ schema evolution เบฎเบฝเบโเบฎเปเบญเบโเปเบซเป schema เปเบฅเบฐโเบเปเปโเบกเบนเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฝเบโเบเบทเบโเปเบซเบกเปโเปเบเบโเบเบฒเบโเปเบเบตเปเบก .option("overwriteSchema", "true")
. เบเบปเบงเบขเปเบฒเบ, เปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบฑเบ "Foo" เปเบเปเบเบทเปเบญเบเบเบปเปเบเปเบเบฑเบเบเปเบฒเบเบงเบเปเบเบฑเบกเปเบฅเบฐ schema เปเบซเบกเปเปเบกเปเบเบเบฐเปเบเบเบเปเปเบกเบนเบเบชเบฐเบเบฃเบดเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบฅเป Parquet (เบเปเปเบกเบนเบ) เบเบฑเบเบซเบกเบปเบเบเบฐเบเปเบญเบเบเบทเบเบเบฝเบเบเบทเบเปเบซเบกเป. เบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเปเบเบเปเบฒเบงเบฅเบงเบกเบกเบต:
- เบเบฒเบเบฅเบถเบเบเบฑเบ
- เบเบฒเบโเบเปเบฝเบโเปเบเบโเบเบฐโเปเบเบโเบเปเปโเบกเบนเบโเบเบญเบโเบเบฑเบโเบเบตเปโเบกเบตโเบขเบนเปโเปเบฅเปเบง (เปเบโเบชเบฐโเบเบฒเบโเบเบตเปโ)
- เบเบฒเบเบเปเบฝเบเบเบทเปเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฝเบเปเบเปเปเบเบเปเบฅเบฐเบเบต (เบเบปเบงเบขเปเบฒเบ, "Foo" เปเบฅเบฐ "foo")
เบชเบธเบเบเปเบฒเบ, เบเปเบงเบเบเบฒเบเปเบเบตเบเบเบปเบงเบเปเปเปเบเบเบญเบ Spark 3.0, DDL เบขเปเบฒเบเบเบฑเบเปเบเบเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบขเปเบฒเบเปเบเบฑเบกเบเบตเป (เปเบเป ALTER TABLE), เปเบซเปเบเบนเปเปเบเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฑเปเบเบเปเปเปเบเบเบตเปเบเปเบฝเบงเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบฐเบฅเบฒเบ:
- เปเบเบตเปเบกเบเบฑเบ
- เบเบฒเบโเบเปเบฝเบโเปเบเบโเบเปเบฒโเบเบดเบโเปเบซเบฑเบโเบเบฑเบโ
- เบเบฒเบเบเบฑเปเบเบเปเบฒเบเบธเบเบชเบปเบกเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบตเปเบเบงเบเบเบธเบกเบเบถเบเบเบดเบเปเบฒเบเบญเบเบเบฒเบเบฐเบฅเบฒเบ, เปเบเบฑเปเบ: เบเปเบฒเบเบปเบเปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเบฑเบเบเบถเบเบเบฒเบเปเบฎเบฑเบเบเบธเบฅเบฐเบเปเบฒเบเบทเบเปเบเบฑเบเปเบงเป.
เบเบปเบเบเบฐเปเบซเบเบเบเบญเบเบเบฒเบเบงเบดเบงเบฑเบเบเบฐเบเบฒเบงเบปเบเบเบญเบเปเบกเปเบเบซเบเบฑเบ?
เบเบฒเบเบงเบดเบงเบฑเบเบเบฐเบเบฒเบเบฒเบ Schema เบชเบฒเบกเบฒเบเปเบเปเปเบเปเบเบธเบเบเบฑเปเบเบเบตเปเบเปเบฒเบ เบเบฑเปเบเปเบ เบเปเบฝเบ schema เบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบญเบเบเปเบฒเบ (เบเบปเบเบเบฑเบเบเปเบฒเบกเบเบฑเบเปเบงเบฅเบฒเบเบตเปเปเบเบปเปเบฒเปเบเบตเปเบกเบเบฑเบเปเบชเป DataFrame เบเบญเบเบเปเบฒเบเปเบเบเบเบฑเบเปเบญเบตเบเบเบตเปเบเปเปเบเบงเบเบขเบนเปเบเบตเปเบเบฑเปเบ). เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบเปเบเบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบ schema เบเบญเบเบเปเบฒเบเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบเบฐเปเบเบตเปเบกเบเบทเปเบเบฑเบเบเบตเปเบเบทเบเบเปเบญเบเปเบฅเบฐเบเบฐเปเบเบเบเปเปเบกเบนเบเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฐเบเบฒเบเบขเปเบฒเบเบเบฑเบเปเบเบ.
เบชเบฐเบซเบฅเบธเบ
เบเบฒเบเบเบฑเบเบเบฑเบเปเบเป Schema เบเบฐเบเบดเปเบชเบเบเปเบฅเปเบฒเปเบซเบกเปเบซเบผเบทเบเบฒเบเบเปเบฝเบเปเบเบ schema เบญเบทเปเบเปเบเบตเปเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบญเบเบเปเบฒเบ. เปเบเบเบเบฒเบเบเปเบฒเบเบปเบเปเบฅเบฐเบฎเบฑเบเบชเบฒเบกเบฒเบเบเบฐเบเบฒเบเบชเบนเบเปเบซเบผเบปเปเบฒเบเบตเป, เบเบฑเบเบงเบดเปเบเบฒเบฐเปเบฅเบฐเบงเบดเบชเบฐเบงเบฐเบเบญเบเบชเบฒเบกเบฒเบเปเบงเปเบงเบฒเบเปเบเปเบเปเบงเปเบฒเบเปเปเบกเบนเบเบเบญเบเบเบงเบเปเบเบปเบฒเบกเบตเบเบงเบฒเบกเบเบทเปเบชเบฑเบเบชเบนเบเบชเบธเบ, เบชเบทเปเบชเบฒเบเบกเบฑเบเบขเปเบฒเบเบเบฑเบเปเบเบเปเบฅเบฐเบเบฑเบเปเบเบ, เปเบซเปเบเบงเบเปเบเบปเบฒเบเบฑเบเบชเบดเบเปเบเบเบธเบฅเบฐเบเบดเบเบเบตเปเบเบตเบเบงเปเบฒ.
เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เบเบฒเบเบงเบดเบงเบฑเบเบเบฐเบเบฒเบเบฒเบ schema เปเบชเบตเบกเบเบฒเบเบเบฑเบเบเบฑเบเปเบเปเปเบเบเบเบฒเบเปเบฎเบฑเบเปเบซเปเบเปเบฒเบเบเบฒเบ เบเบทเบเบเปเบฒเบงเบซเบฒ เบเบฒเบเบเปเบฝเบเปเบเบ schema เบญเบฑเบเบเบฐเปเบเบกเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบฑเบเบซเบกเบปเบ, เบกเบฑเบเบเปเปเบเบงเบเบเบฐเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบตเปเบเบฐเปเบเบตเปเบกเบเบฑเบ.
เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบฒเบโเบเบฑเบโเบเบฑเบโเบเบญเบโเปเบเบโเบเบฒเบโเปเบกเปเบ yangโ, เบเปเบญเบโเบเบตเปโเบงเบดโเบงเบฑเบโเบเบฒเบโเบเบญเบโเปเบเบโเบเบฒเบโเปเบกเปเบ yinโ. เปเบกเบทเปเบญเบเปเบฒเปเบเปเบฎเปเบงเบกเบเบฑเบ, เบเบธเบเบชเบปเบกเบเบฑเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบฎเบฑเบเปเบซเปเบเบฒเบเบชเบฐเบเบฑเบเบเบฑเปเบเบชเบฝเบเบฅเบปเบเบเบงเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบชเบฑเบเบเบฒเบเบเปเบฒเบเบเบงเปเบฒเบเบตเปเปเบเบตเบ.
เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเบญเบเบเปเบเบญเบเปเบ Mukul Murthy เปเบฅเบฐ Pranav Anand เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฐเบเบญเบเบชเปเบงเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบเบปเบเบเบงเบฒเบกเบเบตเป.
เบเบปเบเบเบงเบฒเบกเบญเบทเปเบเปเปเบเบเบธเบเบเบตเป:
เบเบปเบเบเบฝเบเบเบตเปเบเปเบฝเบงเบเปเบญเบ
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com