เดชเตเดฐเดฟเดฏ เดตเดพเดฏเดจเดเตเดเดพเดฐเต, เดจเดฒเตเดฒ เดฆเดฟเดตเดธเด!
เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ, เดจเดฟเดฏเตเดซเตเดฒเตเดเตโเดธเดฟเดจเตเดฑเต เดฌเดฟเดเต เดกเดพเดฑเตเดฑ เดธเตเดฒเตเดฏเตเดทเตปเดธเต เดฌเดฟเดธเดฟเดจเดธเต เดเดฐเดฟเดฏเดฏเดฟเดฒเต เดชเตเดฐเดฎเตเด เดเตบเดธเตพเดเตเดเดจเตเดฑเต เด เดชเตเดชเดพเดเตเดเต เดธเตเดชเดพเตผเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดธเตเดเตเดฐเดเตเดเตผ เดทเตเดเตเดธเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดชเตเดทเดจเตเดเตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเต.
เดเดฐเต เดกเดพเดฑเตเดฑ เดตเดฟเดถเดเดฒเดจ เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดญเดพเดเดฎเดพเดฏเดฟ, เด เดฏเดเตเด เดเดเดจเดพเดชเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดฏเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดธเตเดฑเตเดฑเตเตผ เดซเตเดฐเดฃเตเดเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดฎเดคเดฒ เดชเดฒเดชเตเดชเตเดดเตเด เดเดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต.
เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดต JSON เด เดฒเตเดฒเตเดเตเดเดฟเตฝ XML เดเดฏเดฟ เดธเดเดฐเดเตเดทเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฒเตเดเตเดเตพ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดตเดฟเดตเดฟเดง เดธเดฟเดธเตเดฑเตเดฑเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเตเดฐเดคเดฟเดเดฐเดฃเดเตเดเดณเดพเดฃเต. เดกเดพเดฑเตเดฑ เดนเดกเตเดชเตเดชเดฟเดฒเตเดเตเดเต เด เดชเตโเดฒเตเดกเต เดเตเดฏเตโเดคเต, เดคเตเดเตผเดจเตเดจเต เดจเดฟเดเตเดเตพ เด เดตเดฐเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดธเตเดฑเตเดฑเตเตผ เดซเตเดฐเดฃเตเดเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดธเตเดทเตเดเดฟเดเตเด เดทเตเดเตเดธเดฟเดฒเตเดเตเดเตเดณเตเดณ เดเดเตเดธเดธเต เดจเดฎเตเดเตเดเต เดธเดเดเดเดฟเดชเตเดชเดฟเดเตเดเดพเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดเดชเดพเดฒ เดตเดดเดฟ.
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดพเตผเดเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเตผ เดซเตเดฐเดฃเตเดเดฟเดจเตเดฑเต เดธเตเดเตเดฎ เดฎเตเตปเดเตเดเตเดเดฟ เด เดฑเดฟเดฏเดฟเดฒเตเดฒ. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดธเตเดเตเดฎเตเด เดฎเตเตปเดเตเดเตเดเดฟ เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เดเดคเต เดกเดพเดฑเตเดฑเดฏเต เดเดถเตเดฐเดฏเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดเดเตเดเตพ เด เดตเดณเดฐเต เด เดฏเดเตเด เดเดเดจเดพเดชเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดฏเดพเดฃเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเต.
เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดจเตเดจเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฐเดคเดฟเดเดฐเดฃเด เดฒเตเดเต เดเตเดฏเตเดคเต:
{source: "app1", error_code: ""}
เดจเดพเดณเต เด เดคเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดคเตเดคเดฐเด เดตเดฐเตเดจเตเดจเต:
{source: "app1", error_code: "error", description: "Network error"}
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดทเตเดเตเดธเดฟเดฒเตเดเตเดเต เดเดฐเต เดซเตเตฝเดกเต เดเตเดเดฟ เดเตเตผเดเตเดเดฃเด - เดตเดฟเดตเดฐเดฃเด, เด เดคเต เดตเดฐเตเดฎเต เดเดฒเตเดฒเดฏเต เดเดจเตเดจเต เดเตผเดเตเดเตเด เด เดฑเดฟเดฏเดฟเดฒเตเดฒ.
เด เดคเตเดคเดฐเด เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดเดฐเต เดธเตเดฑเตเดฑเตเตผเดซเตเดฐเดฃเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดฎเดคเดฒ เดตเดณเดฐเต เดธเตเดฑเตเดฑเดพเตปเดกเตเตผเดกเต เดเดฃเต, เดเดคเดฟเดจเดพเดฏเดฟ เดธเตเดชเดพเตผเดเตเดเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดเตเดณเตเดเตพ เดเดฃเตเดเต. เดเดฑเดตเดฟเด เดกเดพเดฑเตเดฑ เดชเดพเดดเตโเดธเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, JSON, XML เดเดจเตเดจเดฟเดตเดฏเตโเดเตเดเต เดชเดฟเดจเตเดคเตเดฃเดฏเตเดฃเตเดเต, เดฎเตเดฎเตเดชเต เด เดฑเดฟเดฏเดชเตเดชเตเดเดพเดคเตเดค เดเดฐเต เดธเตเดเตเดฎเดฏเตเดเตเดเต, schemaEvolution-เดจเตเดณเตเดณ เดชเดฟเดจเตเดคเตเดฃ เดจเตฝเดเตเดจเตเดจเต.
เดเดฑเตเดฑเดจเตเดเตเดเดคเตเดคเดฟเตฝ, เดชเดฐเดฟเดนเดพเดฐเด เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต. เดจเดฟเดเตเดเตพ JSON เดเดณเตเดณ เดเดฐเต เดซเตเตพเดกเตผ เดเดเตเดคเตเดคเต เดเดฐเต เดกเดพเดฑเตเดฑ เดซเตเดฐเตเดฏเดฟเดฎเดฟเดฒเตเดเตเดเต เดตเดพเดฏเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดธเตเดชเดพเตผเดเตเดเต เดเดฐเต เดธเตเดเตเดฎ เดธเตเดทเตเดเดฟเดเตเดเตเด, เดจเตเดธเตเดฑเตเดฑเดกเต เดกเดพเดฑเตเดฑเดฏเต เดเดเดจเดเดณเดพเดเตเดเดฟ เดฎเดพเดฑเตเดฑเตเด. เดเตเดเดพเดคเต, เดนเตเดตเต เดฎเตเดฑเตเดฑเดพเดธเตเดฑเตเดฑเตเดฑเดฟเตฝ เดธเตเดฑเตเดฑเตเดฑเดฟเดจเตเดฑเต เดฎเตเตปเดญเดพเดเด เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดเดเดชเดพเดฒเดฏเดฟเดฒเตเด เดชเดฟเดจเตเดคเตเดฃเดฏเตเดเตเดเตเดจเตเดจ เดชเดพเตผเดเตเดเตเดตเตเดฑเตเดฑเดฟเตฝ เดเดฒเตเดฒเดพเด เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
เดเดฒเตเดฒเดพเด เดฒเดณเดฟเดคเดฎเดพเดฃเตเดจเตเดจเต เดคเตเดจเตเดจเตเดจเตเดจเต.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเดจเดฟเดฒเต เดเตเดฑเดฟเดฏ เดเดฆเดพเดนเดฐเดฃเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดพเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดจเตเดคเตเดเตเดฏเตเดฏเดฃเดฎเตเดจเตเดจเต เดตเตเดฏเดเตเดคเดฎเดฒเตเดฒ.
เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเตป เดเดฐเต เดธเตเดฑเตเดฑเตเตผ เดซเตเดฐเดฃเตเดเต เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดธเดฎเตเดชเดจเดคเตเดคเต เดตเดฟเดตเดฐเดฟเดเตเดเตเดจเตเดจเต, เดชเดเตเดทเต JSON เด เดฒเตเดฒเตเดเตเดเดฟเตฝ XML เดเดฐเต เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเดฎเดฟเดฒเตเดเตเดเต เดตเดพเดฏเดฟเดเตเดเตเด.
เด เดคเดพเดฏเดคเต, JSON เดเดเตเดเดจเต เดตเดพเดฏเดฟเดเตเดเดพเดฎเตเดจเตเดจเตเด เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเตเด เดเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต:
df = spark.read.json(path...)
เดธเตเดชเดพเตผเดเตเดเดฟเดจเต เดกเดพเดฑเตเดฑ เดฒเดญเตเดฏเดฎเดพเดเตเดเดพเตป เดเดคเต เดฎเดคเดฟเดฏเดพเดเตเด.
เดชเตเดฐเดพเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ, เดเดฐเต เดซเตเตพเดกเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต JSON เดซเดฏเดฒเตเดเตพ เดตเดพเดฏเดฟเดเตเดเต เดเดฐเต เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเด เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดเตเดเดพเตพ เดตเดณเดฐเต เดธเดเตเดเตเตผเดฃเตเดฃเดฎเดพเดฃเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต. เดธเดพเดนเดเดฐเตเดฏเด เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต: เดเดคเดฟเดจเดเด เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดธเตเดฑเตเดฑเตเตผเดซเตเดฐเดฃเตเดเต เดเดฃเตเดเต, เดเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดตเดฐเตเดจเตเดจเต, เด เดต เดธเตเดฑเตเดฑเตเดฑเดฟเดจเตเดฑเต เดฎเตเตปเดญเดพเดเดคเตเดคเตเดเตเดเต เดเตเตผเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เดธเตเดเตเด เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเตเดเดพเด เดเดจเตเดจเดคเต เดฎเดฑเดเตเดเดฐเตเดคเต.
เดเดฐเต เดทเตเดเตเดธเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเตเดเตเด เดเดชเตเดฐเดเดพเดฐเดฎเดพเดฃเต:
เดเตเดธเดจเตเดฎเตเดเตเดธ เดเดเตเดเด. เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดชเตเดฐเดคเดฟเดฆเดฟเดจ เดฑเตเดฒเตเดกเดฟเดเดเดฟเดจเตเดชเตเดชเด เดกเดพเดฑเตเดฑ เดนเดกเตเดชเตเดชเดฟเดฒเตเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดทเดจเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดชเตเดฐเดพเดฐเดเดญ เดกเดพเดฑเตเดฑ เดฆเดฟเดตเดธเด เด เดจเตเดธเดฐเดฟเดเตเดเต เดชเดพเตผเดเตเดเตเดทเตป เดเตเดฏเตเดค เดเดฐเต เดซเตเตพเดกเตผ เดเดคเต เดฎเดพเดฑเตเดจเตเดจเต.
เดเตเดธเดจเตเดฎเตเดเตเดธ เดเดเตเดเด. เดชเตเดฐเดพเดฐเดเดญ เดฒเตเดกเต เดธเดฎเดฏเดคเตเดคเต, เด เดซเตเตพเดกเตผ เดธเตเดชเดพเตผเดเตเดเต เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเด เดชเดพเตผเดธเดฌเดฟเตพ เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเตฝ เดธเดเดฐเดเตเดทเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเดพเตผเดเตเดเตเดตเตเดฑเตเดฑเดฟเตฝ, เด เดคเต เดชเดฟเดจเตเดจเตเดเต เดเดเดชเดพเดฒเดฏเดฟเดฒเตเดเตเดเต เดเดฑเดเตเดเตเดฎเดคเดฟ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด. เด เดเดเตเดเด เดตเดฐเต เดถเตเดเดฐเดฟเดเตเด เดเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดฏเตเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดคเต เดเดฐเต เดเดพเตผเดเตเดฑเตเดฑเต เดทเตเดเตเดธเต เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดเตเดธเดจเตเดฎเตเดเตเดธ เดเดเตเดเด. เดเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด เดธเตเดฑเตเดฑเตเดฑเดฟเดจเตเดฑเต เดฎเตเตปเดญเดพเดเด เด
เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจ เดเดฐเต เดกเตเตบเดฒเตเดกเต เดธเตเดทเตโเดเดฟเดเตเดเต.
เดเตปเดเตเดฐเดฟเดฎเตเดจเตเดฑเตฝ เดฒเตเดกเดฟเดเดเต, เดทเตเดเตเดธเต เดชเดพเตผเดเตเดเตเดทเตป เดเตเดฏเตเดฏเตเดฃเตเดเดคเดฟเดจเตเดฑเต เดเดตเดถเตเดฏเดเดค, เดทเตเดเตเดธเดฟเดจเตเดฑเต เดชเตเดคเตเดตเดพเดฏ เดธเตเดเตเด เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเตเดฆเตเดฏเด เดเดจเตเดจเดฟเดตเดฏเตเดฃเตเดเต.
เดจเดฎเตเดเตเดเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดเดเตเดเตเดเดพเด. เดเดฐเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฆเตเดฏ เดเดเตเดเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟ, JSON เดซเดฏเดฒเตเดเตพ เดเดฐเต เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เด เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดจเดฎเตเดเตเดเต เดชเดฑเดฏเดพเด.
เด เดตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเด เดธเตเดทเตโเดเดฟเดเตเดเตเดจเตเดจเดคเต, เดคเตเดเตผเดจเตเดจเต เด เดคเต เดเดฐเต เดทเตเดเตเดธเดพเดฏเดฟ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต เดเดฐเต เดชเตเดฐเดถเตโเดจเดฎเดฒเตเดฒ. เดธเตเดชเดพเตผเดเตเดเต เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเดจเดฟเตฝ เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดเดฃเตเดเตเดคเตเดคเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดเดฆเตเดฏ เดเดเตเดเดฎเดพเดฃเดฟเดคเต:
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 เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตโเดคเต, เดคเตเดเตผเดจเตเดจเต เดเดเตเดเตพ เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเด เดเดฐเต เดชเดพเตผเดเตเดเดฑเตเดฑเต เดเดฏเดฟ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดเดคเต เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดฐเตเดคเดฟเดฏเดฟเตฝ เดนเตเดตเดฟเตฝ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดจเตเดจเต:
df.write.format(โparquetโ).option('path','<External Table Path>').saveAsTable('<Table Name>')
เดเดเตเดเตพเดเตเดเต เดเดฐเต เดตเดฟเตปเดกเต เดฒเดญเดฟเดเตเดเตเด.
เดชเดเตเดทเต, เด เดเตเดคเตเดค เดฆเดฟเดตเดธเด, เดเดฑเดตเดฟเดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดเตเตผเดคเตเดคเต. เดเดเตเดเตพเดเตเดเต JSON เดเดณเตเดณ เดเดฐเต เดซเตเตพเดกเดฑเตเด เด เดซเตเตพเดกเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดทเตเดเดฟเดเตเด เดเดฐเต เดทเตเดเตเดธเตเด เดเดฃเตเดเต. เดเดฑเดตเดฟเดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด เดเตเดคเตเดค เดฌเดพเดเตเดเต เดกเดพเดฑเตเดฑ เดฒเตเดกเตเดเตเดฏเตโเดคเดคเดฟเดจเต เดถเตเดทเด, เดกเดพเดฑเตเดฑเดพ เดฎเดพเตผเดเตเดเดฟเตฝ เดเดฐเต เดฆเดฟเดตเดธเดคเตเดคเต เดกเดพเดฑเตเดฑ เดจเดทเตโเดเดฎเดพเดฏเดฟ.
เดฒเตเดเดฟเดเตเดเตฝ เดธเตเดฒเตเดฏเตเดทเตป เดธเตเดฑเตเดฑเตเตผ เดซเตเดฐเดฃเตเดเต เดชเดเตฝ เดตเดฟเดญเดเดฟเดเตเดเตเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดเดคเต เด เดเตเดคเตเดค เดฆเดฟเดตเดธเดตเตเด เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดทเตป เดเตเตผเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเด. เดเดคเดฟเดจเตเดณเตเดณ เดธเดเดตเดฟเดงเดพเดจเดตเตเด เดจเดจเตเดจเดพเดฏเดฟ เด เดฑเดฟเดฏเดพเด, เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ เดตเตเดตเตเดตเตเดฑเต เดเดดเตเดคเดพเตป เดธเตเดชเดพเตผเดเตเดเต เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต.
เดเดฆเตเดฏเด, เดเดเตเดเตพ เดเดฐเต เดชเตเดฐเดพเดฐเดเดญ เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต, เดฎเตเดเดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดเตเดเดคเตเดชเตเดฒเต เดกเดพเดฑเตเดฑ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเต, เดชเดพเตผเดเตเดเตเดทเดจเดฟเดเดเต เดฎเดพเดคเตเดฐเด เดเตเตผเดเตเดเตเดจเตเดจเต. เด เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเต เดธเตเดฑเตเดฑเตเตผเดซเตเดฐเดฃเตเดเต เดเดจเตเดทเตเดฏเดฒเตเดธเตเดทเตป เดเดจเตเดจเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต, เดเดคเต เดเดฐเดฟเดเตเดเตฝ เดฎเดพเดคเตเดฐเด เดเตเดฏเตเดฏเตเดจเตเดจเต:
df.write.partitionBy("date_load").mode("overwrite").parquet(dbpath + "/" + db + "/" + destTable)
เด เดเตเดคเตเดค เดฆเดฟเดตเดธเด, เดเดเตเดเตพ เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดทเตป เดฎเดพเดคเตเดฐเด เดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเต:
df.coalesce(1).write.mode("overwrite").parquet(dbpath + "/" + db + "/" + destTable +"/date_load=" + date_load + "/")
เดธเตโเดเตเดฎ เด
เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดนเตเดตเดฟเตฝ เดตเตเดฃเตเดเตเด เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เด
เดตเดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดตเดฟเดเตเดฏเดพเดฃเต เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดฃเตเดเดพเดเตเดจเตเดจเดคเต.
เดเดฆเตเดฏเดคเตเดคเต เดชเตเดฐเดถเตเดจเด. เดคเดพเดฎเดธเดฟเดฏเดพเดคเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดชเดฟเดจเตเดจเตเดเต, เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดเดพเดเตเดจเตเดจ เดชเดพเตผเดเตเดเดฑเตเดฑเต เดตเดพเดฏเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ. เดถเตเดจเตเดฏเดฎเดพเดฏ เดซเตเตฝเดกเตเดเดณเต parquet เดเด JSON เดเด เดเดเตเดเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดธเดฎเตเดชเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดพเดฃเต เดเดคเดฟเดจเต เดเดพเดฐเดฃเด.
เดจเดฎเตเดเตเดเต เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดเดฐเตเดฏเด เดชเดฐเดฟเดเดฃเดฟเดเตเดเดพเด. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดจเตเดจเดฒเต JSON เดเดคเตเดคเดฟ:
ะะตะฝั 1: {"a": {"b": 1}},
เดเดจเตเดจเต เด เดคเต JSON เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเดจเตเดจเต:
ะะตะฝั 2: {"a": null}
เดจเดฎเตเดเตเดเต เดฐเดฃเตเดเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ เดเดฃเตเดเตเดจเตเดจเต เดชเดฑเดฏเดพเด, เดเดฐเตเดจเตเดจเดฟเดจเตเด เดเดฐเต เดตเดฐเดฟ.
เดเดเตเดเตพ เดฎเตเดดเตเดตเตป เดเดฑเดตเดฟเด เดกเดพเดฑเตเดฑเดฏเตเด เดตเดพเดฏเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดคเดฐเด เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเดพเตป เดธเตเดชเดพเตผเดเตเดเดฟเดจเต เดเดดเดฟเดฏเตเด, เดเตเดเดพเดคเต "a" เดเดจเตเดจเดคเต INT เดเตเดชเตเดชเดฟเดจเตเดฑเต "b" เดเดจเตเดจ เดจเตเดธเตเดฑเตเดฑเดกเต เดซเตเตฝเดกเต เดเดณเตเดณ "เดเดเดจ" เดเดจเตเดจ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดเดฐเต เดซเตเตฝเดกเดพเดฃเตเดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เดชเดเตเดทเต, เดเดฐเต เดชเดพเตผเดเตเดเตเดทเดจเตเด เดตเตเดตเตเดตเตเดฑเต เดธเดเดฐเดเตเดทเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดชเตเดฐเตเดคเตเดคเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เดชเดพเตผเดเตเดเตเดทเตป เดธเตเดเตเดฎเตเดเดณเตเดณเตเดณ เดเดฐเต เดชเดพเตผเดเตเดเดฑเตเดฑเต เดจเดฎเตเดเตเดเต เดฒเดญเดฟเดเตเดเตเด:
df1 (a: <struct<"b": INT>>)
df2 (a: STRING NULLABLE)
เด เดธเดพเดนเดเดฐเตเดฏเด เดจเดจเตเดจเดพเดฏเดฟ เด เดฑเดฟเดฏเดพเด, เด เดคเดฟเดจเดพเตฝ เดเดฐเต เดเดชเตเดทเตป เดชเตเดฐเดคเตเดฏเตเดเด เดเตเตผเดคเตเดคเดฟเดเตเดเตเดฃเตเดเต - เดเดฑเดตเดฟเด เดกเดพเดฑเตเดฑ เดชเดพเดดเตเดธเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ, เดถเตเดจเตเดฏเดฎเดพเดฏ เดซเตเตฝเดกเตเดเตพ เดจเตเดเตเดเด เดเตเดฏเตเดฏเตเด:
df = spark.read.json("...", dropFieldIfAllNull=True)
เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดชเดพเตผเดเตเดเตเดตเตเดฑเตเดฑเดฟเตฝ เดเดฐเตเดฎเดฟเดเตเดเต เดตเดพเดฏเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเด.
เดชเตเดฐเดพเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ เดเดคเต เดเตเดฏเตเดคเดตเตผ เดเดตเดฟเดเต เดเดฏเตเดชเตเดเต เดชเตเดเตเดเดฟเดฐเดฟเดเตเดเตเด. เดเดจเตเดคเตเดเตเดฃเตเดเต? เด
เดคเต, เดเดพเดฐเดฃเด เดฐเดฃเตเดเต เดธเดพเดนเดเดฐเตเดฏเดเตเดเตพ เดเตเดเดฟ เดเดฃเตเดเดพเดเดพเตป เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดเต. เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเตเดจเตเดจเต. เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดพเดฒเต. เดเดฆเตเดฏเดคเตเดคเตเดคเต, เดเดคเดพเดฃเตเดเต เดเดฑเดชเตเดชเดพเดฏเตเด เดธเดเดญเดตเดฟเดเตเดเตเด, เดตเตเดฏเดคเตเดฏเดธเตเดค JSON เดซเดฏเดฒเตเดเดณเดฟเตฝ เดธเดเดเตเดฏเดพ เดคเดฐเดเตเดเตพ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ เดเดพเดฃเดชเตเดชเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, {intField: 1}, {intField: 1.1}. เด
เดคเตเดคเดฐเด เดซเตเตฝเดกเตเดเตพ เดเดฐเต เดชเดพเตผเดเตเดเตเดทเดจเดฟเตฝ เดเดฃเตเดเตเดคเตเดคเดฟเดฏเดพเตฝ, เดธเตเดเตเดฎ เดฒเดฏเดจเด เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดตเดพเดฏเดฟเดเตเดเตเด, เดเดคเต เดเดฑเตเดฑเดตเตเด เดเตเดคเตเดฏเดฎเดพเดฏ เดคเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเดฏเดฟเดเตเดเตเด. เดเดจเตเดจเดพเตฝ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดตเดฏเดฟเดฒเดพเดฃเตเดเตเดเดฟเตฝ, เดเดจเตเดจเดฟเตฝ intField: int เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดฎเดฑเตเดฑเตเดจเตเดจเต intField: เดเดฐเดเตเดเดฟ เดเดฃเตเดเดพเดฏเดฟเดฐเดฟเดเตเดเตเด.
เด เดธเดพเดนเดเดฐเตเดฏเด เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเตเดฒเดพเดเต เดเดฃเตเดเต:
df = spark.read.json("...", dropFieldIfAllNull=True, primitivesAsString=True)
เดเดฐเตเดฑเตเดฑ เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเดฎเดฟเดฒเตเดเตเดเตเด เดฎเตเดดเตเดตเตป เดทเตเดเตเดธเดฟเดจเตเดฑเตเดฏเตเด เดธเดพเดงเตเดตเดพเดฏ เดชเดพเตผเดเตเดเดฑเตเดฑเดฟเดฒเตเดเตเดเตเด เดตเดพเดฏเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ เดเดณเตเดณ เดเดฐเต เดซเตเตพเดกเตผ เดเดชเตเดชเตเตพ เดจเดฎเตเดเตเดเตเดฃเตเดเต. เด เดคเต? เดเดฒเตเดฒ.
เดเดเตเดเตพ เดฎเตเดถ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดคเดคเต เดชเตเดดเดฏเดฟเตฝ เดเดฃเตเดจเตเดจเต เดเตผเดเตเดเดฃเด. เดซเตเตฝเดกเต เดจเดพเดฎเดเตเดเดณเดฟเตฝ เดนเตเดตเต เดเตเดธเต เดธเตเตปเดธเดฟเดฑเตเดฑเตเดตเต เด เดฒเตเดฒ, เด เดคเตเดธเดฎเดฏเด เดชเดพเตผเดเตเดเตเดตเตเดฑเตเดฑเต เดเตเดธเต เดธเตเตปเดธเดฟเดฑเตเดฑเตเดตเต เดเดฃเต. เด เดคเดฟเดจเดพเตฝ, เดธเตเดเตเดฎเดเดณเตเดณเตเดณ เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ: field1: int, Field1: int เดเดจเตเดจเดฟเดต เดนเตเดตเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เดชเดเตเดทเต เดธเตเดชเดพเตผเดเตเดเดฟเดจเต เด เดฒเตเดฒ. เดซเตเตฝเดกเต เดจเดพเดฎเดเตเดเตพ เดเตเดฑเดฟเดฏเดเตเดทเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต.
เด เดคเดฟเดจเตเดถเตเดทเด, เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดฃเตเดจเตเดจเต เดคเตเดจเตเดจเตเดจเตเดจเต.
เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฒเตเดฒเดพเด เด เดคเตเดฐ เดฒเดณเดฟเดคเดฎเดฒเตเดฒ. เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเตเด เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจเดคเตเดฎเดพเดฏ เดเดฐเต เดชเตเดฐเดถเตเดจเดฎเตเดฃเตเดเต. เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดทเดจเตเด เดตเตเดตเตเดตเตเดฑเต เดธเดเดฐเดเตเดทเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดชเดพเตผเดเตเดเตเดทเตป เดซเตเตพเดกเดฑเดฟเตฝ Spark เดธเตผเดตเตเดธเต เดซเดฏเดฒเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, _SUCCESS เดเดชเตเดชเดฑเตเดทเตป เดธเดเตเดธเดธเต เดซเตเดฒเดพเดเต. เดชเดพเตผเดเตเดเตเดตเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดคเต เดเดฐเต เดชเดฟเดถเดเดฟเดจเต เดเดพเดฐเดฃเดฎเดพเดเตเด. เดเดคเต เดเดดเดฟเดตเดพเดเตเดเดพเตป, เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เดธเตเดตเดจ เดซเดฏเดฒเตเดเตพ เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดชเดพเตผเดเตเดเดฟเดจเต เดคเดเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต:
hadoopConf = sc._jsc.hadoopConfiguration()
hadoopConf.set("parquet.enable.summary-metadata", "false")
hadoopConf.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")
เดเดพเตผเดเตเดฑเตเดฑเต เดทเตเดเตเดธเต เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เดเดชเตเดชเตเตพ เดเดฒเตเดฒเดพ เดฆเดฟเดตเดธเดตเตเด เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดตเตเดฑเตเดฑเต เดชเดพเตผเดเตเดเตเดทเตป เดเตเตผเดเตเดเตเดจเตเดจเดคเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต, เด เดตเดฟเดเต เด เดฆเดฟเดตเดธเดคเตเดคเต เดชเดพเดดเตโเดธเต เดเตเดฏเตเดค เดกเดพเดฑเตเดฑ เดธเตเดฅเดฟเดคเดฟเดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดฐเต เดกเดพเดฑเตเดฑเดพ เดเตเดชเตเดชเต เดตเตเดฐเตเดฆเตเดงเตเดฏเดฎเตเดณเตเดณ เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ เดเดฒเตเดฒเตเดจเตเดจเต เดเดเตเดเตพ เดฎเตเตปเดเตเดเตเดเดฟ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเต.
เดชเดเตเดทเต, เดเดเตเดเตพเดเตเดเต เดฎเตเดจเตเดจเดพเดฎเดคเตเดคเต เดชเตเดฐเดถเตเดจเดฎเตเดฃเตเดเต. เดเดชเตเดชเตเตพ เดชเตเดคเตเดตเดพเดฏ เดธเตเดเตเดฎ เด เดฑเดฟเดฏเดฟเดฒเตเดฒ, เดเตเดเดพเดคเต, เดนเตเดตเดฟเดฒเต เดเตเดฌเดฟเดณเดฟเดจเต เดคเตเดฑเตเดฑเดพเดฏ เดเดฐเต เดธเตเดเตเดฎ เดเดฃเตเดเต, เดเดพเดฐเดฃเด เดเดฐเต เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดทเดจเตเด เดธเตเดเตเดฎเดฏเดฟเตฝ เดเดฐเต เดตเดฟเดเดฒเดค เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเดพเด.
เดจเดฟเดเตเดเตพ เดชเดเตเดเดฟเด เดตเตเดฃเตเดเตเด เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด: เดธเตเดฑเตเดฑเตเตผเดซเตเดฐเดฃเตเดเดฟเดจเตเดฑเต เดชเดพเตผเดเตเดเดฑเตเดฑเต เดตเตเดฃเตเดเตเด เดตเดพเดฏเดฟเดเตเดเตเด, เดธเตเดเตเดฎ เดเดเตเดคเตเดคเต เด เดคเดฟเดจเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดเดฐเต DDL เดธเตเดทเตเดเดฟเดเตเดเตเด, เด เดคเตเดชเดฏเตเดเดฟเดเตเดเต เดนเตเดตเดฟเตฝ เดซเตเตพเดกเตผ เดเดฐเต เดฌเดพเดนเตเดฏ เดชเดเตเดเดฟเดเดฏเดพเดฏเดฟ เดตเตเดฃเตเดเตเด เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเด, เดเดพเตผเดเตเดฑเตเดฑเต เดธเตเดฑเตเดฑเตเตผเดซเตเดฐเดฃเตเดเดฟเดจเตเดฑเต เดธเตเดเตเดฎ เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด.
เดเดเตเดเตพเดเตเดเต เดจเดพเดฒเดพเดฎเดคเตเดคเต เดชเตเดฐเดถเตเดจเดฎเตเดฃเตเดเต. เดเดเตเดเตพ เดเดฆเตเดฏเดฎเดพเดฏเดฟ เดเตเดฌเดฟเตพ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ, เดเดเตเดเตพ เดธเตเดชเดพเตผเดเตเดเดฟเดจเต เดเดถเตเดฐเดฏเดฟเดเตเดเต. เดเดชเตเดชเตเตพ เดเดเตเดเตพ เด เดคเต เดธเตเดตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเตเดเดพเดคเต เดชเดพเตผเดเตเดเตเดตเตเดฑเตเดฑเต เดซเตเตฝเดกเตเดเตพ เดชเตเดดเดฏเตเดเตเดเต เด เดจเตเดตเดฆเดจเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดค เดชเตเดฐเดคเตเดเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเดเดญเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เดเตผเดฎเตเดฎเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, "corrupt_record" เดซเตเตฝเดกเดฟเตฝ เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดพเดคเตเดค เดตเดฐเดฟเดเตพ เดธเตเดชเดพเตผเดเตเดเต เดเดฑเดฟเดฏเตเดจเตเดจเต. เดฐเดเตเดทเดชเตเดชเตเดเดพเดคเต เด เดคเตเดคเดฐเดฎเตเดฐเต เดซเตเตฝเดกเต เดชเตเดดเดฏเดฟเตฝ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดเดคเต เด เดฑเดฟเดฏเตเดจเตเดจเดคเดฟเดฒเตเดเต, เดเดเตเดเตพเดเตเดเต เดธเตเดเตเด เดฒเดญเดฟเดเตเดเตเด:
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(",", ",`").replace("array<`", "array<") เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏ DDL เดเดฃเตเดเดพเดเตเดเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต เดชเดเดฐเด:
create table tname (_field1 string, 1field string)
"_เดซเตเตฝเดกเต1, 1เดซเตเตฝเดกเต" เดชเตเดฒเตเดณเตเดณ เดซเตเตฝเดกเต เดจเดพเดฎเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต, เดซเตเตฝเดกเต เดจเดพเดฎเดเตเดเตพ เดฐเดเตเดทเดชเตเดชเตเดเตเดจเตเดจเดฟเดเดคเตเดคเต เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏ DDL เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต: เดชเดเตเดเดฟเด `tname` (`_field1` เดธเตเดเตเดฐเดฟเดเดเต, `1เดซเตเตฝเดกเต` เดธเตเดเตเดฐเดฟเดเดเต) เดธเตเดทเตเดเดฟเดเตเดเตเด.
เดเตเดฆเตเดฏเด เดเดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต: เดเดฐเต เดธเดฎเตเดชเตเตผเดฃเตเดฃ เดธเตเดเตเดฎ (pf เดเตเดกเดฟเตฝ) เดเดณเตเดณ เดเดฐเต เดกเดพเดฑเตเดฑเดพเดซเตเดฐเตเดฏเดฟเด เดเดเตเดเดจเต เดถเดฐเดฟเดฏเดพเดฏเดฟ เดฒเดญเดฟเดเตเดเตเด? เด เดชเดฟเดเดซเต เดเดเตเดเดจเต เดฒเดญเดฟเดเตเดเตเด? เดเดคเดพเดฃเต เด เดเตเดเดพเดฎเดคเตเดคเต เดชเตเดฐเดถเตเดจเด. เดเดพเตผเดเตเดฑเตเดฑเต เดทเตเดเตเดธเดฟเดจเตเดฑเต เดชเดพเตผเดเตเดเดฑเตเดฑเต เดซเดฏเดฒเตเดเตพ เดเดณเตเดณ เดซเตเตพเดกเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฒเตเดฒเดพ เดชเดพเตผเดเตเดเตเดทเดจเตเดเดณเตเดเตเดฏเตเด เดธเตเดเตเด เดตเตเดฃเตเดเตเด เดตเดพเดฏเดฟเดเตเดเดฃเต? เด เดฐเตเดคเดฟ เดเดฑเตเดฑเดตเตเด เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฃเต, เดชเดเตเดทเต เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเดพเดฃเต.
เดธเตเดเตเดฎ เดเดคเดฟเดจเดเด เดคเดจเตเดจเต เดนเตเดตเดฟเดฒเดพเดฃเต. เดฎเตเดดเตเดตเตป เดชเดเตเดเดฟเดเดฏเตเดเตเดฏเตเด เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดทเดจเตเดฑเตเดฏเตเด เดธเตเดเตเดฎ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดชเตเดคเดฟเดฏ เดธเตเดเตเดฎ เดฒเดญเดฟเดเตเดเตเด. เด เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพ เดนเตเดตเดฟเตฝ เดจเดฟเดจเตเดจเต เดเตเดฌเดฟเตพ เดธเตเดเตเดฎ เดเดเตเดคเตเดคเต เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดทเดจเตเดฑเต เดธเตเดเตเดฎเดฏเตเดฎเดพเดฏเดฟ เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. Hive-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเตเดธเตเดฑเตเดฑเต เดฎเตเดฑเตเดฑเดพเดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเดเตเดเต เดเดฐเต เดคเดพเตฝเดเตเดเดพเดฒเดฟเด เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เดธเตเดตเต เดเตเดฏเตเดคเต เดธเตเดชเดพเตผเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เดฐเดฃเตเดเต เดชเดพเตผเดเตเดเตเดทเดจเตเดเดณเตเด เดเดฐเตเดธเดฎเดฏเด เดตเดพเดฏเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเต เดเดคเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด.
เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเดฒเตเดฒเดพเด เดเดฃเตเดเต: เดนเตเดตเดฟเดฒเต เดฏเดฅเดพเตผเดคเตเดฅ เดเตเดฌเดฟเตพ เดธเตเดเตเดฎเดฏเตเด เดชเตเดคเดฟเดฏ เดชเดพเตผเดเตเดเตเดทเดจเตเด. เดเดเตเดเตพเดเตเดเต เดกเดพเดฑเตเดฑเดฏเตเด เดเดฃเตเดเต. เดธเตเดทเตเดเดฟเดเตเด เดชเดพเตผเดเตเดเตเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดฑเตเดฑเตเตผเดซเตเดฐเดฃเตเดเต เดธเตเดเตเดฎเดฏเตเด เดชเตเดคเดฟเดฏ เดซเตเตฝเดกเตเดเดณเตเด เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดชเตเดคเดฟเดฏ เดธเตเดเตเดฎ เดฒเดญเดฟเดเตเดเดพเตป เดฎเดพเดคเตเดฐเดฎเต เดเดคเต เดถเตเดทเดฟเดเตเดเตเดจเตเดจเตเดณเตเดณเต:
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 เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดฎเตเดดเตเดตเตป เดถเตเดเดเดฒเดฏเตเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดเตเดเดฟเตฝ, เด
เดคเดพเดฏเดคเต, เดเดฐเต เดเดจเตเดทเตเดฏเดฒเตเดธเดฟเดเดเต เดฒเตเดกเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเตเดเดพเดคเต เดนเตเดตเดฟเตฝ เดเตเดฌเดฟเตพ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดธเตเดทเตเดเดฟเดเตเดเตเดตเตเดเตเดเดฟเตฝ, เดจเดฎเตเดเตเดเต เดเดฐเต เด
เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดค เดเตเดฌเดฟเตพ เดธเตเดเตเดฎ เดฒเดญเดฟเดเตเดเตเด.
เด เดตเดธเดพเดจเดคเตเดคเต เดชเตเดฐเดถเตเดจเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดนเตเดตเต เดเตเดฌเดฟเดณเดฟเดฒเตเดเตเดเต เดเดฐเต เดชเดพเตผเดเตเดเตเดทเตป เดเตเตผเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เด เดคเต เดคเดเตผเดเตเดเดชเตเดชเตเดเตเด. เดนเตเดตเดฟเดจเต เด เดคเดฟเดจเตเดฑเต เดชเดพเตผเดเตเดเตเดทเตป เดเดเดจ เดถเดฐเดฟเดฏเดพเดเตเดเดพเตป เดจเดฟเดเตเดเตพ เดจเดฟเตผเดฌเดจเตเดงเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต:
from pyspark.sql import HiveContext
hc = HiveContext(spark)
hc.sql("MSCK REPAIR TABLE " + db + "." + destTable)
JSON เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด เด เดคเดฟเดจเต เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดเดฐเต เดธเตเดฑเตเดฑเตเตผเดซเตเดฐเดฃเตเดเต เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด เดเดจเตเดจ เดฒเดณเดฟเดคเดฎเดพเดฏ เดฆเตเดคเตเดฏเด, เดจเดฟเดเตเดเตพ เดชเตเดฐเดคเตเดฏเตเดเด เดจเตเดเตเดเตเดฃเตเด เดจเดฟเดฐเดตเดงเดฟ เดชเดฐเตเดเตเดทเดฎเดพเดฏ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดเตพ เดคเดฐเดฃเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดเดฒเดพเดถเดฟเดเตเดเตเดจเตเดจเต. เด เดชเดฐเดฟเดนเดพเดฐเดเตเดเตพ เดฒเดณเดฟเดคเดฎเดพเดฃเตเดเตเดเดฟเดฒเตเด, เด เดต เดเดฃเตเดเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดตเดณเดฐเตเดฏเดงเดฟเดเด เดธเดฎเดฏเดฎเตเดเตเดเตเดเตเด.
เดทเตเดเตเดธเดฟเดจเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดพเดฃเด เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดพเตป, เดเดจเดฟเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดเตเดฏเตเดฏเตเดฃเตเดเดฟเดตเดจเตเดจเต:
- เดทเตเดเตเดธเดฟเดฒเตเดเตเดเต เดชเดพเตผเดเตเดเตเดทเดจเตเดเตพ เดเตเตผเดเตเดเตเด, เดธเตเดตเดจ เดซเดฏเดฒเตเดเตพ เดเดดเดฟเดตเดพเดเตเดเตเด
- เดธเตเดชเดพเตผเดเตเดเต เดเตเดชเตเดชเต เดเตเดฏเตเดค เดเดฑเดตเดฟเด เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต เดถเตเดจเตเดฏเดฎเดพเดฏ เดซเตเตฝเดกเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเด
- เดฒเดณเดฟเดคเดฎเดพเดฏ เดคเดฐเดเตเดเตพ เดเดฐเต เดธเตเดเตเดฐเดฟเดเดเดฟเดฒเตเดเตเดเต เดเดพเดธเตโเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด
- เดซเตเตฝเดกเต เดชเตเดฐเตเดเตพ เดเตเดฑเดฟเดฏเดเตเดทเดฐเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเตเด
- เดนเตเดตเดฟเตฝ เดชเตเดฐเดคเตเดฏเตเด เดกเดพเดฑเตเดฑ เด เดชเตโเดฒเตเดกเตเด เดเตเดฌเดฟเตพ เดฐเดเดฟเดธเตโเดเตเดฐเตเดทเดจเตเด (DDL เดเดจเดฑเตเดทเตป)
- เดนเตเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดพเดคเตเดค เดซเตเตฝเดกเต เดจเดพเดฎเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฐเดเตเดทเดชเตเดชเตเดเดพเตป เดฎเดฑเดเตเดเดฐเตเดคเต
- Hive-เตฝ เดเตเดฌเดฟเตพ เดฐเดเดฟเดธเตเดเตเดฐเตเดทเตป เดเดเตเดเดจเต เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเดพเดฎเตเดจเตเดจเต เด เดฑเดฟเดฏเตเด
เดเตเดฐเตเดเตเดเดคเตเดคเดฟเตฝ, เดทเตเดชเตเดชเต เดตเดฟเตปเดกเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเดจเตเดณเตเดณ เดคเตเดฐเตเดฎเดพเดจเด เดจเดฟเดฐเดตเดงเดฟ เด เดชเดเดเดเตเดเตพ เดจเดฟเดฑเดเตเดเดคเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเต. เด เดคเดฟเดจเดพเตฝ, เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดเตพ เดเดฃเตเดเดพเดฏเดพเตฝ, เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เดตเตเดฆเดเตเดงเตเดฏเดฎเตเดณเตเดณ เดเดฐเต เดชเดฐเดฟเดเดฏเดธเดฎเตเดชเดจเตเดจเดจเดพเดฏ เดชเดเตเดเดพเดณเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต.
เด เดฒเตเดเดจเด เดตเดพเดฏเดฟเดเตเดเดคเดฟเดจเต เดจเดจเตเดฆเดฟ, เดตเดฟเดตเดฐเดเตเดเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพ เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
เด
เดตเดฒเดเดฌเด: www.habr.com