เบเบนเปเบญเปเบฒเบเบเบตเปเบฎเบฑเบเปเบเบ, เบกเบทเปเบเบตเปเบเบต!
เปเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเบตเปเบเบถเบเบชเบฒเบเบฑเปเบเบเปเบฒเบเบญเบเบเบทเปเบเบเบตเปเบเบธเบฅเบฐเบเบดเบ Big Data Solutions เบเบญเบ Neoflex เบญเบฐเบเบดเบเบฒเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเปเบเบเบฒเบเบเปเปเบชเปเบฒเบเปเบเบเบชเปเบฒเบเบเบตเปเบเปเบฝเบเปเบเบเปเบเปเปเบเบเปเบเป Apache Spark.
เปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบเปเบเบเบเบฒเบเบเบฒเบเบงเบดเปเบเบฒเบฐเบเปเปเบกเบนเบ, เบงเบฝเบเบเบฒเบเบเบญเบเบเบฒเบเบชเปเบฒเบเบซเบเปเบฒเบฎเปเบฒเบเปเบเบเบญเบตเบเปเบชเปเบเปเปเบกเบนเบเบเบตเปเบกเบตเปเบเบเบชเปเบฒเบเบงเปเบฒเบเบกเบฑเบเบเบฐเปเบเบตเบเบเบทเปเบ.
เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบเบฑเบเบเบถเบ, เบซเบผเบทเบเปเบฒเบเบญเบเบเบฒเบเบฅเบฐเบเบปเบเบเปเบฒเบเป, เบเบฑเบเบเบถเบเปเบเบฑเบ JSON เบซเบผเบท XML. เบเปเปเบกเบนเบเบเบทเบเบญเบฑเบเปเบซเบผเบเปเบชเป Hadoop, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบซเบเปเบฒเบฎเปเบฒเบเบเบฒเบเบเบงเบเปเบเบปเบฒ. เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบงเบฒเบเบชเบฐเปเบเบเบเบตเปเบชเปเบฒเบเบเบถเปเบ, เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบ Impala.
เปเบเบเปเบฅเบฐเบเบตเบเบตเป, schema เบเบญเบเบซเบเปเบฒเบฎเปเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบเปเบกเปเบเบเปเปเบฎเบนเปเบเบฑเบเบฅเปเบงเบเบซเบเปเบฒ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเบเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบเบทเบเปเบเปเบกเบเบถเปเบเบฅเปเบงเบเบซเบเปเบฒ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบเบถเปเบเบเบฑเบเบเปเปเบกเบนเบ, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบฑเบเบเบฒเบเบเบฑเบเบเปเปเบกเบนเบเบเบตเปเบกเบตเปเบเบเบชเปเบฒเบเบเบตเปเบงเปเบฒเบเบซเบผเบฒเบ.
เบเบปเบงเบขเปเบฒเบ, เปเบเบกเบทเปเบเบตเปเบเปเบฒเบเบญเบเบเปเปเปเบเบเบตเปเบเบทเบเบเบฑเบเบเบถเบ:
{source: "app1", error_code: ""}
เปเบฅเบฐเบกเบทเปเบญเบทเปเบเบเบฒเบเบฅเบฐเบเบปเบเบเบฝเบงเบเบฑเบเบกเบฒเบเปเบฒเบเบญเบเบเปเปเปเบเบเบตเป:
{source: "app1", error_code: "error", description: "Network error"}
เบเบฑเปเบเบเบฑเปเบ, เบซเบเบถเปเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเปเบเบตเปเบกเปเบเบตเบกเบเบงเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบตเปเบกเปเบชเปเปเบ showcase - เบเปเบฒเบญเบฐเบเบดเบเบฒเบ, เปเบฅเบฐเบเปเปเบกเบตเปเบเบฎเบนเปเบงเปเบฒเบกเบฑเบเบเบฐเบกเบฒเบซเบผเบทเบเปเป.
เบงเบฝเบเบเบฒเบเบเบญเบเบเบฒเบเบชเปเบฒเบเบซเบเปเบฒเบฎเปเบฒเบเปเบเบเปเปเบกเบนเบเบเบฑเปเบเบเปเบฒเบงเปเบกเปเบเบกเบฒเบเบเบฐเบเบฒเบเบเบตเปเบชเบงเบเบเบฒเบก, เปเบฅเบฐ Spark เบกเบตเปเบเบทเปเบญเบเบกเบทเบเปเบฒเบเบงเบเบซเบเบถเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป. เบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบเบงเบดเปเบเบฒเบฐเปเบซเบผเปเบเบเปเปเบกเบนเบ, เบกเบตเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฑเบ JSON เปเบฅเบฐ XML, เปเบฅเบฐเบชเปเบฒเบฅเบฑเบ schema เบเบตเปเบเปเปเบฎเบนเปเบเบฑเบเบเปเบญเบเบซเบเปเบฒเบเบตเป, เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบชเปเบฒเบฅเบฑเบ schemaEvolution เปเบกเปเบเบชเบฐเบซเบเบญเบเปเบซเป.
เบขเบนเป glance เบเปเบฒเบญเบดเบ, เบเบฒเบเปเบเปเปเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเปเบฒเบเบเบฒเบ. เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบญเบปเบฒเปเบเบเปเบเบตเบเบตเปเบกเบต JSON เปเบฅเบฐเบญเปเบฒเบเบกเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเบญเบเบเปเปเบกเบนเบ. Spark เบเบฐเบชเปเบฒเบ schema, เบเปเบฝเบเบเปเปเบกเบนเบ nested เปเบเบฑเบเปเบเบเบชเปเบฒเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเบเบถเบเปเบงเปเปเบ parquet, เปเบเบดเปเบเบเบฑเบเปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบ Impala, เปเบเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบซเบเปเบฒเบฎเปเบฒเบเปเบ Hive metastore.
เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเปเบฒเบเบเบฒเบ.
เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบกเบฑเบเบเปเปเปเบกเปเบเบเบงเบฒเบกเบเบฑเบเปเบเบเบเบฒเบเบเบปเบงเบขเปเบฒเบเบชเบฑเปเบเปเปเบเปเบญเบเบฐเบชเบฒเบเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบเบเบฑเบเบเบฑเบเบซเบฒเบเปเบฒเบเบงเบเบซเบเบถเปเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ.
เปเบญเบเบฐเบชเบฒเบเบญเบฐเบเบดเบเบฒเบเบงเบดเบเบตเบเบฒเบเบเปเปเบชเปเบฒเบเบซเบเปเบฒเบฎเปเบฒเบ, เปเบเปเบญเปเบฒเบ JSON เบซเบผเบท XML เปเบเบปเปเบฒเปเบเปเบเบเบญเบเบเปเปเบกเบนเบ.
เบเบท, เบกเบฑเบเบเบฝเบเปเบเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเบดเบเบตเบเบฒเบเบญเปเบฒเบเปเบฅเบฐเบงเบดเปเบเบฒเบฐ JSON:
df = spark.read.json(path...)
เบเบตเปเปเบกเปเบเบเบฝเบเบเปเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเปเปเบกเบนเบเบเบตเปเบกเบตเปเบซเปเบเบฑเบ Spark.
เปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ, script เปเบกเปเบเบชเบฑเบเบชเบปเบเบซเบผเบฒเบเบเปเบงเบฒเบเบฝเบเปเบเปเบญเปเบฒเบเปเบเบฅเป JSON เบเบฒเบเปเบเบเปเบเบตเปเบฅเบฐเบชเปเบฒเบเบเบญเบเบเปเปเบกเบนเบ. เบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป: เบกเบตเบซเบเปเบฒเบฎเปเบฒเบเบเบตเปเปเบเปเบเบญเบเปเบฅเปเบง, เบเปเปเบกเบนเบเปเบซเบกเปเปเบเบปเปเบฒเบกเบฒเบเบธเบเปเบกเบทเป, เบเบงเบเปเบเบปเบฒเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบตเปเบกเปเบชเปเบซเบเปเบฒเบฎเปเบฒเบ, เบขเปเบฒเบฅเบทเบกเบงเปเบฒเปเบเบเบเบฒเบเบญเบฒเบเบเบฐเปเบเบเบเปเบฒเบเบเบฑเบ.
เปเบเบโเบเบฒเบโเบเบปเบโเบเบฐโเบเบดโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเปเปโเบชเปเบฒเบ showcase เปเบเบฑเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ:
เบเบฑเปเบเบเบญเบ 1. เบเปเปเบกเบนเบเปเบเปเบเบทเบเปเบซเบฅเบเปเบเบปเปเบฒเปเบเปเบ Hadoop เบเปเบงเบเบเบฒเบเปเบซเบผเบเปเบซเบกเปเบเบฐเบเปเบฒเบงเบฑเบเบเปเปเบกเบฒเปเบฅเบฐเปเบเบตเปเบกเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบดเบเบฑเบเปเบซเบกเป. เบกเบฑเบ turns เบญเบญเบเปเบเบเปเบเบตเบเบตเปเบกเบตเบเปเปเบกเบนเบเปเบเบทเปเบญเบเบเบปเปเบเปเบเปเบเบชเปเบงเบเปเบเบเบกเบทเป.
เบเบฑเปเบเบเบญเบ 2. เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเปเบซเบผเบเปเบเบทเปเบญเบเบเบปเปเบ, เปเบเบเปเบเบตเบเบตเปเบเบฐเบเบทเบเบญเปเบฒเบ เปเบฅเบฐเบงเบดเปเบเบฒเบฐเปเบเบ Spark. เบเบญเบเบเปเปเบกเบนเบเบเบปเบเปเบเปเบฎเบฑเบเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบเบฎเบนเบเปเบเบเบเบตเปเบชเบฒเบกเบฒเบเบงเบดเปเบเบฒเบฐเปเบเป, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เปเบ parquet, เปเบเบดเปเบเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบเปเบ Impala. เบเบตเปเบชเปเบฒเบเบเบฒเบเบชเบฐเปเบเบเปเบเบปเปเบฒเบซเบกเบฒเบเบเบตเปเบกเบตเบเปเปเบกเบนเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบเปเบชเบฐเบชเบปเบกเปเบเบดเบเบเบธเบเบเบตเป.
เบเบฑเปเบเบเบญเบ 3. เบเบฒเบเบเบฒเบงเปเบซเบผเบเปเบกเปเบเบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบเบทเปเบญเบญเบฑเบเปเบเบเปเปเบฒเบฎเปเบฒเบเบเบธเบเปเบกเบทเป.
เบกเบตเบเปเบฒเบเบฒเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบเบตเปเบกเบเบฒเบเปเบซเบผเบ, เบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเปเบเปเบเบชเปเบงเบเบเบญเบ showcase, เปเบฅเบฐเบเปเบฒเบเบฒเบกเบเบญเบเบเบฒเบเบฎเบฑเบเบชเบฒเบฅเบฐเบเบปเบเบเบปเปเบงเปเบเบเบญเบ showcase.
เปเบซเปโเปเบฎเบปเบฒโเปเบเปโเบเบปเบงโเบขเปเบฒเบ. เปเบซเปเปเบงเบปเปเบฒเบงเปเบฒเบเบฑเปเบเบเบญเบเบเปเบฒเบญเบดเบเบเบญเบเบเบฒเบเบชเปเบฒเบ repository เปเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบ, เปเบฅเบฐเปเบเบฅเป JSON เบเบทเบเบญเบฑเบเปเบซเบฅเบเปเบเบเบฑเบเปเบเบเปเบเบต.
เบเบฒเบเบชเปเบฒเบเบเบญเบเบเปเปเบกเบนเบเบเบฒเบเบเบงเบเบกเบฑเบ, เบเบฒเบเบเบฑเปเบเบเบฑเบเบเบถเบเบกเบฑเบเปเบเบฑเบเบเปเบญเบเบงเบฒเบเบชเบฐเปเบเบ, เบเปเปเปเบกเปเบเบเบฑเบเบซเบฒ. เบเบตเปเปเบกเปเบเบเบฑเปเบเบเบญเบเบเปเบฒเบญเบดเบเบเบตเปเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเปเบเปเบเปเบฒเบเปเบเปเบญเบเบฐเบชเบฒเบ Spark:
df = spark.read.option("mergeSchema", True).json(".../*")
df.printSchema()
root
|-- a: long (nullable = true)
|-- b: string (nullable = true)
|-- c: struct (nullable = true) |
|-- d: long (nullable = true)
เบเบธเบเบขเปเบฒเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบต.
เบเบงเบเปเบฎเบปเบฒเบญเปเบฒเบเปเบฅเบฐเบงเบดเปเบเบฒเบฐ JSON, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบถเบ dataframe เปเบเบฑเบ parquet, เบฅเบปเบเบเบฐเบเบฝเบเบกเบฑเบเบขเบนเปเปเบ Hive เปเบเบงเบดเบเบตเบเบตเปเบชเบฐเบเบงเบ:
df.write.format(โparquetโ).option('path','<External Table Path>').saveAsTable('<Table Name>')
เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเปเบญเบเบขเปเบฝเบก.
เปเบเป, เปเบเบกเบทเปเบเปเปเบกเบฒ, เบเปเปเบกเบนเบเปเบซเบกเปเบเบฒเบเปเบซเบผเปเบเปเบเปเบเบทเบเปเบเบตเปเบก. เบเบงเบเปเบฎเบปเบฒเบกเบตเปเบเบเปเบเบตเบเบตเปเบกเบต JSON, เปเบฅเบฐเบเบนเปเบงเบฒเบเบชเบฐเปเบเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเบเบฒเบเปเบเบเปเบเบตเบเบตเป. เบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเปเบซเบผเบโเบเบธเบโเบเปเปโเปเบโเบเบญเบโเบเปเปโเบกเบนเบโเบเบฒเบโเปเบซเบผเปเบโเบเปเปโเบกเบนเบโ, data mart เปเบกเปเบโเบเบฒเบโเบเปเปโเบกเบนเบโเบเบตเปโเบกเบตโเบกเบนเบโเบเปเบฒโเบเบญเบโเบกเบทเปโเบซเบเบถเปเบโ.
เบเบฒเบเปเบเปเปเบเบขเปเบฒเบเบกเบตเปเบซเบเบเบปเบเบเบฐเปเบเบฑเบเบเบฒเบเปเบเปเบเบชเปเบงเบเปเปเบฒเบฎเปเบฒเบเปเบเปเบเปเบฅเบฐเบกเบทเป, เปเบเบดเปเบเบเบฐเบเปเบงเบเปเบซเปเปเบเบตเปเบกเบเบฒเบเปเบเปเบเบชเปเบงเบเปเปเปเปเบเปเบเบธเบเปเบกเบทเป. เบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเปเบเบฑเบเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเบเบต, Spark เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบเบฝเบเบเบฒเบเบดเบเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบ.
เบเปเบญเบเบญเบทเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบเบฒเบเปเบซเบผเบเปเบเบทเปเบญเบเบเบปเปเบ, เบเบฑเบเบเบถเบเบเปเปเบกเบนเบเบเบฑเปเบเบเบตเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบ, เปเบเบตเปเบกเบเบฝเบเปเบเปเบเบฒเบเปเบเปเบเบเบฑเบ. เบเบฒเบเบเบฐเบเบณเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเปเบฒเบฎเปเบฒเบ เปเบฅเบฐเปเบฎเบฑเบเบเบฝเบเบเบฑเปเบเบเบฝเบงเปเบเบปเปเบฒเบเบฑเปเบ:
df.write.partitionBy("date_load").mode("overwrite").parquet(dbpath + "/" + db + "/" + destTable)
เปเบเบกเบทเปเบเปเปเบกเบฒ, เบเบงเบเปเบฎเบปเบฒเปเบซเบผเบเบเบฝเบเปเบเป partition เปเบซเบกเป:
df.coalesce(1).write.mode("overwrite").parquet(dbpath + "/" + db + "/" + destTable +"/date_load=" + date_load + "/")
เบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบกเปเบเปเบเบทเปเบญเบฅเบปเบเบเบฐเบเบฝเบเปเบซเบกเปเปเบ Hive เปเบเบทเปเบญเบเบฑเบเบเบธเบ schema.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเปเบเบฑเบเบซเบฒเปเบเบตเบเบเบถเปเบ.
เบเบฑเบเบซเบฒเบเปเบฒเบญเบดเบ. เบเปเปเบเบปเบเบซเบผเบทเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, parquet เบเบปเบเปเบเปเบฎเบฑเบเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเป. เบเบตเปเปเบกเปเบเบเปเบญเบเบงเบดเบเบตเบเบฒเบ parquet เปเบฅเบฐ JSON เบเบฐเบเบดเบเบฑเบเบเบฑเบเบเบทเปเบเบเบตเปเบซเบงเปเบฒเบเปเบเบปเปเบฒเปเบเบเบเปเบฒเบเบเบฑเบ.
เปเบซเปเบเบดเบเบฒเบฅเบฐเบเบฒเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบปเบเบเบฐเบเบด. เบเบปเบงเบขเปเบฒเบ, เบกเบทเปเบงเบฒเบเบเบตเป JSON เบกเบฒเบฎเบญเบ:
ะะตะฝั 1: {"a": {"b": 1}},
เปเบฅเบฐเปเบเบกเบทเปเบเบตเป JSON เบเบฝเบงเบเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
ะะตะฝั 2: {"a": null}
เปเบซเปเปเบงเบปเปเบฒเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบกเบตเบชเบญเบเบเบฒเบเบดเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เปเบเปเบฅเบฐเบเบปเบเบกเบตเปเบชเบฑเปเบเบเบฝเบง.
เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเบญเปเบฒเบเบเปเปเบกเบนเบเปเบซเบผเปเบเบเบฑเบเบซเบกเบปเบ, Spark เบเบฐเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบเบฐเปเบเบ, เปเบฅเบฐเบเบฐเปเบเบปเปเบฒเปเบเบงเปเบฒ "a" เปเบกเปเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบญเบเบเบฐเปเบเบ "เปเบเบเบชเปเบฒเบ", เปเบเบเบกเบตเบเปเบญเบเบเปเปเบกเบนเบ "b" เบเบตเปเบเปเบญเบเบเบฑเบเบเบญเบเบเบฐเปเบเบ INT. เปเบเป, เบเปเบฒเปเบเปเบฅเบฐเบเบฒเบเปเบเปเบเบเบฑเบเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบเบเบเปเบฒเบเบซเบฒเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ parquet เบเบตเปเบกเบตเบฎเบนเบเปเบเบเบเบฒเบเปเบเปเบเบเบฑเบเบเบตเปเบเปเปเปเบเบปเปเบฒเบเบฑเบเปเบเป:
df1 (a: <struct<"b": INT>>)
df2 (a: STRING NULLABLE)
เบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเปเบกเปเบเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเบเบต, เบเบฑเปเบเบเบฑเปเบเบเบฒเบเปเบฅเบทเบญเบเปเบเปเบเบทเบเปเบเบตเปเบกเปเบเบฑเบเบเบดเปเบชเบ - เปเบกเบทเปเบญเบงเบดเปเบเบฒเบฐเบเปเปเบกเบนเบเปเบซเบผเปเบ, เปเบญเบปเบฒเบเปเบญเบเบซเบงเปเบฒเบเปเบเบปเปเบฒเบญเบญเบ:
df = spark.read.json("...", dropFieldIfAllNull=True)
เปเบเบเปเบฅเบฐเบเบตเบเบตเป, parquet เบเบฐเบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเปเบเปเบเบชเปเบงเบเบเบตเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเบฎเปเบงเบกเบเบฑเบ.
เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบนเปเบเบตเปเปเบเปเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฐเบเบดเปเบกเบขเปเบฒเบเบเบปเบกเบเบทเปเบเบขเบนเปเบเบตเปเบเบตเป. เปเบเบฑเบเบซเบเบฑเบ? เปเบกเปเบเปเบฅเปเบง, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบตเปเบเบงเปเบเปเบกเบเบตเปเบเบฐเบกเบตเบชเบญเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบเบตเปเบกเปเบเบตเบก. เบซเบผเบทเบชเบฒเบก. เบซเบผเบทเบชเบตเป. เบเปเบฒเบญเบดเบ, เปเบเบดเปเบเปเบเบทเบญเบเปเบเปเบเบญเบเบเบฐเปเบเบตเบเบเบถเปเบ, เปเบกเปเบเบงเปเบฒเบเบฐเปเบเบเบเบปเบงเปเบฅเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเปเบเบเบเปเบฒเบเบเบฑเบเปเบเปเบเบฅเป JSON เบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบเบปเบงเบขเปเบฒเบ, {intField: 1} เปเบฅเบฐ {intField: 1.1}. เบเปเบฒเบเปเบญเบเบเปเปเบกเบนเบเบเบฑเปเบเบเปเบฒเบงเบเบทเบเบเบปเบเปเบซเบฑเบเบขเบนเปเปเบเบเบฒเบเปเบเปเบเบเบฑเบเบซเบเบถเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ schema merge เบเบฐเบญเปเบฒเบเบเบธเบเบขเปเบฒเบเบขเปเบฒเบเบเบทเบเบเปเบญเบ, เบเปเบฒเปเบเบชเบนเปเบเบฐเปเบเบเบเบตเปเบเบทเบเบเปเบญเบเบเบตเปเบชเบธเบ. เปเบเปเบเปเบฒเบขเบนเปเปเบเบเบปเบงเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบซเบเบถเปเบเบเบฐเบกเบต intField: int, เปเบฅเบฐเบญเบตเบเบญเบฑเบเบซเบเบถเปเบเบเบฐเบกเบต intField: double.
เบกเบตเบเบธเบเบเปเปเปเบเบเบตเปเปเบเบทเปเบญเบเบฑเบเบเบฒเบเบเบฑเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเป:
df = spark.read.json("...", dropFieldIfAllNull=True, primitivesAsString=True)
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบกเบตเปเบเบเปเบเบตเบเบตเปเบกเบตเบเบฒเบเปเบเปเบเบเบฑเบเบเบตเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเบปเปเบฒเปเบเปเบเบเบญเบเบเปเปเบกเบนเบเบเบฝเบงเปเบฅเบฐ parquet เบเบตเปเบเบทเบเบเปเบญเบเบเบญเบ showcase เบเบฑเบเบซเบกเบปเบ. เปเบกเปเบเบเป? เบเปเป.
เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบทเปเปเบงเปเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเปเบฅเบปเบเบเบฐเบเบฝเบเบเบฒเบเบฐเบฅเบฒเบเปเบ Hive. Hive เบเปเปเปเบกเปเบเบเบปเบงเบเบดเบกเบเปเบญเบเปเบซเบเปเปเบเบเบทเปเบเบฒเบเบชเบฐเบซเบเบฒเบก, เปเบเบเบฐเบเบฐเบเบตเป parquet เปเบกเปเบเบเบปเบงเบเบดเบกเบเปเบญเบ. เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเปเบเปเบเบชเปเบงเบเบเบตเปเบกเบต schemas: field1: int, เปเบฅเบฐ Field1: int เปเบกเปเบเบเบทเบเบฑเบเบชเปเบฒเบฅเบฑเบ Hive, เปเบเปเบเปเปเปเบกเปเบเบชเปเบฒเบฅเบฑเบ Spark. เบขเปเบฒเบฅเบทเบกเบเปเบฝเบเบเบทเปเบเปเบญเบเบเปเปเบกเบนเบเปเบเบฑเบเบเบปเบงเบเบดเบกเบเปเบญเบ.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบต.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเปเปเบกเปเบเบเบฑเบเบซเบกเบปเบเบเปเบฒเบเบเบฒเบเบเบฑเปเบเบเบฑเปเบ. เบกเบตเบเบฑเบเบซเบฒเบเบตเบชเบญเบ, เบเบฑเบเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเบเบฑเบเบเบต. เปเบเบทเปเบญเบเบเบฒเบเปเบเปเบฅเบฐเบเบฒเบเบดเบเบฑเบเปเปเปเบเบทเบเบเบฑเบเบเบถเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบเบเปเบเบตเบเบฒเบเบดเบเบฑเบเบเบฐเบกเบตเปเบเบฅเปเบเปเบฅเบดเบเบฒเบ Spark, เบเบปเบงเบขเปเบฒเบ, เบเบธเบเบเบงเบฒเบกเบชเปเบฒเปเบฅเบฑเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ _SUCCESS. เบเบตเปเบเบฐเบชเบปเปเบเบเบปเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบฒเบเบฒเบก parquet. เปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเปเบฒเบเบปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบทเปเบญเบเปเบญเบเบเบฑเบเบเปเปเปเบซเป Spark เปเบเบตเปเบกเปเบเบฅเปเบเปเบฅเบดเบเบฒเบเปเบชเปเปเบเบเปเบเบต:
hadoopConf = sc._jsc.hadoopConfiguration()
hadoopConf.set("parquet.enable.summary-metadata", "false")
hadoopConf.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")
เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบเบฑเบเบเบธเบเบฑเบเบเบธเบเปเบกเบทเปเบกเบตเบเบฒเบเปเบเบตเปเบกเบเบฒเบเบดเบเบฑเบ parquet เปเบซเบกเปเปเบเบปเปเบฒเปเบเปเบเปเบเปเบเบต showcase เปเบเบปเปเบฒเบซเบกเบฒเบ, เบเปเบญเบเบเบตเปเบเปเปเบกเบนเบเบเบฒเบเปเบเบเบงเบดเปเบเบฒเบฐเบชเปเบฒเบฅเบฑเบเบกเบทเปเปเบกเปเบเบเบฑเปเบเบขเบนเป. เบเบงเบโเปเบฎเบปเบฒโเปเบเปโเปเบญเบปเบฒโเปเบโเปเบชเปโเบฅเปเบงเบโเบซเบเปเบฒโเบงเปเบฒโเบเปเปโเบกเบตโเบเบฒเบโเปเบเปเบโเบเบฑเบโเบเบตเปโเบกเบตโเบเปเปโเบเบฑเบโเปเบเปเบโเบเบฐโเปเบเบโเบเปเปโเบกเบนเบโ.
เปเบเป, เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฑเบเบซเบฒเบเบตเบชเบฒเบก. เปเบเบเบฑเบเบเบธเบเบฑเบ schema เบเบปเปเบงเปเบเปเบกเปเบเบเปเปเบฎเบนเปเบเบฑเบ, เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบฐเบฅเบฒเบเปเบ Hive เบกเบต schema เบเบตเปเบเปเปเบเบทเบเบเปเบญเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเปเบเปเบฅเบฐ partition เปเบซเบกเปเบกเบฑเบเบเบฐเบเปเบฒเบชเบฐเปเบซเบเบตเบเบฒเบเบเบดเบเปเบเบทเบญเบเปเบเบปเปเบฒเปเบเปเบ schema เปเบเป.
เบเปเบฒเบ เบเบณ เปเบเบฑเบเบเปเบญเบเบฅเบปเบเบเบฐเบเบฝเบเบเบฒเบเบฐเบฅเบฒเบเบเบทเบ เปเปเป. เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเบเปเบฒเบเป: เบญเปเบฒเบ parquet เบเบญเบเบซเบเปเบฒเบฎเปเบฒเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เปเบญเบปเบฒ schema เปเบฅเบฐเบชเปเบฒเบ DDL เปเบเบเบญเบตเบเปเบชเปเบกเบฑเบ, เปเบเบดเปเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเปเบเบเปเบเบตเปเบซเบกเปเปเบ Hive เปเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเบญเบ, เบเบฑเบเบเบธเบ schema เบเบญเบเบซเบเปเบฒเบฎเปเบฒเบเปเบเบปเปเบฒเบซเบกเบฒเบ.
เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฑเบเบซเบฒเบเบตเบชเบตเป. เปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเบฅเบปเบเบเบฐเบเบฝเบเบเบฒเบเบฐเบฅเบฒเบเบเบฑเปเบเบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเบญเบตเบเปเบชเป Spark. เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเบกเบฑเบเปเบญเบ, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบทเปเปเบงเปเบงเปเบฒเบเบปเปเบเบเบฒ parquet เบชเบฒเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเบปเบงเบญเบฑเบเบชเบญเบเบเบตเปเบเปเปเปเบเปเบฎเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเป Hive. เบเบปเบงเบขเปเบฒเบ, Spark เบเบดเปเบกเปเบชเบฑเปเบเบเบตเปเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบงเบดเปเบเบฒเบฐเปเบเบเปเบญเบ "corrupt_record". เบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบฑเปเบเบเปเบฒเบงเบเปเปเบชเบฒเบกเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบขเบนเปเปเบ Hive เปเบเบเบเปเปเบกเบตเบเบฒเบเบเบทเบเบซเบฅเบปเบเบซเบเบต.
เบฎเบนเปเปเบฅเบทเปเบญเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเปเบเบเบเบฒเบ:
f_def = ""
for f in pf.dtypes:
if f[0] != "date_load":
f_def = f_def + "," + f[0].replace("_corrupt_record", "`_corrupt_record`") + " " + f[1].replace(":", "`:").replace("<", "<`").replace(",", ",`").replace("array<`", "array<")
table_define = "CREATE EXTERNAL TABLE jsonevolvtable (" + f_def[1:] + " ) "
table_define = table_define + "PARTITIONED BY (date_load string) STORED AS PARQUET LOCATION '/user/admin/testJson/testSchemaEvolution/pq/'"
hc.sql("drop table if exists jsonevolvtable")
hc.sql(table_define)
เบฅเบฐโเบซเบฑเบ ("_corrupt_record", "`_corrupt_record`") + "" + f[1].replace(":", "`:").replace("<", "<`").replace(",", ",`").เปเบเบเบเบตเป("array<`", "array<") เปเบฎเบฑเบเปเบซเป DDL เบเบญเบเปเบ, i.e. เปเบเบเบเบตเปเบเบฐเปเบเบฑเบ:
create table tname (_field1 string, 1field string)
เบเปเบงเบเบเบทเปเบเปเบญเบเบเปเปเบกเบนเบเปเบเบฑเปเบ "_field1, 1field", เบเบงเบฒเบกเบเบญเบเปเบ DDL เปเบกเปเบเปเบฎเบฑเบเปเบซเปเบเบทเปเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบทเบเบซเบเบต: เบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบ `tname` (`_field1` string, `1field` string).
เบเปเบฒเบเบฒเบกเบเบตเปเปเบเบตเบเบเบทเปเบ: เบงเบดเบเบตเบเบฒเบเบฎเบฑเบ dataframe เบขเปเบฒเบเบเบทเบเบเปเบญเบเบเบฑเบ schema เบเบปเบเบเปเบงเบ (เปเบเบฅเบฐเบซเบฑเบ pf)? เบงเบดเบเบตเบเบฒเบเปเบเปเบฎเบฑเบ pf เบเบตเป? เบเบตเปเปเบกเปเบเบเบฑเบเบซเบฒเบเบตเบซเปเบฒ. Reread เปเบเบ เบเบฒเบ เบเบญเบ เบเบฒเบ เปเบเปเบ เบเบฑเบ เบเบฑเบ เบซเบกเบปเบ เบเบฒเบ เปเบเบ เปเบเบต เบเบตเป เบกเบต เปเบเบฅ เป parquet เบเบญเบ showcase เปเบเบปเปเบฒ เบซเบกเบฒเบ? เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบกเปเบเบเบญเบเปเบเบเบตเปเบชเบธเบ, เปเบเปเบกเบตเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบ.
schema เปเบกเปเบเปเบฅเปเบงเบขเบนเปเปเบ Hive. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบ schema เปเบซเบกเปเปเบเบเบเบฒเบเบชเบปเบกเบเบปเบ schema เบเบญเบเบเบฒเบเบฐเบฅเบฒเบเบเบฑเบเบซเบกเบปเบเปเบฅเบฐเบเบฒเบเปเบเปเบเบเบฑเบเปเบซเบกเป. เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบญเบปเบฒเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบ Hive เปเบฅเบฐเบชเบปเบกเบเบปเบเบเบฑเบ schema เบเบญเบเบเบฒเบเปเบเปเบเบเบฑเบเปเบซเบกเป. เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเบเบฒเบเบญเปเบฒเบ metadata เบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบ Hive, เบเบฑเบเบเบถเบเบกเบฑเบเปเบงเปเปเบเปเบเบเปเบเบตเบเบปเปเบงเบเบฒเบง, เปเบฅเบฐเปเบเป Spark เปเบเบทเปเบญเบญเปเบฒเบเบเบฑเบเบชเบญเบเบเบฒเบเบดเบเบฑเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ.
เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบกเบตเบเบธเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ: เบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบปเปเบเบชเบฐเบเบฑเบเปเบ Hive เปเบฅเบฐเบเบฒเบเปเบเปเบเบเบฑเบเปเบซเบกเป. เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบกเบตเบเปเปเบกเบนเบ. เบกเบฑเบเบเบฑเบเบเบปเบเบเบฝเบเปเบเปเปเบเปเบฎเบฑเบ schema เปเบซเบกเปเบเบตเปเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบ schema เบซเบเปเบฒเบฎเปเบฒเบเปเบฅเบฐเบเปเบญเบเปเบซเบกเปเบเบฒเบเบเบฒเบเปเบเปเบเบเบฑเบเบเบตเปเบชเปเบฒเบเบเบถเปเบ:
from pyspark.sql import HiveContext
from pyspark.sql.functions import lit
hc = HiveContext(spark)
df = spark.read.json("...", dropFieldIfAllNull=True)
df.write.mode("overwrite").parquet(".../date_load=12-12-2019")
pe = hc.sql("select * from jsonevolvtable limit 1")
pe.write.mode("overwrite").parquet(".../fakePartiton/")
pf = spark.read.option("mergeSchema", True).parquet(".../date_load=12-12-2019/*", ".../fakePartiton/*")
เบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบ DDL, เบเบทเบเบฑเบเปเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบกเบฒ.
เบเปเบฒเบฅเบฐเบเบปเบเบเปเบญเบเปเบชเปเบเบฑเบเบซเบกเบปเบเปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเบเบทเบเบเปเบญเบ, เบเบท, เบกเบตเบเบฒเบเปเบซเบผเบเปเบเบทเปเบญเบเบเบปเปเบ, เปเบฅเบฐเบเบฒเบเบฐเบฅเบฒเบเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเปเบ Hive, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเบฑเบเบเบธเบ.
เปเบฅเบฐเบเบฑเบเบซเบฒเบชเบธเบเบเปเบฒเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเปเบเปเปเบเบตเปเบกเบเบฒเบเบดเบเบฑเบเบเบฑเบเบเบฒเบเบฐเบฅเบฒเบ Hive, เปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบเบฐเปเบเบ. เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฑเบเบเบฑเบ Hive เปเบเบทเปเบญเปเบเปเปเบเปเบเบเบชเปเบฒเบเบเบฒเบเปเบเปเบเบเบฑเบเบเบญเบเบกเบฑเบ:
from pyspark.sql import HiveContext
hc = HiveContext(spark)
hc.sql("MSCK REPAIR TABLE " + db + "." + destTable)
เบงเบฝเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบญเบเบเบฒเบเบญเปเบฒเบ JSON เปเบฅเบฐเบเบฒเบเบชเปเบฒเบเบซเบเปเบฒเบฎเปเบฒเบเปเบเบเบญเบตเบเปเบชเปเบกเบฑเบเปเบฎเบฑเบเปเบซเปเบเบฒเบเปเบญเบปเบฒเบเบฐเบเบฐเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเบซเบผเบฒเบ, เบงเบดเบเบตเปเบเปเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบญเบเบซเบฒเปเบเบเบเปเบฒเบเบซเบฒเบ. เปเบฅเบฐเปเบเบดเบเปเบกเปเบเบงเปเบฒเบงเบดเบเบตเปเบเปเปเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบเปเบฒเบเบเบฒเบ, เบกเบฑเบเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเปเบเบทเปเบญเบเบญเบเบซเบฒเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ.
เปเบเบทเปเบญเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเปเปเบชเปเบฒเบเบเบญเบ showcase, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเบญเบ:
- เปเบเบตเปเบกเบเบฒเบเบดเบเบฑเบเปเบชเปเบเปเบญเบเบงเบฒเบเบชเบฐเปเบเบ, เบเปเบฒเบเบฑเบเปเบเบฅเปเบเบฒเบเบเปเบฅเบดเบเบฒเบ
- เบเบฑเบเบเบฒเบเบเบฑเบเบเปเบญเบเบซเบงเปเบฒเบเปเบเบปเปเบฒเปเบเบเปเปเบกเบนเบเปเบซเบผเปเบเบเบตเป Spark เปเบเปเบเบดเบก
- เบเบฒเบชเบเบเบฐเปเบเบเบเปเบฒเบเปเปเบชเปเบชเบฐเบเบฃเบดเบ
- เบเปเบฝเบเบเบทเปเบเปเบญเบเบเปเปเบกเบนเบเปเบเบฑเบเบเบปเบงเบเบดเบกเบเปเบญเบ
- เบเบฒเบเบญเบฑเบเปเบซเบฅเบเบเปเปเบกเบนเบเปเบเบเบเปเบฒเบเบซเบฒเบเปเบฅเบฐเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบเบฒเบเบฐเบฅเบฒเบเปเบ Hive (เบเบฒเบเบเบฐเบฅเบดเบ DDL)
- เบขเปเบฒเบฅเบทเบกเบญเบญเบเบเบฒเบเบเบทเปเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบตเปเบญเบฒเบเบเบฐเบเปเปเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบ Hive
- เบฎเบฝเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบธเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบเบฒเบเบฐเบฅเบฒเบเปเบ Hive
เบชเบฐเบซเบฅเบธเบเบฅเบงเบกเปเบฅเปเบง, เบเบงเบเปเบฎเบปเบฒเบชเบฑเบเปเบเบเบงเปเบฒเบเบฒเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเบชเปเบฒเบเบเปเบญเบเบขเปเบฝเบกเบเบญเบเบฎเปเบฒเบเปเบกเปเบ fraught เบเบฑเบ pitfalls เบซเบผเบฒเบ. เบเบฑเปเบเบเบฑเปเบ, เปเบเบเปเบฅเบฐเบเบตเบเบตเปเบกเบตเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ, เบกเบฑเบเบเบตเบเบงเปเบฒเบเบตเปเบเบฐเบเบดเบเบเปเปเบเบฑเบเบเบนเปเบฎเปเบงเบกเบเบฒเบเบเบตเปเบกเบตเบเบฐเบชเบปเบเบเบฒเบเบเบตเปเบกเบตเบเบงเบฒเบกเบเปเบฒเบเบฒเบเบเบตเปเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ.
เบเบญเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเปเบฒเบเบเบปเบเบเบงเบฒเบกเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบซเบงเบฑเบเบงเปเบฒเบเปเบฒเบเบเบฐเบเบญเบเบซเบฒเบเปเปเบกเบนเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com