เดชเตเดฐเดฏเต‹เด—เดคเตเดคเดฟเตฝ เดธเตเดชเดพเตผเด•เตเด•เต เดธเตเด•เต€เดฎเดชเดฐเดฟเดฃเดพเดฎเด‚

เดชเตเดฐเดฟเดฏ เดตเดพเดฏเดจเด•เตเด•เดพเดฐเต‡, เดจเดฒเตเดฒ เดฆเดฟเดตเดธเด‚!

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เดจเดฟเดฏเต‹เดซเตเดฒเต†เด•เตโ€Œเดธเดฟเดจเตเดฑเต† เดฌเดฟเด—เต เดกเดพเดฑเตเดฑ เดธเตŠเดฒเตเดฏเต‚เดทเตปเดธเต เดฌเดฟเดธเดฟเดจเดธเต เดเดฐเดฟเดฏเดฏเดฟเดฒเต† เดชเตเดฐเดฎเตเด– เด•เตบเดธเตพเดŸเตเดŸเดจเตเดฑเต เด…เดชเตเดชเดพเดšเตเดšเต† เดธเตเดชเดพเตผเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดธเตเดŸเตเดฐเด•เตเดšเตผ เดทเต‹เด•เต‡เดธเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด“เดชเตเดทเดจเตเด•เตพ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต เดกเดพเดฑเตเดฑ เดตเดฟเดถเด•เดฒเดจ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดญเดพเด—เดฎเดพเดฏเดฟ, เด…เดฏเดžเตเดž เด˜เดŸเดจเดพเดชเดฐเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดธเตเดฑเตเดฑเต‹เตผ เดซเตเดฐเดฃเตเดŸเตเด•เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดšเตเดฎเดคเดฒ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด‰เดฏเตผเดจเตเดจเตเดตเดฐเตเดจเตเดจเต.

เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด‡เดต 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•