เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R

เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R
เบงเบดเบ—เบตเบเบฒเบ™เบญเปˆเบฒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰: เบ‚เป‰เบญเบเบ‚เปเป‚เบ—เบ”เบ—เบตเปˆเบ‚เปเป‰เบ„เบงเบฒเบกเบเบฒเบง เปเบฅเบฐเบงเบธเปˆเบ™เบงเบฒเบ. เป€เบžเบทเปˆเบญเบ›เบฐเบซเบเบฑเบ”เป€เบงเบฅเบฒเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เบ‚เป‰เบญเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบ•เปˆเบฅเบฐเบšเบปเบ”เบ”เป‰เบงเบเบเบฒเบ™เปเบ™เบฐเบ™เปเบฒ "เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰", เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบผเบธเบšเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบšเบปเบ”เปƒเบ™เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบชเบญเบ‡เบ›เบฐเป‚เบซเบเบ.

"เบžเบฝเบ‡เปเบ•เปˆเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ‚เป‰เบญเบเป€เบซเบฑเบ™เบงเบดเบ—เบตเปเบเป‰เป„เบ‚!" เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบšเบดเปˆเบ‡เบšเปˆเบญเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบกเบฒเบˆเบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบซเป‰เบ‚เป‰เบฒเบกเป„เบ›เบซเบฒเบšเบปเบ” "เบเบฒเบเป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ›เบฐเบ”เบดเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก," เปเบ•เปˆเบ‚เป‰เบญเบเบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบญเปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง.

เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เบฅเปเบฒเบ”เบฑเบš DNA เบ”เบดเบš (เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เป€เบ•เบฑเบเบ™เบดเบเป€เบ›เบฑเบ™เบŠเบดเบš SNP). เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบžเบฑเบ™เบ—เบธเบเปเบฒ (เป€เบญเบตเป‰เบ™เบงเปˆเบฒ SNP) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เบ•เปเปˆเป„เบ›เปเบฅเบฐเบงเบฝเบเบ‡เบฒเบ™เบญเบทเปˆเบ™เป†. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ R เปเบฅเบฐ AWK, เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เปเบฅเบฐเบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เปเบšเบšเบ—เปเบฒเบกเบฐเบŠเบฒเบ”, เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ„เปเบฒเบ–เบฒเบกเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ. เบ™เบตเป‰โ€‹เบšเปเปˆโ€‹เปเบกเปˆเบ™โ€‹เป€เบฅเบทเปˆเบญเบ‡โ€‹เบ‡เปˆเบฒเบโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบฅเบฐโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบผเบฒเบโ€‹. เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบšเบฒเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบฅเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบปเบšเบฅเบปเบ‡.

เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, เบšเบฒเบ‡เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเปเบ™เบฐเบ™เปเบฒ.

เบ‚เปเป‰เบกเบนเบ™

เบชเบนเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฑเบ™เบ—เบธเบเปเบฒเบ‚เบญเบ‡เบกเบฐเบซเบฒเบงเบดเบ—เบฐเบเบฒเป„เบฅเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบฐเปœเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡ TSV 25 TB. เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบžเบงเบเบกเบฑเบ™เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™ 5 เบŠเบธเบ”, เบ–เบทเบเบšเบตเบšเบญเบฑเบ”เป‚เบ”เบ Gzip, เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเบกเบตเบ›เบฐเบกเบฒเบ™ 240 เป„เบŸเบฅเปŒเบชเบตเปˆเบเบดเบเบฒเป„เบš. เปเบ•เปˆเบฅเบฐเปเบ–เบงเบกเบตเบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡ SNP เบˆเบฒเบเบšเบธเบเบ„เบปเบ™เบซเบ™เบถเปˆเบ‡. เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบš ~ 2,5 เบฅเป‰เบฒเบ™ SNPs เปเบฅเบฐ ~ 60 เบžเบฑเบ™เบ„เบปเบ™เป„เบ”เป‰เบ–เบทเบเบ–เปˆเบฒเบเบ—เบญเบ”. เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™ SNP, เป„เบŸเบฅเปŒเบกเบตเบ„เปเบฅเปเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ—เบตเปˆเบกเบตเบ•เบปเบงเป€เบฅเบเบชเบฐเบ—เป‰เบญเบ™เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†, เป€เบŠเบฑเปˆเบ™: เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเบ‚เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™, เบ„เบงเบฒเบกเบ–เบตเปˆเบ‚เบญเบ‡ alleles เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบตเบ›เบฐเบกเบฒเบ™ 30 เบ–เบฑเบ™เบ—เบตเปˆเบกเบตเบกเบนเบ™เบ„เปˆเบฒเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ.

เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ

เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰ เบžเบงเบเป€เบฎเบปเบฒเบชเปˆเบงเบ™เบซเบผเบฒเบเบˆเบฐเป€เบฅเบทเบญเบเปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เปเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบš SNP เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ SNP. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡ SNP เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบง. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ”เบถเบ‡เป€เบญเบปเบฒเบšเบฑเบ™เบ—เบถเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบซเบ™เบถเปˆเบ‡เปƒเบ™ 2,5 เบฅเป‰เบฒเบ™ SNPs เป„เบ”เป‰เบ‡เปˆเบฒเบ, เป„เบงเปเบฅเบฐเบฅเบฒเบ„เบฒเบ–เบทเบเบ—เบตเปˆเบชเบธเบ”เป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.

เป€เบฎเบฑเบ”เปเบ™เบงเปƒเบ”เบšเปเปˆเปƒเบซเป‰เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบตเป‰

เป€เบžเบทเปˆเบญเบญเป‰เบฒเบ‡เป€เบ–เบดเบ‡ clichรฉ เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก:

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เบฅเบปเป‰เบกเป€เบซเบฅเบงเป€เบ›เบฑเบ™เบžเบฑเบ™เป€เบ—เบทเปˆเบญ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบ„เบปเป‰เบ™เบžเบปเบšเบซเบ™เบถเปˆเบ‡เบžเบฑเบ™เบงเบดเบ—เบตเป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เปเบเบเปเบเบฐเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเป€เบ›เบฑเบ™เบกเบดเบ”เบเบฑเบšเบ„เปเบฒเบ–เบฒเบก.

เบžเบฐเบเบฒเบเบฒเบก เบ—เบณ เบญเบดเบ”

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบšเปเปˆเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเบฅเบฒเบ„เบฒเบ–เบทเบเบ—เบตเปˆเบˆเบฐเบงเบดเป€เบ„เบฒเบฐ 25 TB เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบง.

เป‚เบ”เบเป„เบ”เป‰เบฎเบฑเบšเบซเบผเบฑเบเบชเบนเบ” "เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฑเป‰เบ™เบชเบนเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบเปˆ" เบขเบนเปˆเบกเบฐเบซเบฒเบงเบดเบ—เบฐเบเบฒเป„เบฅ Vanderbilt, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เปˆเปƒเบˆเบงเปˆเบฒ trick เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ–เบปเบ‡. เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบ™เบถเปˆเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡เบซเบผเบทเบชเบญเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡เป€เบžเบทเปˆเบญเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Hive เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบฅเบฒเบเบ‡เบฒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ AWS S3, เบ‚เป‰เบญเบเป„เบ”เป‰เปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™ Athena, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบ–เบฒเบก Hive SQL เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ S3. เบ—เปˆเบฒเบ™เบšเปเปˆ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ / เบเบปเบเบชเบนเบ‡เบเบธเปˆเบก Hive, เปเบฅเบฐเบ—เปˆเบฒเบ™เบเบฑเบ‡เบˆเปˆเบฒเบเบ„เปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบŠเบญเบเบซเบฒเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ‚เป‰เบญเบเบชเบฐเปเบ”เบ‡ Athena เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบฅเบฐเบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบกเบฑเบ™, เบ‚เป‰เบญเบเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ”เป‰เบงเบเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

select * from intensityData limit 10;

เปเบฅเบฐเป„เบงเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบตเปˆเบ”เบต. เบžเป‰เบญเบก.

เบˆเบปเบ™เบเปˆเบงเบฒเบžเบงเบเป€เบฎเบปเบฒเบžเบฐเบเบฒเบเบฒเบกเบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ ...

เบ‚เป‰เบญเบเป„เบ”เป‰เบ–เบทเบเบ‚เปเปƒเบซเป‰เบ”เบถเบ‡เบ‚เปเป‰เบกเบนเบ™ SNP เบ—เบฑเบ‡เบซเบกเบปเบ”เบญเบญเบเป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบ•เบปเบงเปเบšเบš. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก:


select * from intensityData 
where snp = 'rs123456';

...เปเบฅเบฐเป€เบฅเบตเปˆเบกเบฅเปเบ–เป‰เบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเปเบ›เบ”เบ™เบฒเบ—เบตเปเบฅเบฐเบซเบผเบฒเบเบเบงเปˆเบฒ 4 TB เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบฎเป‰เบญเบ‡เบ‚เป, เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. Athena เบ„เบดเบ”เบ„เปˆเบฒเบšเปเบฅเบดเบเบฒเบ™เป‚เบ”เบเบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบปเบšเป€เบซเบฑเบ™, $5 เบ•เปเปˆ terabyte. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบฝเบงเบ™เบตเป‰เบกเบตเบกเบนเบ™เบ„เปˆเบฒ $20 เปเบฅเบฐเบเบฒเบ™เบฅเปเบ–เป‰เบฒเปเบ›เบ”เบ™เบฒเบ—เบต. เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ•เบปเบงเปเบšเบšเปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒ 38 เบ›เบตเปเบฅเบฐเบˆเปˆเบฒเบเป€เบ‡เบดเบ™ 50 เบฅเป‰เบฒเบ™เป‚เบ”เบฅเบฒ, เปเบ™เปˆเบ™เบญเบ™, เบ™เบตเป‰เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ.

เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปƒเบŠเป‰ Parquet ...

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบˆเบปเปˆเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒ Parquet เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ—เปเบฒเบญเบดเบ”เบžเบฐเบเบฒเบเบฒเบกเปเบเป‰เป„เบ‚เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™ TSVs เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ›เบฑเบ™ เป„เบŸเบฅเปŒ Parquet. เบžเบงเบเบกเบฑเบ™เบชเบฐเบ”เบงเบเปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบžเบงเบเบกเบฑเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบฎเบนเบšเปเบšเบšเบ–เบฑเบ™: เปเบ•เปˆเบฅเบฐเบ„เปเบฅเปเบฒเปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ / เปเบœเปˆเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบกเบเบฑเบšเป„เบŸเบฅเปŒเบ‚เปเป‰เบ„เบงเบฒเบก, เปƒเบ™เปเบ–เบงเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ–เบฑเบ™. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบญเบเบซเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเบญเปˆเบฒเบ™เบ„เปเบฅเปเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปˆเบฒเปƒเบ™เบ–เบฑเบ™เบซเบ™เบถเปˆเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ„เปˆเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒเบšเปเปˆเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ–เบฑเบ™, Spark เบˆเบฐเบšเปเปˆเป€เบชเบเป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เบชเบฐเปเบเบ™เป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบ‚เป‰เบญเบเปเบฅเปˆเบ™เบงเบฝเบเบ‡เปˆเบฒเบเป† เบเบฒเบง AWS เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™ TSV เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบ›เบฑเบ™ Parquet เปเบฅเบฐเบซเบผเบธเบ”เบฅเบปเบ‡เป„เบŸเบฅเปŒเปƒเบซเบกเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Athena. เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 5 เบŠเบปเปˆเบงเป‚เบกเบ‡. เปเบ•เปˆเป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เป, เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™เบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเป€เบ‡เบดเบ™เบซเบ™เป‰เบญเบเบฅเบปเบ‡เป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเปเบฒเป€เบฅเบฑเบ”. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒ Spark, เบžเบฐเบเบฒเบเบฒเบกเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบ™เป‰เบฒเบงเบฝเบ, เบžเบฝเบ‡เปเบ•เปˆ unpacked TSV chunks เปเบฅเบฐเป€เบญเบปเบฒเปƒเบชเปˆเปƒเบ™ chunk Parquet เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เปเบฅเบฐเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเปเบ•เปˆเบฅเบฐ chunk เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบˆเบธเบšเบฑเบ™เบ—เบถเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ›เบฐเบŠเบฒเบŠเบปเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเบกเบต SNPs เบ—เบฑเบ‡เบซเบกเบปเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ Spark เบ•เป‰เบญเบ‡เป€เบ›เบตเบ”เป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบžเบทเปˆเบญเบชเบฐเบเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

เบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ, เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เปเบšเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ (เปเบฅเบฐเปเบ™เบฐเบ™เปเบฒ) เบ‚เบญเบ‡ Parquet, snappy, เบšเปเปˆเบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบ›เบฑเบ™เป„เบ”เป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เป„เบ”เป‰เบ•เบดเบ”เบขเบนเปˆเปƒเบ™เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡ unpacking เปเบฅเบฐเบ”เบฒเบงเป‚เบซเบผเบ”เบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™ 3,5 GB เป€เบ•เบฑเบก.

เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R

เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเบฑเบ™เบซเบฒ

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเปเบˆเบเบขเบฒเบ.

เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ‚เป‰เบญเบเบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเป€เบ–เบดเบ‡เบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒ. เบ‚เป‰เบญเบเบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบ–เบฑเบ™ SNP, เบšเปเปˆเปเบกเปˆเบ™เป‚เบ”เบเบ„เบปเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, SNPs เบซเบผเบฒเบเบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ "smart" เบ‚เบญเบ‡ Parquet "เป€เบ›เบตเบ”เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบกเบนเบ™เบ„เปˆเบฒเบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”" เบˆเบฐเบชเบฐเปเบ”เบ‡เบ•เบปเบงเป€เบญเบ‡เปƒเบ™เบ„เบงเบฒเบกเบชเบฐเบซเบ‡เปˆเบฒเบ‡เบฒเบกเบ‚เบญเบ‡เบกเบฑเบ™. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบœเปˆเบฒเบ™เบซเบผเบฒเบเบ•เบทเป‰เปเบ–เบงเบ—เบตเปˆเบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเป„เบ›เบ—เบปเปˆเบงเบเบธเปˆเบกเป„เบ”เป‰เบžเบดเบชเบนเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™เบงเบฝเบเบ—เบตเปˆเบเบฒเบ.

เปเบ™เปˆเบ™เบญเบ™ AWS เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบญเบเป€เบ‡เบดเบ™เบ„เบทเบ™เบเป‰เบญเบ™เป€เบซเบ”เบœเบปเบ™ "เบ‚เป‰เบญเบเป€เบ›เบฑเบ™เบ™เบฑเบเบฎเบฝเบ™เบ—เบตเปˆเบ–เบทเบเบฅเบปเบšเบเบงเบ™". เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบฅเปˆเบ™โ€‹เบˆเบฑเบ”โ€‹เบฅเบฝเบ‡โ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹เปƒเบ™ Amazon Glueโ€‹, เบกเบฑเบ™โ€‹เปเบฅเปˆเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš 2 เบกเบทเป‰โ€‹เปเบฅเบฐ crashedโ€‹.

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™?

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: Partitions เปƒเบ™ Spark เบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบชเบปเบกเบ”เบนเบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบกเบฒเบเบฑเบšเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป‚เบ„เป‚เบกเป‚เบŠเบก. เบกเบต 23 เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ (เปเบฅเบฐเบญเบตเบเบซเบผเบฒเบเป†เบญเบฑเบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡ DNA mitochondrial เปเบฅเบฐเบžเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเปเบœเบ™เบ—เบตเปˆ).
เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบเบเบ‚เปเป‰เบกเบนเบ™เบญเบญเบเป€เบ›เบฑเบ™เบ•เปˆเบญเบ™เบ™เป‰เบญเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบžเบตเปˆเบกเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เป€เบชเบฑเป‰เบ™เปƒเบชเปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบชเบปเปˆเบ‡เบญเบญเบ Spark เปƒเบ™เบชเบฐเบ„เบดเบšเบเบฒเบง partition_by = "chr", เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เปเป‰เบกเบนเบ™เบ„เบงเบ™เบˆเบฐเบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™ buckets.

เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R
genome เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบŠเบดเป‰เบ™เบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ chromosomes.

เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เบœเบปเบ™. เป‚เบ„เป‚เบกเป‚เบŠเบกเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบŠเบถเปˆเบ‡เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ™เบตเป‰ เปเบฒเบ เบ„เบงเบฒเบกเบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆ Spark เบชเบปเปˆเบ‡เป„เบ›เปƒเบซเป‰เบ„เบปเบ™เบ‡เบฒเบ™เบšเปเปˆเบชเบปเบกเบ”เบธเบ™เปเบฅเบฐ เบชเบณ เป€เบฅเบฑเบ”เบŠเป‰เบฒเป€เบžเบฒเบฐเบงเปˆเบฒเบšเบฒเบ‡เบ‚เปเป‰ เบชเบณ เป€เบฅเบฑเบ”เป„เบงเปเบฅเบฐเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบ. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบงเบฝเบเบ‡เบฒเบ™เป„เบ”เป‰เบ–เบทเบเบชเปเบฒเป€เบฅเบฑเบ”. เปเบ•เปˆเป€เบกเบทเปˆเบญเบ‚เป SNP เบซเบ™เบถเปˆเบ‡, เบ„เบงเบฒเบกเบšเปเปˆเบชเบปเบกเบ”เบธเบ™เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒ. เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ SNPs เปƒเบ™เป‚เบ„เป‚เบกเป‚เบŠเบกเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ (เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™) เป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡เบžเบฝเบ‡เปเบ•เปˆเบ›เบฐเบกเบฒเบ™ 10 เบ›เบฑเบ”เป„เบˆ. เบซเบผเบฒเบ, เปเบ•เปˆเบšเปเปˆเบžเบฝเบ‡เบžเป.

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡เบกเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบ™เป‰เบญเบเป†?

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบšเปเปˆเป€เบ„เบตเบเบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ” 2,5 เบฅเป‰เบฒเบ™เบžเบฒเบ—เบดเบŠเบฑเบ™เป€เบฅเบตเบ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบญเบญเบเป„เบ›เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเปเบšเปˆเบ‡เบชเปˆเบงเบ™ SNP เปเบ•เปˆเบฅเบฐเบ„เบปเบ™. เบ™เบตเป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™. เบกเบฑเบ™เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบšเปเปˆเบ”เบต. เบ‚เป‰เบญเบเปƒเบŠเป‰เบเบฒเบงเปเบฅเบฐเป€เบžเบตเปˆเบกเบชเบฒเบเบ—เบตเปˆเบšเปเบฅเบดเบชเบธเบ” partition_by = 'snp'. เบงเบฝเบเบ‡เบฒเบ™เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”. เบกเบทเป‰เบ•เปเปˆเบกเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เปเบฅเบฐเป€เบซเบฑเบ™เบงเปˆเบฒเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบ‚เบฝเบ™เป€เบ–เบดเบ‡ S3, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เป‰เบฒเบงเบฝเบเบ‡เบฒเบ™. เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบเบฒเบงเบเปเบฒเบฅเบฑเบ‡เบ‚เบฝเบ™เป„เบŸเบฅเปŒเบเบฒเบ‡เป„เบ›เบซเบฒเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ‡เป„เบงเป‰เปƒเบ™ S3, เป„เบŸเบฅเปŒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เบšเบฒเบ‡เบ—เบตเบญเบฒเบ”เบกเบตเบชเบญเบ‡เบชเบฒเบกเบฅเป‰เบฒเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเบกเบตเบกเบนเบ™เบ„เปˆเบฒเบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบžเบฑเบ™เป‚เบ”เบฅเบฒเปเบฅเบฐเบšเปเปˆเบžเปเปƒเบˆเบเบฑเบšเบœเบนเป‰เปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบ.

เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ + เบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เปเบกเปˆเบ™เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เบฑเบš Spark.

เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ‚เป‰เบญเบเปเบšเปˆเบ‡เปเบเบเป‚เบ„เป‚เบกเป‚เบŠเบก เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบˆเบฑเบ”เปเบšเปˆเบ‡เปเบ•เปˆเบฅเบฐเบžเบฒเบ—เบดเบŠเบฑเบ™. เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต, เบ™เบตเป‰เบˆเบฐเป€เบฅเบฑเปˆเบ‡เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเป€เบžเบฒเบฐเบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™ SNP เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เป‰เบญเบ‡เบขเบนเปˆเปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบŠเบดเป‰เบ™เบ‚เบญเบ‡ Parquet เบžเบฒเบเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบงเบฝเบเบ—เบตเปˆเบเบฒเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ EMR เบชเปเบฒเบฅเบฑเบšเบเบธเปˆเบกเบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡เปเบฅเบฐเปƒเบŠเป‰เปเบ›เบ”เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš (C5.4xl) เปเบฅเบฐ Sparklyr เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบซเบผเบฒเบ ...

# Sparklyr snippet to partition by chr and sort w/in partition
# Join the raw data with the snp bins
raw_data
  group_by(chr) %>%
  arrange(Position) %>% 
  Spark_write_Parquet(
    path = DUMP_LOC,
    mode = 'overwrite',
    partition_by = c('chr')
  )

... เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก, เบงเบฝเบเบ‡เบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบ‡เบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ”. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบกเบฑเบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบ•เปˆเบฒเบ‡เป†: เป€เบžเบตเปˆเบกเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐ query executor, เปƒเบŠเป‰ nodes เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เปƒเบŠเป‰เบ•เบปเบงเปเบ›เบเบฒเบ™เบญเบญเบเบญเบฒเบเบฒเบ” (เบ•เบปเบงเปเบ›เบเบฒเบ™เบเบฐเบˆเบฒเบเบชเบฝเบ‡), เปเบ•เปˆเปเบ•เปˆเบฅเบฐเบ„เบฑเป‰เบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบเบฒเบเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบเบฒเบ™เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡, เปเบฅเบฐเบ„เปˆเบญเบเป† executors เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. เบฅเบปเป‰เบกเป€เบซเบฅเบงเบˆเบปเบ™เบเปˆเบงเบฒเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบขเบธเบ”เป€เบŠเบปเบฒ.

เบ‚เป‰เบญเบเบเบฒเบเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบชเป‰เบฒเบ‡เบชเบฑเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบดเป€เบชเบ”เบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบžเบดเป€เบชเบ”.

เปเบ•เปˆเบฅเบฐ SNP เบกเบตเบกเบนเบ™เบ„เปˆเบฒเบ•เปเบฒเปเบซเบ™เปˆเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเป€เบฅเบเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ•เบฒเบกเป‚เบ„เป‚เบกเป‚เบŠเบกเบ‚เบญเบ‡เบกเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เบฒเบก เปเบฅเบฐเป€เบ›เบฑเบ™เบ—เปเบฒเบกเบฐเบŠเบฒเบ”เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ—เบณเบญเบดเบ”เบ‚เป‰เบญเบเบขเบฒเบเปเบšเปˆเบ‡เบ•เบฒเบกเป€เบ‚เบ”เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเป‚เบ„เป‚เบกเป‚เบŠเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ•เปเบฒเปเบซเบ™เปˆเบ‡ 1 - 2000, 2001 - 4000, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปเบ•เปˆเบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบงเปˆเบฒ SNPs เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบˆเบเบขเบฒเบเบขเปˆเบฒเบ‡เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เปƒเบ™เบ—เบปเปˆเบงเป‚เบ„เป‚เบกเป‚เบŠเบก, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบเบธเปˆเบกเบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.

เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบกเบฒเปเบšเปˆเบ‡เบ•เปเบฒเปเบซเบ™เปˆเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ” (เบญเบฑเบ™เบ”เบฑเบš). เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ”เบฒเบงเป‚เบซเบผเบ”เปเบฅเป‰เบง, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบกเบตเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡ SNPs เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ, เบ•เปเบฒเปเบซเบ™เปˆเบ‡เปเบฅเบฐเป‚เบ„เป‚เบกเป‚เบŠเบกเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบˆเบฑเบ”เบฎเบฝเบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ™เปเบ•เปˆเบฅเบฐเป‚เบ„เป‚เบกเป‚เบŠเบกเปเบฅเบฐเป€เบเบฑเบšเบเปเบฒ SNPs เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบธเปˆเบก (bin) เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒ 1000 SNPs เปเบ•เปˆเบฅเบฐเบ„เบปเบ™. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เป‰เบญเบเบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™ SNP-to-group-per-chromosome.

เปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบเบธเปˆเบก (bin) เบ‚เบญเบ‡ 75 SNPs, เป€เบซเบ”เบœเบปเบ™เบˆเบฐเบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

snp_to_bin <- unique_snps %>% 
  group_by(chr) %>% 
  arrange(position) %>% 
  mutate(
    rank = 1:n()
    bin = floor(rank/snps_per_bin)
  ) %>% 
  ungroup()

เบ—เปเบฒเบญเบดเบ”เบฅเบญเบ‡เปƒเบŠเป‰ Spark

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก Spark เปเบกเปˆเบ™เป„เบง, เปเบ•เปˆเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปเบกเปˆเบ™เบเบฑเบ‡เบกเบตเบฅเบฒเบ„เบฒเปเบžเบ‡.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™เบเบญเบšเบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ (2,5 เบฅเป‰เบฒเบ™เปเบ–เบง) เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ Spark, เบชเบปเบกเบ—เบปเบšเบกเบฑเบ™เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ”เบดเบš, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบกเบฑเบ™เป‚เบ”เบเบ–เบฑเบ™เบ—เบตเปˆเป€เบžเบตเปˆเบกเปƒเบซเบกเปˆ. bin.


# Join the raw data with the snp bins
data_w_bin <- raw_data %>%
  left_join(sdf_broadcast(snp_to_bin), by ='snp_name') %>%
  group_by(chr_bin) %>%
  arrange(Position) %>% 
  Spark_write_Parquet(
    path = DUMP_LOC,
    mode = 'overwrite',
    partition_by = c('chr_bin')
  )

เบ‚เป‰เบญเบโ€‹เปƒเบŠเป‰ sdf_broadcast(), เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ Spark เบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบปเปˆเบ‡เบเบญเบšเบ‚เปเป‰เบกเบนเบ™เป„เบ›เบซเบฒเบ—เบธเบ nodes. เบ™เบตเป‰เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, Spark เบžเบฐเบเบฒเบเบฒเบกเบชเบฐเบซเบฅเบฒเบ”เปเบฅเบฐเปเบˆเบเบขเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบŠเป‰เบฒเบฅเบปเบ‡.

เปเบฅเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบ: เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เป€เบงเบฅเบฒ, เบชเปเบฒเป€เบฅเบฑเบ”เบชเบฐเบซเบฐเบžเบฑเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เบทเบเบฑเบšเบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป‚เบ”เบเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™, เบžเบงเบเป€เบ‚เบปเบฒเป€เบฅเบตเปˆเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง.

เป€เบžเบตเปˆเบก AWK

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบขเปˆเบฒเบ™เบญเบ™เป€เบกเบทเปˆเบญเบ–เบทเบเบชเบญเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™. เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบšเบฒเบ‡เบ„เบปเบ™เป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเปเบฅเป‰เบงเปƒเบ™เบŠเบธเบกเบ›เบต 1980.

เบกเบฒเบฎเบญเบ”เบˆเบธเบ”เบ™เบตเป‰, เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบงเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเบเบฑเบš Spark เปเบกเปˆเบ™เบเบฒเบ™เบฅเบปเบšเบเบงเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบเบธเปˆเบก. เบšเบฒเบ‡เบ—เบตเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เบดเปˆเบ™เบ›เบปเบงเบเปˆเบญเบ™. เบ‚เป‰เบญเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบžเบฐเบเบฒเบเบฒเบกเปเบเบเบ‚เปเป‰เบกเบนเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ”เบดเบšเบญเบญเบเป€เบ›เบฑเบ™เบ–เบฑเบ™เบ‚เบญเบ‡เป‚เบ„เป‚เบกเป‚เบŠเบก, เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเบˆเบฐเปƒเบซเป‰ Spark เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™ "เปเบšเปˆเบ‡เบชเปˆเบงเบ™เป„เบงเป‰เบเปˆเบญเบ™".

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ„เบปเป‰เบ™เบซเบฒเปƒเบ™ StackOverflow เบชเปเบฒเบฅเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เป‚เบ”เบเบ„เปˆเบฒเบ„เปเบฅเปเบฒเปเบฅเบฐเบžเบปเบšเป€เบซเบฑเบ™ เบ„เปเบฒเบ•เบญเบšเบ—เบตเปˆเบเบดเปˆเบ‡เปƒเบซเบเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบ”เป‰เบงเบ AWK เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เป„เบŸเบฅเปŒเบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบฒเบกเบ„เปˆเบฒเบ‚เบญเบ‡เบ–เบฑเบ™เป‚เบ”เบเบเบฒเบ™เบ‚เบฝเบ™เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ„เบดเบšเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเป„เบ›เบซเบฒ. stdout.

เบ‚เป‰เบญเบเบ‚เบฝเบ™ script Bash เป€เบžเบทเปˆเบญเบ—เบปเบ”เบฅเบญเบ‡เปƒเบŠเป‰เบกเบฑเบ™. เบ”เบฒเบงเป‚เบซเบผเบ”เปœเบถเปˆเบ‡เปƒเบ™ TSVs เบ—เบตเปˆเบซเบธเป‰เบกเบซเปเปˆเปเบฅเป‰เบง, เบˆเบฒเบเบ™เบฑเป‰เบ™เบ–เบญเบ”เบกเบฑเบ™เบญเบญเบเป‚เบ”เบเปƒเบŠเป‰ gzip เปเบฅเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ awk.

gzip -dc path/to/chunk/file.gz |
awk -F 't' 
'{print $1",..."$30">"chunked/"$chr"_chr"$15".csv"}'

เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบ!

เบเบฒเบ™เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆเปเบเบ™

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: gnu parallel - เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบกเบฐเบซเบฑเบ”เบชเบฐเบˆเบฑเบ™, เบ—เบธเบเบ„เบปเบ™เบ„เบงเบ™เปƒเบŠเป‰เบกเบฑเบ™.

เบเบฒเบ™เปเบเบเบ•เบปเบงเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบŠเป‰เบฒเปเบฅเบฐเป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ htopเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เปƒเบŠเป‰ EC2 เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš (เปเบฅเบฐเบฅเบฒเบ„เบฒเปเบžเบ‡), เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบ‚เป‰เบญเบเบเปเบฒเบฅเบฑเบ‡เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เบซเบผเบฑเบเปเบฅเบฐเบกเบตเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ›เบฐเบกเบฒเบ™ 200 MB. เป€เบžเบทเปˆเบญโ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบšเบฑเบ™โ€‹เบซเบฒโ€‹เปเบฅเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบชเบนเบ™โ€‹เป€เบชเบโ€‹เป€เบ‡เบดเบ™โ€‹เบซเบผเบฒเบโ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบŠเบญเบโ€‹เบซเบฒโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹. เป‚เบŠเบเบ”เบต, เปƒเบ™เบซเบ™เบฑเบ‡เบชเบทเบ—เบตเปˆเบซเบ™เป‰เบฒเบ›เบฐเบซเบฅเบฒเบ”เปƒเบˆเปเบ—เป‰เป† เบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เบ‚เปเป‰เบกเบนเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบšเบปเบ”เป‚เบ”เบ Jeron Janssens เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™. เบˆเบฒเบเบกเบฑเบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบš gnu parallel, เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” multithreading เปƒเบ™ Unix.

เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R
เป€เบกเบทเปˆเบญเบ‚เป‰เบญเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เป‚เบ”เบเปƒเบŠเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบซเบกเปˆ, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบต, เปเบ•เปˆเบเบฑเบ‡เบกเบตเบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡ - เบเบฒเบ™เบ”เบฒเบงเป‚เบซเบฅเบ”เบงเบฑเบ”เบ–เบธ S3 เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบœเปˆเบ™เบšเปเปˆเป„เบงเบซเบผเบฒเบเปเบฅเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰:

  1. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบ”เบฒเบงเป‚เบซเบผเบ” S3 เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบ—เปเปˆ, เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเบฐเบ”เบฑเบšเบเบฒเบ‡เปƒเบ™เปเบœเปˆเบ™เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบดเบšเปƒเบชเปˆเปเบœเปˆเบ™เปเบฅเบฐเปƒเบŠเป‰เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฅเบฒเบ„เบฒเบ–เบทเบเบเบงเปˆเบฒ, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปƒเบ™ AWS.
  2. เบ—เบตเบกเบ‡เบฒเบ™ aws configure set default.s3.max_concurrent_requests 50 เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบเบฐเบ—เบนเป‰เบ—เบตเปˆ AWS CLI เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ (เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบต 10).
  3. เบ‚เป‰เบญเบเป„เบ”เป‰เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ EC2 เบ—เบตเปˆเบ–เบทเบเบ›เบฑเบšเปเบ•เปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป„เบงเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เบ”เป‰เบงเบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ n เปƒเบ™เบŠเบทเปˆ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบปเบšเป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ n-instances เปเบกเปˆเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เป‚เบซเบผเบ”. เบชเปเบฒเบฅเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เป‰เบญเบเปƒเบŠเป‰ c5n.4xl.
  4. เบ›เปˆเบฝเบ™เปเบ›เบ‡ gzip เบชเบธเบ” pigz, เบ™เบตเป‰เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบท gzip เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบขเบฑเบ™เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบ™เบฒเบ™เบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ™เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เป„เบŸเบฅเปŒ (เบญเบฑเบ™เบ™เบตเป‰เบŠเปˆเบงเบเป„เบ”เป‰เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”).

# Let S3 use as many threads as it wants
aws configure set default.s3.max_concurrent_requests 50

for chunk_file in $(aws s3 ls $DATA_LOC | awk '{print $4}' | grep 'chr'$DESIRED_CHR'.csv') ; do

        aws s3 cp s3://$batch_loc$chunk_file - |
        pigz -dc |
        parallel --block 100M --pipe  
        "awk -F 't' '{print $1",..."$30">"chunked/{#}_chr"$15".csv"}'"

       # Combine all the parallel process chunks to single files
        ls chunked/ |
        cut -d '_' -f 2 |
        sort -u |
        parallel 'cat chunked/*_{} | sort -k5 -n -S 80% -t, | aws s3 cp - '$s3_dest'/batch_'$batch_num'_{}'
        
         # Clean up intermediate data
       rm chunked/*
done

เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเบเบฒเบ™เบ”เบฒเบงเป‚เบซเบผเบ”เปเบฅเบฐเบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เบ‚เบฝเบ™เปเบœเปˆเบ™, เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ›เบธเบ‡เปเบ•เปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ” 5 terabyte เปƒเบ™เป€เบงเบฅเบฒเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบชเบฒเบกเบŠเบปเปˆเบงเป‚เบกเบ‡.

tweet เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป„เบ”เป‰เบเปˆเบฒเบงเป€เบ–เบดเบ‡ 'TSV'. เบญเบฐเบ™เบดเบˆเบฒ.

เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เป„เบ”เป‰โ€‹เบงเบดโ€‹เป€เบ„เบฒเบฐโ€‹เปƒเบซเบกเปˆโ€‹

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: Spark เบกเบฑเบเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบšเบตเบšเบญเบฑเบ” เปเบฅเบฐเบšเปเปˆเบกเบฑเบเบเบฒเบ™เบฅเบงเบกเบžเบฒเบ—เบดเบŠเบฑเบ™.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ S3 เปƒเบ™เบฎเบนเบšเปเบšเบš unpacked (เบญเปˆเบฒเบ™: เปเบšเปˆเบ‡เบ›เบฑเบ™) เปเบฅเบฐเป€เบ„เบดเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡, เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบเบฑเบšเบ„เบทเบ™เป„เบ› Spark เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบ„เบงเบฒเบกเปเบ›เบเปƒเบˆเบฅเปเบ–เป‰เบฒเบ‚เป‰เบญเบเบขเบนเปˆ: เบ‚เป‰เบญเบเบฅเบปเป‰เบกเป€เบซเบฅเบงเบญเบตเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบฅเบธเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™! เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบšเบญเบ Spark เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบงเปˆเบฒเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเปเบšเปˆเบ‡เบ›เบฑเบ™เปเบ™เบงเปƒเบ”. เปเบฅเบฐเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เบ™เบตเป‰, เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบกเบตเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ› (95 เบžเบฑเบ™), เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปƒเบŠเป‰ coalesce เบซเบผเบธเบ”เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป„เบ›เบชเบนเปˆเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ—เบตเปˆเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™, เบ™เบตเป‰เป„เบ”เป‰เบ—เปเบฒเบฅเบฒเบเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เปเบ™เปˆโ€‹เปƒเบˆเบงเปˆโ€‹เบฒโ€‹เบ™เบตเป‰โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เป„เบ”เป‰โ€‹, เปเบ•เปˆโ€‹เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบชเบญเบ‡โ€‹เบชเบฒเบกโ€‹เบกเบทเป‰โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบŠเบญเบโ€‹เบซเบฒโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบŠเบญเบโ€‹เบซเบฒโ€‹เบงเบดโ€‹เบ—เบตโ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เป„เบ”เป‰โ€‹. เปƒเบ™โ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบชเปเบฒโ€‹เป€เบฅเบฑเบ”โ€‹เบงเบฝเบโ€‹เบ‡เบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปƒเบ™ Sparkโ€‹, เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เบกเบฑเบ™โ€‹เปƒเบŠเป‰โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เปƒเบ™โ€‹เบ‚เบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹เป„เบŸเบฅโ€‹เปŒ Parquet เบ‚เบญเบ‡โ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบšเปเปˆโ€‹เบกเบตโ€‹เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบโ€‹เบซเบผเบฒเบ (~200 KBโ€‹)โ€‹. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R
เบ‚เบฐโ€‹เบซเบ™เบฒเบ”โ€‹เบ™เป‰เบญเบโ€‹เป€เบเบตเบ™โ€‹เป„เบ›โ€‹เปเบฅเบฐโ€‹เบšเปเปˆโ€‹เบชเบฐโ€‹เป€เบซเบกเบตโ€‹เบžเบฒเบšโ€‹, เบชเบดเปˆเบ‡โ€‹เบกเบฐโ€‹เบซเบฑเบ”โ€‹!

เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบชเบญเบšเบ–เบฒเบก Spark เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: Spark เบกเบต overhead เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‡เปˆเบฒเบเบ”เบฒเบ.

เป‚เบ”เบเบเบฒเบ™เบ”เบฒเบงเป‚เบซเบผเบ”เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเบฐเบซเบฅเบฒเบ”, เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเป„เบงเป„เบ”เป‰. เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบฐเบ„เบฃเบดเบš R เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™เป€เบŠเบตเบšเป€เบงเบต Spark เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบซเบฅเบ”เบเบญเบšเบ‚เปเป‰เบกเบนเบ™ Spark เบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบเบธเปˆเบก Parquet (bin). เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป‚เบซเบผเบ”โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปเบ•เปˆโ€‹เบšเปเปˆโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบš Sparklyr เป€เบžเบทเปˆเบญโ€‹เบฎเบฑเบšโ€‹เบฎเบนเป‰โ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹.

sc <- Spark_connect(master = "local")

desired_snp <- 'rs34771739'

# Start a timer
start_time <- Sys.time()

# Load the desired bin into Spark
intensity_data <- sc %>% 
  Spark_read_Parquet(
    name = 'intensity_data', 
    path = get_snp_location(desired_snp),
    memory = FALSE )

# Subset bin to snp and then collect to local
test_subset <- intensity_data %>% 
  filter(SNP_Name == desired_snp) %>% 
  collect()

print(Sys.time() - start_time)

เบเบฒเบ™เบ›เบฐเบซเบฒเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒ 29,415 เบงเบดเบ™เบฒเบ—เบต. เบ”เบตเบเบงเปˆเบฒเบซเบผเบฒเบ, เปเบ•เปˆเบšเปเปˆเบ”เบตเป€เบเบตเบ™เป„เบ›เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบกเบฐเบซเบฒเบŠเบปเบ™เบ‚เบญเบ‡เบชเบดเปˆเบ‡เปƒเบ”. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฅเบฑเปˆเบ‡เบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เปƒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเป„เบ”เป‰เป€เบžเบฒเบฐเบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบžเบฐเบเบฒเบเบฒเบก cache เบเบญเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, Spark เบชเบฐเป€เบซเบกเบต crashed, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฑเบ”เบชเบฑเบ™เบซเบผเบฒเบเบเปˆเบงเบฒ 50 GB เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบซเป‰เบเบฑเบšเบŠเบธเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบ™เป‰เปเบฒเบซเบ™เบฑเบเบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 15.

เบเบฑเบšเบ„เบทเบ™เบซเบฒ AWK

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: Associative arrays เปƒเบ™ AWK เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบ.

เบ‚เป‰เบญเบเบฎเบนเป‰เบงเปˆเบฒเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเป„เบงเบชเบนเบ‡เบเบงเปˆเบฒ. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบทเปˆเป„เบ”เป‰เบงเปˆเบฒเปƒเบ™เบชเบดเปˆเบ‡เบกเบฐเบซเบฑเบ” เบเบฒเบ™เบชเบญเบ™ AWK เป‚เบ”เบ Bruce Barnett เบ‚เป‰เบญเบเป„เบ”เป‰เบญเปˆเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเป€เบขเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ "array เบชเบฐเบกเบฒเบ„เบปเบก" เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เบนเปˆเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™, เป€เบŠเบดเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ–เบทเบเป€เบญเบตเป‰เบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™ AWK, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเบ„เบดเบ”เบซเบผเบฒเบเบเปˆเบฝเบงเบเบฑเบšเบžเบงเบเบกเบฑเบ™. Roman Cheplyaka เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบ„เปเบฒเบงเปˆเบฒ "เบญเบฒเป€เบฃเบชเบฐเบกเบฒเบ„เบปเบก" เปเบกเปˆเบ™เป€เบเบปเปˆเบฒเบเบงเปˆเบฒเบ„เปเบฒเบชเบฑเบš "เบ„เบนเปˆเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™". เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™ เบŠเบญเบเบซเบฒ key-value เปƒเบ™ Google Ngram, เป€เบˆเบปเป‰เบฒเบˆเบฐเบšเปเปˆเป€เบซเบฑเบ™เบ„เปเบฒเบ™เบตเป‰เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เปเบ•เปˆเป€เบˆเบปเป‰เบฒเบˆเบฐเบžเบปเบšเป€เบซเบฑเบ™ arrays เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡! เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, "เบ„เบนเปˆเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™" เบกเบฑเบเบˆเบฐเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฝเบšเบ—เบฝเบšเบกเบฑเบ™เบเบฑเบš hashmap. เบ‚เป‰เบญเบเบฎเบนเป‰เบงเปˆเบฒเบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰ associative arrays เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ SNPs เบ‚เบญเบ‡เบ‚เป‰เบญเบเบเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ–เบฑเบ‡เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™เบ”เบดเบšเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰ Spark.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปƒเบ™เบชเบฐเบ„เบดเบš AWK เบ‚เป‰เบญเบเป„เบ”เป‰เปƒเบŠเป‰เบšเบฅเบฑเบญเบ BEGIN. เบ™เบตเป‰เปเบกเปˆเบ™เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบเปˆเบญเบ™เบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เปเบ–เบงเบ—เปเบฒเบญเบดเบ”เบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบชเปˆเบงเบ™เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ script.

join_data.awk
BEGIN {
  FS=",";
  batch_num=substr(chunk,7,1);
  chunk_id=substr(chunk,15,2);
  while(getline < "snp_to_bin.csv") {bin[$1] = $2}
}
{
  print $0 > "chunked/chr_"chr"_bin_"bin[$1]"_"batch_num"_"chunk_id".csv"
}

เบ—เบตเบกเบ‡เบฒเบ™ while(getline...) เป‚เบซเบผเบ”เปเบ–เบงเบ—เบฑเบ‡เปเบปเบ”เบˆเบฒเบเบเบธเปˆเบก CSV (bin), เบ•เบฑเป‰เบ‡เบ–เบฑเบ™เบ—เบณเบญเบดเบ” (เบŠเบทเปˆ SNP) เป€เบ›เบฑเบ™เบเบฐเปเบˆเบชเบณเบฅเบฑเบš associative array bin เปเบฅเบฐเบกเบนเบ™เบ„เปˆเบฒเบ—เบตเบชเบญเบ‡ (เบเบธเปˆเบก) เป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบ™เบ•เบฑเบ™ { }, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบ—เบธเบเป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ•เบปเป‰เบ™เบ•เป, เปเบ•เปˆเบฅเบฐเป€เบชเบฑเป‰เบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบฎเบฑเบšเบŠเบทเปˆเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเบ‚เบถเป‰เบ™เบเบฑเบšเบเบธเปˆเบก (bin): ..._bin_"bin[$1]"_....

เบ•เบปเบงเปเบ› batch_num ะธ chunk_id เบเบปเบ‡เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฐเปœเบญเบ‡เปƒเบซเป‰เป‚เบ”เบเบ—เปเปˆเบ™เบฑเป‰เบ™, เบซเบผเบตเบเบฅเปˆเบฝเบ‡เบชเบฐเบžเบฒเบšเบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™, เปเบฅเบฐเปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบฅเปˆเบ™ parallel, เบ‚เบฝเบ™เปƒเบชเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡.

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ‚เป‰เบญเบเบเบฐเปเบˆเบเบเบฐเบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ”เบดเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบŸเป€เบ”เบตเปƒเบ™เป‚เบ„เป‚เบกเป‚เบŠเบกเบ—เบตเปˆเป€เบซเบฅเบทเบญเบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบเบเบฑเบš AWK, เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™ script Bash เบญเบทเปˆเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป‚เบ„เป‚เบกเป‚เบŠเบกเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡เปเบฅเบฐเบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเป€เบฅเบดเบเป€เบŠเบดเปˆเบ‡เป„เบ›เบซเบฒ S3.

DESIRED_CHR='13'

# Download chromosome data from s3 and split into bins
aws s3 ls $DATA_LOC |
awk '{print $4}' |
grep 'chr'$DESIRED_CHR'.csv' |
parallel "echo 'reading {}'; aws s3 cp "$DATA_LOC"{} - | awk -v chr=""$DESIRED_CHR"" -v chunk="{}" -f split_on_chr_bin.awk"

# Combine all the parallel process chunks to single files and upload to rds using R
ls chunked/ |
cut -d '_' -f 4 |
sort -u |
parallel "echo 'zipping bin {}'; cat chunked/*_bin_{}_*.csv | ./upload_as_rds.R '$S3_DEST'/chr_'$DESIRED_CHR'_bin_{}.rds"
rm chunked/*

script เบกเบตเบชเบญเบ‡เบžเบฒเบ parallel.

เปƒเบ™เบžเบฒเบเบ—เปเบฒเบญเบดเบ”, เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบญเปˆเบฒเบ™เบˆเบฒเบเป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เป‚เบกเป‚เบŠเบกเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰เบˆเบฐเบ–เบทเบเปเบˆเบเบขเบฒเบเปƒเบ™เบ—เบปเปˆเบงเบเบฐเบ—เบนเป‰, เป€เบŠเบดเปˆเบ‡เปเบˆเบเบขเบฒเบเป„เบŸเบฅเปŒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบธเปˆเบกเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก (bin). เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เป€เบŠเบทเป‰เบญเบŠเบฒเบ”เป€เบกเบทเปˆเบญเบซเบผเบฒเบเบซเบปเบงเบ‚เปเป‰เบ‚เบฝเบ™เปƒเบชเปˆเป„เบŸเบฅเปŒเบ”เบฝเบงเบเบฑเบ™, AWK เบœเปˆเบฒเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒเป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ›เบซเบฒเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ•เปˆเบฒเบ‡เป†, เป€เบŠเบฑเปˆเบ™:. chr_10_bin_52_batch_2_aa.csv. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบซเบผเบฒเบเป†เป„เบŸเบฅเปŒเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™เปเบœเปˆเบ™ (เบชเปเบฒเบฅเบฑเบšเบ™เบตเป‰เบ‚เป‰เบญเบเปƒเบŠเป‰ terabyte EBS volumes).

Conveyor เบˆเบฒเบเบžเบฒเบเบ—เบตเบชเบญเบ‡ parallel เป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เบเบธเปˆเบก (bin) เปเบฅเบฐเบฅเบงเบกเป„เบŸเบฅเปŒเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ CSV เบ—เบปเปˆเบงเป„เบ› c catเปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบปเปˆเบ‡เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบญเบญเบ.

เบเบฒเบ™เบญเบญเบเบญเบฒเบเบฒเบ”เปƒเบ™ R?

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆ stdin ะธ stdout เบˆเบฒเบ R script, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบดเปˆเบ‡เปƒเบŠเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ—เปเปˆ.

เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เป€เบชเบฑเป‰เบ™เบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบชเบฐเบ„เบดเบš Bash เบ‚เบญเบ‡เบ—เปˆเบฒเบ™: ...cat chunked/*_bin_{}_*.csv | ./upload_as_rds.R.... เบกเบฑเบ™เปเบ›เป„เบŸเบฅเปŒเบเบธเปˆเบกเบ—เบตเปˆเบ•เบดเบ”เบเบฑเบ™เบ—เบฑเบ‡เปเบปเบ” (bin) เป€เบ›เบฑเบ™ R script เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰. {} เปเบกเปˆเบ™เป€เบ•เบฑเบเบ™เบดเบเบžเบดเป€เบชเบ” parallel, เป€เบŠเบดเปˆเบ‡เปƒเบชเปˆเบ‚เปเป‰เบกเบนเบ™เปƒเบ”เป†เบ—เบตเปˆเบกเบฑเบ™เบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบชเบฒเบเบ™เป‰เปเบฒเบ—เบตเปˆเบฅเบฐเบšเบธเป‚เบ”เบเบเบปเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡. เบ—เบฒเบ‡เป€เบฅเบทเบญเบ {#} เปƒเบซเป‰ ID เบเบฐเบ—เบนเป‰เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ, เปเบฅเบฐ {%} เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบเบšเปˆเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบ (เบŠเป‰เบณเป†, เปเบ•เปˆเบšเปเปˆเป€เบ„เบตเบเบžเป‰เบญเบกเป†เบเบฑเบ™). เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบปเบšเป€เบซเบฑเบ™เบขเบนเปˆเปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™.

#!/usr/bin/env Rscript
library(readr)
library(aws.s3)

# Read first command line argument
data_destination <- commandArgs(trailingOnly = TRUE)[1]

data_cols <- list(SNP_Name = 'c', ...)

s3saveRDS(
  read_csv(
        file("stdin"), 
        col_names = names(data_cols),
        col_types = data_cols 
    ),
  object = data_destination
)

เป€เบกเบทเปˆเบญเบ•เบปเบงเปเบ› file("stdin") เบชเบปเปˆเบ‡เป„เบ› readr::read_csv, เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปเบ›เป€เบ›เบฑเบ™ R script เปเบกเปˆเบ™ loaded เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบเบญเบš, เป€เบŠเบดเปˆเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เบฎเบนเบšเปเบšเบš .rds- เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹ aws.s3 เบ‚เบฝเบ™เป‚เบ”เบเบเบปเบ‡เบเบฑเบš S3.

RDS เปเบกเปˆเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: Parquet เบฎเบธเปˆเบ™ junior, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ frills เบ‚เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเปเบฒเป‚เบžเบ‡.

เบซเบผเบฑเบ‡เบˆเบฒเบเบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบ‚เบฝเบ™ Bash เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบกเบฑเบ” .rds-files เบ—เบตเปˆเบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™ S3, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ‚เป‰เบญเบเปƒเบŠเป‰เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบชเป‰เบฒเบ‡เปƒเบ™เบ›เบฐเป€เบžเบ”.

เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบเบฒเบ™เปƒเบŠเป‰เป€เบšเบ R, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เบšเปเปˆเปเบ›เบเปƒเบˆ, เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡ R เบ—เบตเปˆเบญเปˆเบฒเบ™เปเบฅเบฐเบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เป‚เบกเป‚เบŠเบกเบ‚เบฐเบซเบ™เบฒเบ”เบเบฒเบ‡เบซเบ™เบถเปˆเบ‡, เบงเบฝเบเบชเปเบฒเป€เบฅเบฑเบ”เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡ C5n.4xl เปƒเบ™เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™เบชเบญเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡.

เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ” S3

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเบฐเบซเบผเบฒเบ”, S3 เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเป„เบŸเบฅเปŒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ.

เบ‚เป‰เบญเบเบเบฑเบ‡เบงเบปเบ™เบงเปˆเบฒ S3 เบˆเบฐเบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเป„เบŸเบฅเปŒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบ—เบตเปˆเบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบกเบฑเบ™. เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เบŠเบทเปˆเป„เบŸเบฅเปŒเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบ, เปเบ•เปˆ S3 เบˆเบฐเบŠเบญเบเบซเบฒเบžเบงเบเบกเบฑเบ™เป„เบ”เป‰เปเบ™เบงเปƒเบ”?

เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R
เป‚เบŸเบ™เป€เบ”เบตเปƒเบ™ S3 เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เบฅเบฐเบšเบปเบšเบšเปเปˆเบชเบปเบ™เปƒเบˆเบชเบฑเบ™เบเบฒเบฅเบฑเบ /. เบˆเบฒเบเปœเป‰เบฒ FAQ S3.

เบกเบฑเบ™เบ›เบฒเบเบปเบ”เบงเปˆเบฒ S3 เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เป€เบ›เบฑเบ™เบเบฐเปเบˆเบ‡เปˆเบฒเบเป†เปƒเบ™เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash เบซเบผเบทเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆเป€เบญเบเบฐเบชเบฒเบ™. เบ–เบฑเบ‡เบชเบฒเบกเบฒเบ”เบ„เบดเบ”เบงเปˆเบฒเป€เบ›เบฑเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เปเบฅเบฐเป„เบŸเบฅเปŒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบšเบฑเบ™เบ—เบถเบเปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบฑเป‰เบ™.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเป„เบงเปเบฅเบฐเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™เบ•เปเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฒเบเป„เบ”เป‰เบขเบนเปˆ Amazon, เบกเบฑเบ™เบšเปเปˆเปเบ›เบเปƒเบˆเบ—เบตเปˆเบฅเบฐเบšเบปเบšเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ™เบตเป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เบ”เบตเบ—เบตเปˆเบชเบธเบ”. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบŠเบญเบเบซเบฒเบ„เบงเบฒเบกเบชเบปเบกเบ”เบธเบ™: เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบกเบตเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบซเบผเบฒเบ, เปเบ•เปˆเบงเปˆเบฒเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเบงเปˆเบฒเบกเบฑเบ™เบ”เบตเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป„เบŸเบฅเปŒเบ›เบฐเบกเบฒเบ™ 20 เบžเบฑเบ™เบ–เบฑเบ‡. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบทเบšเบ•เปเปˆเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเป„เบงเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบชเป‰เบฒเบ‡เบ–เบฑเบ‡เบžเบดเป€เบชเบ”เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบกเบนเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบŠเบญเบเบซเบฒ). เปเบ•เปˆเบšเปเปˆเบกเบตเป€เบงเบฅเบฒเบซเบผเบทเป€เบ‡เบดเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ•เบทเปˆเบกเบญเบตเบ.

เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เป‰เบฒเบก?

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰: เบชเบฒเป€เบซเบ”เบญเบฑเบ™เบ”เบฑเบšเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบชเบเป€เบงเบฅเบฒเปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเปˆเบญเบ™เป„เบงเบญเบฑเบ™เบ„เบงเบ™.

เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡ เบชเบณ เบ„เบฑเบ™เบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ–เบฒเบกเบ•เบปเบงเป€เบญเบ‡เบงเปˆเบฒ: "เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบ•เป‰เบญเบ‡เปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡?" เป€เบซเบ”เบœเบปเบ™เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เป‚เบซเบผเบ” (เป„เบŸเบฅเปŒ Gzipped CSV เปƒเบŠเป‰เป€เบงเบฅเบฒเป‚เบซเบผเบ”เบ”เบปเบ™เบเบงเปˆเบฒ 7 เป€เบ—เบปเปˆเบฒ) เปเบฅเบฐเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ‚เป‰เบญเบเบญเบฒเบ”เบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เบทเบ™เบงเปˆเบฒ R เบชเบฒเบกเบฒเบ”เป‚เบซเบฅเบ”เป„เบŸเบฅเปŒ Parquet (เบซเบผเบท Arrow) เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป‚เบซเบผเบ” Spark. เบ—เบธเบเบ„เบปเบ™เบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ R, เปเบฅเบฐเบ–เป‰เบฒเบ‚เป‰เบญเบเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™เบฎเบนเบšเปเบšเบšเบญเบทเปˆเบ™, เบ‚เป‰เบญเบเบเบฑเบ‡เบกเบตเบ‚เปเป‰เบกเบนเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบš, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เปเปˆเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เบเบฒเบ™เปเบšเปˆเบ‡เบงเบฝเบ

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบขเปˆเบฒเบžเบฐเบเบฒเบเบฒเบกเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบงเบฝเบเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เปƒเบซเป‰เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป€เบฎเบฑเบ”เบกเบฑเบ™.

เบ‚เป‰เบญเบเป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบ„เป‚เบกเป‚เบŠเบกเบซเบ™เบถเปˆเบ‡, เบ•เบญเบ™เบ™เบตเป‰เบ‚เป‰เบญเบเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”.
เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡ EC2 เบซเบผเบฒเบเป†เบ„เบฑเป‰เบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปƒเบˆเป€เบซเบฅเบทเป‰เบญเบกเปƒเบช, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบ‚เป‰เบญเบเบขเป‰เบฒเบ™เบงเปˆเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เบ—เบตเปˆเบšเปเปˆเบชเบปเบกเบ”เบธเบ™เบซเบผเบฒเบเปƒเบ™เบ—เบปเปˆเบงเบงเบฝเบเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (เบ„เบทเบเบฑเบ™เบเบฑเบš Spark เบ›เบฐเบชเบปเบšเบเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ—เบตเปˆเบšเปเปˆเบชเบปเบกเบ”เบธเบ™). เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบญเบเบšเปเปˆเบชเบปเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เบซเบ™เบถเปˆเบ‡เบ•เปเปˆเป‚เบ„เป‚เบกเป‚เบŠเบก, เป€เบžเบฒเบฐเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบŠเบต AWS เบกเบตเบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ 10 เบ•เบปเบงเบขเปˆเบฒเบ‡.

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ‚เบฝเบ™ script เปƒเบ™ R เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡.

เบ—เปเบฒเบญเบดเบ”, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เปเปƒเบซเป‰ S3 เบ„เบดเบ”เป„เบฅเปˆเบงเปˆเบฒเปเบ•เปˆเบฅเบฐเป‚เบ„เป‚เบกเป‚เบŠเบกเบ„เบญเบšเบ„เบญเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”.

library(aws.s3)
library(tidyverse)

chr_sizes <- get_bucket_df(
  bucket = '...', prefix = '...', max = Inf
) %>% 
  mutate(Size = as.numeric(Size)) %>% 
  filter(Size != 0) %>% 
  mutate(
    # Extract chromosome from the file name 
    chr = str_extract(Key, 'chr.{1,4}.csv') %>%
             str_remove_all('chr|.csv')
  ) %>% 
  group_by(chr) %>% 
  summarise(total_size = sum(Size)/1e+9) # Divide to get value in GB



# A tibble: 27 x 2
   chr   total_size
   <chr>      <dbl>
 1 0           163.
 2 1           967.
 3 10          541.
 4 11          611.
 5 12          542.
 6 13          364.
 7 14          375.
 8 15          372.
 9 16          434.
10 17          443.
# โ€ฆ with 17 more rows

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ‚เบฝเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”, shuffles เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡ chromosomes, เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบเบธเปˆเบก. num_jobs เปเบฅเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบงเบฝเบเบ›เบธเบ‡เปเบ•เปˆเบ‡เบ—เบฑเบ‡เปเบปเบ”เบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบ™เบงเปƒเบ”.

num_jobs <- 7
# How big would each job be if perfectly split?
job_size <- sum(chr_sizes$total_size)/7

shuffle_job <- function(i){
  chr_sizes %>%
    sample_frac() %>% 
    mutate(
      cum_size = cumsum(total_size),
      job_num = ceiling(cum_size/job_size)
    ) %>% 
    group_by(job_num) %>% 
    summarise(
      job_chrs = paste(chr, collapse = ','),
      total_job_size = sum(total_size)
    ) %>% 
    mutate(sd = sd(total_job_size)) %>% 
    nest(-sd)
}

shuffle_job(1)



# A tibble: 1 x 2
     sd data            
  <dbl> <list>          
1  153. <tibble [7 ร— 3]>

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปเบฅเปˆเบ™เบœเปˆเบฒเบ™เบซเบ™เบถเปˆเบ‡เบžเบฑเบ™ shuffles เป‚เบ”เบเปƒเบŠเป‰ purrr เปเบฅเบฐเป€เบฅเบทเบญเบเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”.

1:1000 %>% 
  map_df(shuffle_job) %>% 
  filter(sd == min(sd)) %>% 
  pull(data) %>% 
  pluck(1)

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เป€เบ–เบดเบ‡เบŠเบธเบ”เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบซเบผเบฒเบ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบซเปเปˆ script Bash เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™ loop เปƒเบซเบเปˆ for. เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ™เบตเป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™ 10 เบ™เบฒเบ—เบตเป€เบžเบทเปˆเบญเบ‚เบฝเบ™. เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบ—เบตเปˆเบ‚เป‰เบญเบเบˆเบฐเปƒเบŠเป‰เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบซเบ™เป‰เบฒเบงเบฝเบเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบชเบปเบกเบ”เบธเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ–เบทเบเบ•เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เบ™เบตเป‰.

for DESIRED_CHR in "16" "9" "7" "21" "MT"
do
# Code for processing a single chromosome
fi

เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบ‚เป‰เบญเบเป€เบžเบตเปˆเบกเบ„เปเบฒเบชเบฑเปˆเบ‡เบ›เบดเบ”:

sudo shutdown -h now

... เปเบฅเบฐเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เบœเบปเบ™! เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ AWS CLI, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เบ—เบฒเบ‡เป€เบฅเบทเบญเบ user_data เป„เบ”เป‰เบกเบญเบšเบชเบฐเบ„เบฃเบดเบš Bash เปƒเบซเป‰เปเบเปˆเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบฅเปˆเบ™เปเบฅเบฐเบ›เบดเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบชเบฐเบ™เบฑเป‰เบ™เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบšเปเปˆเป„เบ”เป‰เบˆเปˆเบฒเบเป€เบ‡เบดเบ™เบชเปเบฒเบฅเบฑเบšเบžเบฐเบฅเบฑเบ‡เบ‡เบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบก.

aws ec2 run-instances ...
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=<<job_name>>}]" 
--user-data file://<<job_script_loc>>

เบŠเบญเบ‡เบเบฑเบ™เป€เบฅเบตเบ!

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: API เบ„เบงเบ™เบˆเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเบชเปเบฒเบฅเบฑเบš sake เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเปเบฅเบฐเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰.

เบชเบธเบ”เบ—เป‰เบฒเบเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบขเบนเปˆเปƒเบ™เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเปเบšเบšเบŸเบญเบก. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡ API เบ‡เปˆเบฒเบเป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เป. เบ–เป‰เบฒเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบ‚เป‰เบญเบเบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ›เปˆเบฝเบ™เบˆเบฒเบ .rds เบเบฑเบšเป„เบŸเบฅเปŒ Parquet, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เบšเบฑเบ™เบซเบฒเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ, เบšเปเปˆเปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เบชเปเบฒเบฅเบฑเบšเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบฎเบฑเบ”เบŠเบธเบ” R เบžเบฒเบเปƒเบ™.

เบชเป‰เบฒเบ‡เปเบฅเบฐเบšเบฑเบ™เบ—เบถเบเบŠเบธเบ”เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบˆเบฑเบ”เบขเบนเปˆเปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบซเบ™เบถเปˆเบ‡ get_snp. เบ‚เป‰เบญเบเบเบฑเบ‡เป„เบ”เป‰เบชเป‰เบฒเบ‡เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบชเปเบฒเบฅเบฑเบšเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบ pkgdown, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เปเบฅเบฐเป€เบญเบเบฐเบชเบฒเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ.

เบงเบดเป€เบ„เบฒเบฐ 25TB เป‚เบ”เบเปƒเบŠเป‰ AWK เปเบฅเบฐ R

เบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐ

เบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เบซเบเบฑเบ‡: เบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ–เบทเบเบเบฐเบเบฝเบกเบ”เบต, caching เบˆเบฐเบ‡เปˆเบฒเบ!

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบปเป‰เบ™เบ•เปเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบŠเบธเบ” SNP, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰ binning เป€เบžเบทเปˆเบญเบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ. เป€เบกเบทเปˆเบญเบชเบปเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เบœเปˆเบฒเบ™ SNP, เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบเบเบธเปˆเบก (bin) เปเบกเปˆเบ™เบ•เบดเบ”เบเบฑเบšเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเบปเปˆเบ‡เบ„เบทเบ™. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเป€เบเบปเปˆเบฒเบชเบฒเบกเบฒเบ” (เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต) เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเปƒเบซเบกเปˆ.

# Part of get_snp()
...
  # Test if our current snp data has the desired snp.
  already_have_snp <- desired_snp %in% prev_snp_results$snps_in_bin

  if(!already_have_snp){
    # Grab info on the bin of the desired snp
    snp_results <- get_snp_bin(desired_snp)

    # Download the snp's bin data
    snp_results$bin_data <- aws.s3::s3readRDS(object = snp_results$data_loc)
  } else {
    # The previous snp data contained the right bin so just use it
    snp_results <- prev_snp_results
  }
...

เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบžเบฑเบเป€เบเบฑเบ”, เบ‚เป‰เบญเบเปเบฅเปˆเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡เป€เบžเบทเปˆเบญเบ›เบฝเบšเบ—เบฝเบšเบ„เบงเบฒเบกเป„เบงเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ•เปˆเบฒเบ‡เป†. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบšเปเปˆเบฅเบฐเป€เบฅเบตเบเบ™เบตเป‰, เป€เบžเบฒเบฐเบงเปˆเบฒเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปเบกเปˆเบ™เบšเปเปˆเป„เบ”เป‰เบ„เบฒเบ”เบซเบงเบฑเบ‡. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡, dplyr::filter เปเบกเปˆเบ™เป„เบงเบเบงเปˆเบฒเบเบฒเบ™เบˆเบฑเบšเปเบ–เบงเป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ”เบฑเบ”เบชเบฐเบ™เบต, เปเบฅเบฐเบเบฒเบ™เบ”เบถเบ‡เป€เบญเบปเบฒเบ–เบฑเบ™เบ”เบฝเบงเบˆเบฒเบเบเบญเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบเบฑเปˆเบ™เบ•เบญเบ‡เปเบกเปˆเบ™เป„เบงเบเบงเปˆเบฒเบเบฒเบ™เปƒเบŠเป‰ syntax เบ”เบฑเบ”เบชเบฐเบ™เบต.

เบเบฐเบฅเบธเบ™เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบงเบฑเบ”เบ–เบธ prev_snp_results เบกเบตเบเบฐเปเบˆ snps_in_bin. เบ™เบตเป‰เปเบกเปˆเบ™ array เบ‚เบญเบ‡ SNPs เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบเบธเปˆเบก (bin), เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเบงเบ”เบชเบญเบšเป„เบ”เป‰เป„เบงเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบเบฒเบ™เบชเบญเบšเบ–เบฒเบกเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ. เบกเบฑเบ™เบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐ loop เบœเปˆเบฒเบ™ SNPs เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบเบธเปˆเบก (bin) เบ”เป‰เบงเบเบฅเบฐเบซเบฑเบ”เบ™เบตเป‰:

# Get bin-mates
snps_in_bin <- my_snp_results$snps_in_bin

for(current_snp in snps_in_bin){
  my_snp_results <- get_snp(current_snp, my_snp_results)
  # Do something with results 
}

ะ ะตะทัƒะปัŒั‚ะฐั‚ั‹

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ” (เปเบฅเบฐเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡) เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปเบšเบšเบˆเปเบฒเบฅเบญเบ‡เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเป€เบ„เบตเบเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบชเบดเปˆเบ‡เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบงเปˆเบฒเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบซเป‰เบญเบ‡เบ—เบปเบ”เบฅเบญเบ‡เบ‚เบญเบ‡เบ‚เป‰เบญเบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบญเบฒเบเบฒเบ™เปเบŠเบเบŠเป‰เบญเบ™เปƒเบ”เป†. เบžเบงเบเป€เบ‚เบปเบฒเบžเบฝเบ‡เปเบ•เปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบ.

เปเบฅเบฐเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบŠเบธเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบฅเบฒเบเบฅเบฐเบญเบฝเบ”, เบ‚เป‰เบญเบเบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เปƒเบซเป‰เบฎเบนเบšเปเบšเบšเบ‚เปเป‰เบกเบนเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบžเปเบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบ”เป‰เบ–เป‰เบฒเบ‚เป‰เบญเบเบซเบฒเบเป„เบ›เปƒเบ™เบกเบทเป‰เบญเบทเปˆเบ™ ...

เบ„เบงเบฒเบกเป„เบงเป„เบ”เป‰เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”. เบžเบงเบเป€เบฎเบปเบฒเบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบชเบฐเปเบเบ™เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบžเบฑเบ™เบ—เบธเบเปเบฒเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเป‚เบซเบเบ”. เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰เป„เบ”เป‰ (เบกเบฑเบ™เบเบฒเบเป€เบ›เบฑเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡เป€เบเบตเบ™เป„เบ›), เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบเป‰เบญเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบเบธเปˆเบก (bin) เปเบฅเบฐเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบชเปเบฒเบฅเบฑเบš SNP เบซเบ™เบถเปˆเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 0,1 เบงเบดเบ™เบฒเบ—เบต, เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™. เบ•เปˆเปเบฒเบ—เบตเปˆเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเบชเปเบฒเบฅเบฑเบš S3 เปเบกเปˆเบ™เบ–เบปเปˆเบงเบ”เบดเบ™.

เบชเบฐเบซเบฅเบธเบš

เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”. เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เป„เบ”เป‰โ€‹เบซเบฑเบ™โ€‹เบญเบญเบโ€‹เป€เบ›เบฑเบ™โ€‹เบšเบธเบโ€‹เบ„เบปเบ™โ€‹, เปเบฅเบฐโ€‹เป€เบเบทเบญเบšโ€‹เปเบ™เปˆโ€‹เบ™เบญเบ™โ€‹เบงเปˆเบฒโ€‹เบšเปเปˆโ€‹เป€เบซเบกเบฒเบฐโ€‹เบชเบปเบกโ€‹. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบซเบ™เบฑเบ‡เบชเบทเป€เบ”เบตเบ™เบ—เบฒเบ‡. เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบซเป‰เบ„เบปเบ™เบญเบทเปˆเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบšเปเปˆเบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบซเบปเบงเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆ, เบกเบฑเบ™เปเบกเปˆเบ™เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เปเบฅเบฐเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบŠเบญเบเบซเบฒเบ™เบฑเบเบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”เบ‚เปเป‰เบกเบนเบ™, เบˆเบปเปˆเบ‡เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™, เปเบฅเบฐเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบ. เบ‚เป‰เบญเบเบ”เบตเปƒเบˆเบ—เบตเปˆเบ‚เป‰เบญเบเบกเบตเบงเบดเบ—เบตเบˆเปˆเบฒเบเป€เบ‡เบดเบ™, เปเบ•เปˆเบญเบตเบเบซเบผเบฒเบเบ„เบปเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบ”เบฝเบงเบเบฑเบ™เบ”เบตเบเบงเปˆเบฒเบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเบกเบตเป‚เบญเบเบฒเบ”เบเป‰เบญเบ™เบ‚เบฒเบ”เป€เบ‡เบดเบ™เบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบก.

เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ‚เปเป‰เบกเบนเบ™เปƒเบซเบเปˆเปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบผเบฒเบเบซเบผเบฒเบ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเป€เบงเบฅเบฒ, เบ—เปˆเบฒเบ™เป€เบเบทเบญเบšเปเบ™เปˆเบ™เบญเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เป„เบ”เป‰เป„เบงเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบฅเบฐเบเบฒเบ™เบชเบฐเบเบฑเบ”เป€เบญเบปเบฒเบ‚เปเป‰เบกเบนเบ™เบญเบฑเบ”เบชเบฐเบฅเบดเบเบฐ. เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบกเบฑเบ™เบกเบฒเบฅเบปเบ‡เปƒเบ™เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบ-เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”.

เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰:

  • เบšเปเปˆเบกเบตเบงเบดเบ—เบตเบ—เบตเปˆเบฅเบฒเบ„เบฒเบ–เบทเบเบ—เบตเปˆเบˆเบฐเบงเบดเป€เบ„เบฒเบฐ 25 TB เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบง;
  • เบˆเบปเปˆเบ‡เบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เป„เบŸเบฅเปŒ Parquet เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบฅเบฐเบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ;
  • Partitions เปƒเบ™ Spark เบ•เป‰เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบชเบปเบกเบ”เบนเบ™;
  • เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบšเปเปˆเป€เบ„เบตเบเบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”เปƒเบซเป‰ 2,5 เบฅเป‰เบฒเบ™เบžเบฒเบ—เบดเบŠเบฑเบ™;
  • เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เปเบกเปˆเบ™เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡ Spark;
  • เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบดเป€เบชเบ”เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบžเบดเป€เบชเบ”;
  • เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก Spark เปเบกเปˆเบ™เป„เบง, เปเบ•เปˆเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปเบกเปˆเบ™เบเบฑเบ‡เบกเบตเบฅเบฒเบ„เบฒเปเบžเบ‡;
  • เบขเปˆเบฒเบ™เบญเบ™เป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเบชเบญเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบซเป‰เบ—เปˆเบฒเบ™, เบšเบฒเบ‡เบ„เบปเบ™เบญเบฒเบ”เบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเปเบฅเป‰เบงเปƒเบ™เบŠเบธเบกเบ›เบต 1980;
  • gnu parallel - เบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เบ‚เบญเบ‡ magical, เบ—เบธเบเบ„เบปเบ™เบ„เบงเบ™เปƒเบŠเป‰เบกเบฑเบ™;
  • Spark เบกเบฑเบเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบšเบตเบšเบญเบฑเบ”เปเบฅเบฐเบšเปเปˆเบกเบฑเบเบเบฒเบ™เบฅเบงเบกเบžเบฒเบ—เบดเบŠเบฑเบ™;
  • Spark เบกเบต overhead เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ‡เปˆเบฒเบเบ”เบฒเบ;
  • AWK's associative arrays เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบ;
  • เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เปเปˆ stdin ะธ stdout เบˆเบฒเบ R script, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เปƒเบŠเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ—เปเปˆ;
  • เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบชเบฐเบซเบฅเบฒเบ”, S3 เบชเบฒเบกเบฒเบ”เบ›เบธเบ‡เปเบ•เปˆเบ‡เป„เบŸเบฅเปŒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ;
  • เป€เบซเบ”เบœเบปเบ™เบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบชเบเป€เบงเบฅเบฒเปเบกเปˆเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบเปˆเบญเบ™เป„เบงเบญเบฑเบ™เบ„เบงเบ™;
  • เบขเปˆเบฒเบžเบฐเบเบฒเบเบฒเบกเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบงเบฝเบเบ‡เบฒเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡, เปƒเบซเป‰เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป€เบฎเบฑเบ”เบกเบฑเบ™;
  • API เบ„เบงเบ™เบˆเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเบชเปเบฒเบฅเบฑเบš sake เบ‚เบญเบ‡เบ„เบงเบฒเบกเบชเบฐเบ”เบงเบเปเบฅเบฐเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰;
  • เบ–เป‰เบฒเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ–เบทเบเบเบฐเบเบฝเบกเบ”เบต, caching เบˆเบฐเบ‡เปˆเบฒเบ!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™