AWK рдФрд░ R рдХреЗ рд╕рд╛рде рдкрд░рд╕рд┐рдо 25TB


рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдХреИрд╕реЗ рдкрдврд╝реЗрдВ : рдореИрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд╛рда рдЗрддрдирд╛ рд▓рдВрдмрд╛ рдФрд░ рдЕрд░рд╛рдЬрдХ рдирд┐рдХрд▓рд╛ред рдЖрдкрдХреЗ рд╕рдордп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдзреНрдпрд╛рдп рдХреА рд╢реБрд░реБрдЖрдд "рд╡реНрд╣рд╛рдЯ рдЖрдИ рд▓рд░реНрди" рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рдПрдХ рдпрд╛ рджреЛ рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ рдЕрдзреНрдпрд╛рдп рдХрд╛ рд╕рд╛рд░ рд╕рдордЭрд╛рддрд╛ рд╣реВрдВред

"рдмрд╕ рд╕рдорд╛рдзрд╛рди рджрд┐рдЦрд╛рдУ!" рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ "рдФрд░ рдЕрдзрд┐рдХ рдЖрд╡рд┐рд╖реНрдХрд╛рд░рд╢реАрд▓ рдмрдиреЗрдВ" рдЕрдзреНрдпрд╛рдп рдкрд░ рдЬрд╛рдПрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реИред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдореВрд▓ рдбреАрдПрдирдП рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХ рдПрд╕рдПрдирдкреА рдЪрд┐рдк рд╣реИ)ред рдмрд╛рдж рдХреЗ рдореЙрдбрд▓рд┐рдВрдЧ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЖрдиреБрд╡рдВрд╢рд┐рдХ рд╕реНрдерд╛рди (рдПрд╕рдПрдирдкреА) рдкрд░ рдбреЗрдЯрд╛ рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЖрд░ рдФрд░ рдПрдбрдмреНрд▓реНрдпреВрдХреЗ рдХреА рдорджрдж рд╕реЗ, рдореИрдВ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рддреЗрдЬ рдХрд░рддреЗ рд╣реБрдП, рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдл рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рдореЗрд░реА рдХреБрдЫ рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЖрдЦрд┐рд░ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдЫ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред

рдбреЗрдЯрд╛


рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдЖрдиреБрд╡рдВрд╢рд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗрдВрджреНрд░ рдиреЗ рд╣рдореЗрдВ рдЯреАрдПрд╕рд╡реА рдбреЗрдЯрд╛ рдХреЗ 25 рдЯреАрдмреА рдкреНрд░рджрд╛рди рдХрд┐рдП рд╣реИрдВред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ Gzip рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкреАрдбрд╝рд┐рдд 5 рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд▓рдЧрднрдЧ 240 рдЪрд╛рд░-рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдлрд╛рдЗрд▓реЗрдВ рдереАрдВред рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдПрдХ рдПрд╕рдПрдирдкреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рдерд╛ред рдХреБрд▓ рдореЗрдВ, ~ 2.5 рдорд┐рд▓рд┐рдпрди рдПрд╕рдПрдирдкреА рдФрд░ ~ 60 рд╣рдЬрд╛рд░ рд▓реЛрдЧреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдПрд╕рдПрдирдкреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрдИ рдХреЙрд▓рдо рдереЗ, рдЬрд┐рдирдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреИрд╕реЗ рдХрд┐ рд░реАрдбрд┐рдВрдЧ рдЗрдВрдЯреЗрдВрд╕рд┐рдЯреА, рд╡рд┐рднрд┐рдиреНрди рдПрдкрд▓реНрд╕ рдХреА рдЖрд╡реГрддреНрддрд┐, рдЖрджрд┐ред рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 30 рд╕реНрддрдВрдн рдереЗред

рд▓рдХреНрд╖реНрдп


рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо SNP рдХреЗ рдЖрдзрд╛рд░ рдкрд░ SNP рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдФрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗ ред рдпрд╣реА рд╣реИ, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдПрд╕рдПрдирдкреА рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореБрдЭреЗ рдпрд╣ рд╕реАрдЦрдирд╛ рдерд╛ рдХрд┐ 2.5 рдорд┐рд▓рд┐рдпрди рдПрд╕рдПрдирдкреА рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдХреИрд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рддреЗрдЬрд╝ рдФрд░ рд╕рд╕реНрддрд╛ред

рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ


рдореИрдВ рдПрдХ рдЙрдкрдпреБрдХреНрдд рдХреНрд▓рд┐рдЪ рдХрд╛ рдЙрджреНрдзрд░рдг рджреВрдВрдЧрд╛:

рдореИрдВ рдПрдХ рд╣рдЬрд╝рд╛рд░ рдмрд╛рд░ рдЕрд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рд╣рдЬрд╝рд╛рд░ рддрд░реАрдХреЗ рдЦреЛрдЬреЗ, рдЬреЛ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкрд╛рд░реНрд╕ рди рдХрд░реЗрдВред

рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рдПрдХ рд╕рдордп рдореЗрдВ 25 рдЯреАрдмреА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╕рд╕реНрддрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рд╡реЗрдВрдбрд░рдмрд┐рд▓реНрдЯ рдпреВрдирд┐рд╡рд░реНрд╕рд┐рдЯреА рдореЗрдВ "рдПрдбрд╡рд╛рдВрд╕реНрдб рдмрд┐рдЧ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЗрдердбреНрд╕" рд╡рд┐рд╖рдп рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрдХреАрди рдерд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЯреЛрдкреА рдереАред рд╢рд╛рдпрдж рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рдЗрд╡ рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рдпрд╛ рджреЛ рдШрдВрдЯреЗ рдХрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдбреЗрдЯрд╛ AWS S3 рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдереЗрдирд╛ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдЖрдкрдХреЛ S3 рдбреЗрдЯрд╛ рдореЗрдВ Hive SQL рдХреНрд╡реЗрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рдЗрд╡-рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ / рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЗрд╡рд▓ рдЙрд╕ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдк рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред

рдПрдереЗрдирд╛ рдХреЛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдФрд░ рдЙрд╕рдХрд╛ рдкреНрд░рд╛рд░реВрдк рджрд┐рдЦрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдХреБрдЫ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП:

select * from intensityData limit 10; 

рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ред рд╣реЛ рдЧрдпрд╛ред

рдЬрдм рддрдХ рд╣рдордиреЗ рдХрд╛рдо рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА ...

рдореБрдЭреЗ рдореЙрдбрд▓ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдПрд╕рдПрдирдкреА рдЬрд╛рдирдХрд╛рд░реА рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдПрдХ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдИ:

 select * from intensityData where snp = 'rs123456'; 

... рдФрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ред рдЖрда рдорд┐рдирдЯ рдФрд░ рдЕрдиреБрд░реЛрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЗ 4 рд╕реЗ рдЕрдзрд┐рдХ рдЯреАрдмреА рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛ред рдПрдереЗрдирд╛ $ 5 рдкреНрд░рддрд┐ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдкрд░ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреА рд░рд╛рд╢рд┐ рдХреЗ рд▓рд┐рдП рд╢реБрд▓реНрдХ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдПрдХрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ $ 20 рдФрд░ рдЖрда рдорд┐рдирдЯ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рд▓рд╛рдЧрдд рдереАред рд╕рднреА рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЙрдбрд▓ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, 38 рд╕рд╛рд▓ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдФрд░ $ 50 рдорд┐рд▓рд┐рдпрди рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╣рдореЗрдВ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред

Parquet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ ...


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рдЕрдкрдиреА Parquet рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдЧрдарди рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╕рднреА TSV рдХреЛ Parquet рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдХреЗ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рд╡реЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реНрддрдВрдн рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдореЗрдореЛрд░реА / рдбрд┐рд╕реНрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдкрд╛рда рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЬрд┐рд╕рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рдХреЗ рддрддреНрд╡ рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдЖрд╡рд╢реНрдпрдХ рдХреЙрд▓рдо рдкрдврд╝реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реЗрдгреА рдХреЛ рдПрдХ рдХреЙрд▓рдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рди рд╕реНрддрдВрдн рд╢реНрд░реЗрдгреА рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрдкрд╛рд░реНрдХ рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрдХреИрди рдХрд░рдирд╛ред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ TSVs рдХреЛ Parquet рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг AWS Glue рдХрд╛рд░реНрдп рдЪрд▓рд╛рдпрд╛ рдФрд░ рдирдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдереЗрдирд╛ рдореЗрдВ рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ред рдЗрд╕рдореЗрдВ рд▓рдЧрднрдЧ 5 рдШрдВрдЯреЗ рд▓рдЧреЗред рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдЕрдиреБрд░реЛрдз рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛, рддреЛ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд╕рдордп рдФрд░ рдереЛрдбрд╝рд╛ рдХрдо рдкреИрд╕рд╛ рд▓рдЧрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдкрд╛рд░реНрдХ, рдХрд╛рд░реНрдп рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдмрд╕ рдПрдХ рдЯреАрдПрд╕рд╡реА-рдЪрдВрдХ рдХреЛ рдЕрдирдкреИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░реНрдХрд┐рдЯ-рдЪрдВрдХ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрдВрдХ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рдкреВрд░реНрдг рд░рд┐рдХреЙрд░реНрдб рдереЗ, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдПрд╕рдПрдирдкреА рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЧрдП рдереЗ, рдЗрд╕рд▓рд┐рдП рд╕реНрдкрд╛рд░реНрдХ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЦреЛрд▓рдирд╛ рдкрдбрд╝рд╛ред

рдЙрддреНрд╕реБрдХрддрд╛рд╡рд╢, Parquet рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рдФрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд) рдХрдВрдкреНрд░реЗрд╢рди рдкреНрд░рдХрд╛рд░ - snappy - splitable рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрдХ рдкреВрд░реЗ 3.5 рдЬреАрдмреА рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред


рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ


рдореИрдВрдиреЗ рдЬреЛ рд╕реАрдЦрд╛ рд╣реИ : рдЫрдВрдЯрд╛рдИ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЕрдм рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ред рдореБрдЭреЗ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рдерд╛ рдХрд┐ рдбреЗрдЯрд╛ рдПрд╕рдПрдирдкреА рдХреЙрд▓рдо рджреНрд╡рд╛рд░рд╛ рдЫрд╛рдБрдЯрд╛ рдЬрд╛рдП, рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВред рдлрд┐рд░ рдХрдИ рдПрд╕рдПрдирдкреА рдХреЛ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдЪрдВрдХ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдлрд┐рд░ рдкреИрд░рд╛рдХрд┐рдЯ рд╕реНрдорд╛рд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди "рдХреЗрд╡рд▓ рддрднреА рдЦреБрд▓реЗрдЧрд╛ рдЬрдм рдореВрд▓реНрдп рд╕реАрдорд╛ рдореЗрдВ рд╣реЛрдЧрд╛" рдЕрдкрдиреЗ рд╕рднреА рдорд╣рд┐рдорд╛ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдмрд┐рдЦрд░реА рд╣реБрдИ рдЕрд░рдмреЛрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЫрд╛рдВрдЯрдирд╛ рдПрдХ рдХрдард┐рди рдХрд╛рдо рд╕рд╛рдмрд┐рдд рд╣реБрдЖ рд╣реИред


AWS рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ "рдореИрдВ рдПрдХ рдЕрдиреБрдкрд╕реНрдерд┐рдд рджрд┐рдорд╛рдЧ рд╡рд╛рд▓рд╛ рдЫрд╛рддреНрд░ рд╣реВрдБ" рдХреЗ рдХрд╛рд░рдг рдкреИрд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдЬрдм рдореИрдВрдиреЗ рдЕрдореЗрдЬрд╝реЕрди рдЧреНрд▓реВ рдкрд░ рдЫрдВрдЯрдиреА рд╢реБрд░реВ рдХреА, рддреЛ рдпрд╣ 2 рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ред

рд╡рд┐рднрд╛рдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рд╕реНрдкрд╛рд░реНрдХ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рд╕рдВрддреБрд▓рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдлрд┐рд░ рдЧреБрдгрд╕реВрддреНрд░реЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ред рдЙрдирдореЗрдВ рд╕реЗ 23 рд╣реИрдВ (рдФрд░ рдХреБрдЫ рдФрд░, рджрд┐рдП рдЧрдП рдорд╛рдЗрдЯреЛрдХреЙрдиреНрдбреНрд░рд┐рдпрд▓ рдбреАрдПрдирдП рдФрд░ рдЕрдирдореИрдкреНрдб рдХреНрд╖реЗрддреНрд░)ред
рдпрд╣ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдЫреЛрдЯреЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк Glue рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдкрд╛рд░реНрдХ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ partition_by = "chr" рд▓рд╛рдЗрди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рд▓реНрдЯреА рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЬреАрдиреЛрдо рдореЗрдВ рдХрдИ рдЯреБрдХрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХреНрд░реЛрдореЛрд╕реЛрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдХреНрд░реЛрдореЛрд╕реЛрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХреА рдПрдХ рдЕрд▓рдЧ рд░рд╛рд╢рд┐ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдкрд╛рд░реНрдХ рдиреЗ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рдиреЛрдбреНрд╕ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рдереЗ рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдереЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрд╛рд░реНрдп рдкреВрд░реНрдг рд╣реЛ рдЪреБрдХреЗ рдереЗред рд▓реЗрдХрд┐рди рдЬрдм рдПрдХ рдПрд╕рдПрдирдкреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдЕрд╕рдВрддреБрд▓рди рдиреЗ рдлрд┐рд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХреАрдВред рдмрдбрд╝реЗ рдЧреБрдгрд╕реВрддреНрд░реЛрдВ (рдЬрд╣рд╛рдБ рд╣рдо рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдкрд░ рдПрд╕рдПрдирдкреА рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдореЗрдВ рд▓рдЧрднрдЧ 10 рдЧреБрдирд╛ рдХреА рдХрдореА рдЖрдИ рд╣реИред рдмрд╣реБрдд рдХреБрдЫ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВред

рдФрд░ рдЕрдЧрд░ рдЖрдк рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рднреА рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ?


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рдХрднреА рднреА 2.5 рдорд┐рд▓рд┐рдпрди рд╡рд┐рднрд╛рдЬрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВред

рдореИрдВрдиреЗ рдЯрд╣рд▓рдиреЗ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рд╣рд░ рдПрд╕рдПрдирдкреА рдХрд╛ рд╡рд┐рднрд╛рдЬрди рдХрд┐рдпрд╛ред рдпрд╣ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХреЗ рд╡рд┐рднрд╛рдЬрди рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИред рдмрд╛рдб рдП рдПрди рдЖрдИрдбрд┐рдпрд╛ рдерд╛ ред рдореИрдВрдиреЗ рдЧреНрд▓реВ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдпрд╛ рдФрд░ рдирд┐рд░реНрджреЛрд╖ partition_by = 'snp' рдЬреЛрдбрд╝ partition_by = 'snp' ред рдЯрд╛рд╕реНрдХ рд╢реБрд░реВ рд╣реБрдЖ рдФрд░ рдЪрд▓рдиреЗ рд▓рдЧрд╛ред рдПрдХ рджрд┐рди рдмрд╛рдж, рдореИрдВрдиреЗ рдЬрд╛рдБрдЪ рдХреА рдФрд░ рджреЗрдЦрд╛ рдХрд┐ S3 рдореЗрдВ рдЕрдм рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдорд╛рд░ рджрд┐рдпрд╛ред рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЧреНрд▓реВ S3 рдореЗрдВ рдПрдХ рдЫрд┐рдкреА рдЬрдЧрд╣ рдкрд░ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдлрд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рдерд╛, рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдлрд╛рдЗрд▓реЗрдВ, рд╢рд╛рдпрдж рдХреБрдЫ рд▓рд╛рдЦреЛрдВред рдирддреАрдЬрддрди, рдореЗрд░реА рдЧрд▓рддреА рдХреА рдХреАрдордд рдПрдХ рд╣рдЬрд╛рд░ рдбреЙрд▓рд░ рд╕реЗ рдЕрдзрд┐рдХ рдереА рдФрд░ рдореЗрд░реЗ рдЧреБрд░реБ рдХреЛ рдЦреБрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рд╡рд┐рднрд╛рдЬрди + рдЫрдБрдЯрд╛рдИ


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рд╕реНрдкрд╛рд░реНрдХ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЕрднреА рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЕрдВрддрд┐рдо рдкреНрд░рдпрд╛рд╕ рдпрд╣ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЧреБрдгрд╕реВрддреНрд░реЛрдВ рдХрд╛ рд╡рд┐рднрд╛рдЬрди рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдЧрддрд┐ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдПрд╕рдПрдирдкреА рдбреЗрдЯрд╛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рдХрдИ Parquet рд╡рд┐рдЦрдВрдбреВ рдХреЗ рднреАрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд╛рд╢, рд╡рд┐рднрд╛рдЬрди рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдЫрд╛рдВрдЯрдирд╛ рднреА рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд╕рд╛рдмрд┐рдд рд╣реЛрддрд╛ред рдирддреАрдЬрддрди, рдореИрдВрдиреЗ рдПрдХ рдХрд╕реНрдЯрдо рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП EMR рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрда рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЗрдВрд╕реНрдЯреЗрдВрд╕ (C5.4xl) рдФрд░ рд╕реНрдкрд╛рд░реНрдХрд▓рд┐рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ...

 # 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') ) 

... рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрд╛рд░реНрдп рдЕрднреА рднреА рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛ред рдореИрдВрдиреЗ рд╣рд░ рддрд░рд╣ рд╕реЗ рдЯреНрдпреВрди рдХрд┐рдпрд╛: рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрдХ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА, рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рдиреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдкреНрд░рд╕рд╛рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдпрд╣ рдЖрдзрд╛ рдЙрдкрд╛рдп рдирд┐рдХрд▓рд╛, рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд▓рд╛рдХрд╛рд░ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд▓рдЧреЗ, рдЬрдм рддрдХ рдХрд┐ рд╕рдм рдХреБрдЫ рдмрдВрдж рдирд╣реАрдВ рд╣реБрдЖред


рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рдЖрд╡рд┐рд╖реНрдХрд╛рд░рд╢реАрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реВрдБ


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рдХрднреА-рдХрднреА рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдПрд╕рдПрдирдкреА рдХрд╛ рдПрдХ рд╕реНрдерд┐рддрд┐ рдореВрд▓реНрдп рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЧреБрдгрд╕реВрддреНрд░ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд рдЖрдзрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдФрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЧреБрдгрд╕реВрддреНрд░ рдХреЗ рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрджреЛрдВ 1 - 2000, 2001 - 4000, рдЖрджрд┐ред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдПрд╕рдПрдирдкреА рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЧреБрдгрд╕реВрддреНрд░реЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЖрдХрд╛рд░ рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛрдЧрд╛ред



рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ (рд░реИрдВрдХ) рдХреЗ рдкрджреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдкрд╣рд▓реЗ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВрдиреЗ рдЕрджреНрд╡рд┐рддреАрдп рдПрд╕рдПрдирдкреА, рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЧреБрдгрд╕реВрддреНрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ред рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдЧреБрдгрд╕реВрддреНрд░ рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдФрд░ рдПрд╕рдПрдирдкреА рдХреЛ рдПрдХ рджрд┐рдП рдЧрдП рдЖрдХрд╛рд░ рдХреЗ рд╕рдореВрд╣реЛрдВ (рдмрд┐рди) рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ред 1000 рдПрд╕рдПрдирдкреА рдкреНрд░рддреНрдпреЗрдХ рдХрд╣реЛред рдЗрд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рд╕рдореВрд╣-рдЧреБрдгрд╕реВрддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдПрд╕рдПрдирдкреА рд╕рдВрдмрдВрдз рджрд┐рдпрд╛ред

рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ 75 рдПрд╕рдПрдирдкреА рдкрд░ рд╕рдореВрд╣ (рдмрд┐рди) рдмрдирд╛рдП, рдореИрдВ рдиреАрдЪреЗ рдХрд╛рд░рдг рдмрддрд╛рдКрдВрдЧрд╛ред

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

рдкрд╣рд▓реЗ рд╕реНрдкрд╛рд░реНрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рд╕реНрдкрд╛рд░реНрдХ рдПрдХреАрдХрд░рдг рддреЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд╛рдЬрди рдЕрднреА рднреА рдорд╣рдВрдЧрд╛ рд╣реИред

рдореИрдВ рд╕реНрдкрд╛рд░реНрдХ рдореЗрдВ рдЗрд╕ рдЫреЛрдЯреЗ (2.5 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЛрдВ) рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕реЗ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд░рд╣рд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП 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() рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╕реНрдкрд╛рд░реНрдХ рдХреЛ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрд╕реЗ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЛ рдПрдХ рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рдбреЗрдЯрд╛ рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╕реНрдкрд╛рд░реНрдХ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмреНрд░реЗрдХ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИред

рдФрд░ рдлрд┐рд░ рд╕реЗ, рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рд╣реБрдЖ: рдХрд╛рд░реНрдпреЛрдВ рдиреЗ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рд╡рд┐рд▓рдп рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░, рд╡рд┐рднрд╛рдЬрди рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд┐рд╖реНрдкрд╛рджрдХреЛрдВ рдХреА рддрд░рд╣, рд╡реЗ рдЕрд╕рдлрд▓ рд╣реЛрдиреЗ рд▓рдЧреЗред

AWK рдЬреЛрдбрд╝реЗрдВ


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рдЬрдм рдореВрд▓ рдмрд╛рддреЗрдВ рдЖрдкрдХреЛ рд╕рд┐рдЦрд╛рддреА рд╣реИрдВ рддреЛ рдиреАрдВрдж рдирд╣реАрдВ рдЖрддреАред 1980 рдХреЗ рджрд╢рдХ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдиреЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред

рдЗрд╕ рдмрд┐рдВрджреБ рддрдХ, рд╕реНрдкрд╛рд░реНрдХ рдХреЗ рд╕рд╛рде рдореЗрд░реА рд╕рднреА рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рднреНрд░рдо рдерд╛ред рд╢рд╛рдпрдж рдкреВрд░реНрд╡-рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХрдЪреНрдЪреЗ рдкрд╛рда рдбреЗрдЯрд╛ рдХреЛ рдЧреБрдгрд╕реВрддреНрд░ рдХреЙрд▓рдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрдкрд╛рд░реНрдХ рдХреЛ "рдкреВрд░реНрд╡-рд╡рд┐рднрд╛рдЬрд┐рдд" рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореИрдВрдиреЗ рд╕реНрддрдВрдн рдорд╛рдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рддреЛрдбрд╝рд╛ рдЬрд╛рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХрдСрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдЦреЛрдЬ рдХреА рдФрд░ рдРрд╕рд╛ рд╢рд╛рдирджрд╛рд░ рдЙрддреНрддрд░ рдорд┐рд▓рд╛ ред AWK рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд▓рд┐рдЦрдХрд░ рдХреЙрд▓рдо рдорд╛рдиреЛрдВ рдореЗрдВ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреАред рдореИрдВрдиреЗ рдкреИрдХ рдХрд┐рдП рдЧрдП TSV рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛, рдлрд┐рд░ рдЗрд╕реЗ рдЧрдЬрд╝рд┐рдк рд╕реЗ рдкреИрдХ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ awk рд▓рд┐рдП рднреЗрдЬ рджрд┐рдпрд╛ред

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

рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛!

рдХреЛрд░ рдлрд┐рд▓рд┐рдВрдЧ


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : gnu parallel рдПрдХ рдЬрд╛рджреБрдИ рдЪреАрдЬ рд╣реИ, рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреБрджрд╛рдИ рдзреАрдореА рдереА, рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА (рдФрд░ рдорд╣рдВрдЧреА) EC2 рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП htop рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рдХреЛрд░ рдФрд░ рд▓рдЧрднрдЧ 200 рдПрдордмреА рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреИрд╕реЗ рди рдЦреЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдХрд╛рдо рдХреЛ рдХреИрд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреБрд╕реНрддрдХ рдореЗрдВ рдЬреЗрд░реЛрди рдЬреЗрдВрд╕реЗрдВрд╕ рдХреЗ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдбреЗрдЯрд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ , рдореБрдЭреЗ рд╕рдорд╛рдирд╛рдВрддрд░рдХрд░рдг рдкрд░ рдПрдХ рдЕрдзреНрдпрд╛рдп рдорд┐рд▓рд╛ред рдЗрд╕рд╕реЗ рдореИрдВрдиреЗ gnu parallel рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛, рдпреВрдирд┐рдХреНрд╕ рдкрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд▓рдЪреАрд▓рд╛ рддрд░реАрдХрд╛ред


рдЬрдм рдореИрдВрдиреЗ рдПрдХ рдирдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд╛рдЬрди рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдбрд╝рдЪрди рдереА - рдбрд┐рд╕реНрдХ рдореЗрдВ S3 рдСрдмреНрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдмрд╣реБрдд рддреЗрдЬрд╝ рдирд╣реАрдВ рдерд╛ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд╣реАрдВ рдерд╛ред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛:

  1. рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдореЗрдВ рд╕реАрдзреЗ рдПрд╕ 3-рдбрд╛рдЙрдирд▓реЛрдб рдХрджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдбрд┐рд╕реНрдХ рдкрд░ рдордзреНрдпрд╡рд░реНрддреА рднрдВрдбрд╛рд░рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЙрд╕рд╕реЗ рднреА рдЫреЛрдЯреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдкрд░ рд╕рд╕реНрддрд╛ рднрдВрдбрд╛рд░рдгред
  2. aws configure set default.s3.max_concurrent_requests 50 рдХрдорд╛рдВрдб рдХрдорд╛рдВрдб aws configure set default.s3.max_concurrent_requests 50 рдиреЗ рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рд╣реИ рдЬреЛ AWS CLI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 10 рд╣реИрдВ)ред
  3. рдореИрдВрдиреЗ рдирд╛рдо рдХреЗ рдЕрдХреНрд╖рд░ n рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд EC2 рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдПрди-рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╢рдХреНрддрд┐ рдХрд╛ рдиреБрдХрд╕рд╛рди рдбрд╛рдЙрдирд▓реЛрдб рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╕реЗ рдСрдлрд╕реЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ c5n.4xl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
  4. рдореИрдВрдиреЗ gzip рдХреЛ pigz рдмрджрд▓ рджрд┐рдпрд╛, рдпрд╣ рдПрдХ gzip рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдХреЗ pigz рдХреЛ pigz рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдВрдд рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕рд╕реЗ рд╕рдмрд╕реЗ рдХрдо рдорджрдж рдорд┐рд▓реА)ред

 # 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-рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдкреИрдХреЗрдЬ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред


рдЗрд╕ рдЯреНрд╡реАрдЯ рдореЗрдВ 'рдЯреАрдПрд╕рд╡реА' рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реЛрдирд╛ рдерд╛ред рдЕрдлрд╕реЛрд╕ред

рдкреБрди: рдкрд╛рд░реНрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рд╕реНрдкрд╛рд░реНрдХ рдЕрд╕рдореНрдкреАрдбрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдм рдбреЗрдЯрд╛ S3 рдореЗрдВ рдПрдХ рдЕрдирдкреИрдХреНрдб (рдкрдврд╝реЗрдВ, рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП) рдФрд░ рдЕрд░реНрдз-рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдерд╛, рдФрд░ рдореИрдВ рдлрд┐рд░ рд╕реЗ рд╕реНрдкрд╛рд░реНрдХ рдкрд░ рд▓реМрдЯ рд╕рдХрддрд╛ рдерд╛ред рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдореБрдЭреЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рдерд╛: рдореИрдВ рдлрд┐рд░ рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рд╛! рд╕реНрдкрд╛рд░реНрдХ рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдерд╛ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рднрд╛рдЬрди рдХреИрд╕реЗ рд╣реБрдЖред рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛, рддрдм рднреА рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рднрд╛рдЬрди (95 рд╣рдЬрд╛рд░) рдереЗ, рдФрд░ рдЬрдм рдореИрдВрдиреЗ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╕рдВрдЧрдд рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдХрдо coalesce , рддреЛ рдЗрд╕рдиреЗ рдореЗрд░реЗ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛ред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЦреЛрдЬ рдХреЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рд╕реНрдкрд╛рд░реНрдХ рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрд╛, рдФрд░ рдореЗрд░реА рд╡рд┐рднрд╛рдЬрди Parquet рдлрд╛рдЗрд▓реЗрдВ рдмрд╣реБрдд рдЫреЛрдЯреА рдирд╣реАрдВ рдереАрдВ (~ 200 Kb)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЗрдЯрд╛ рд╡рд╣ рдерд╛ рдЬрд╣рд╛рдБ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред


рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдФрд░ рдЕрд▓рдЧ, рдЕрджреНрднреБрдд!

рд╕реНрдерд╛рдиреАрдп рд╕реНрдкрд╛рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рд╕рд░рд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕реНрдкрд╛рд░реНрдХ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрд░рд┐ рд╣реИред

рд╕реНрдорд╛рд░реНрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ, рдореИрдВ рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореИрдВрдиреЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрдкрд╛рд░реНрдХ рд╕рд░реНрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░ рдкрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХреА, рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реНрдкрд╛рд░реНрдХ рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рдХреЛ Parquet рд╕рдореВрд╣реЛрдВ (рдмрд┐рди) рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рднрдВрдбрд╛рд░ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рд╕рднреА рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╡рд┐рднрд╛рдЬрди рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╛рд░реНрдХрд▓рд┐рдпрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

 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 рд╕реЗрдХрдВрдб рд▓рдЧреЗред рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЧрддрд┐ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдо рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╕реНрдкрд╛рд░реНрдХ рд╣рдореЗрд╢рд╛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛, рддрдм рднреА рдЬрдм рдореИрдВрдиреЗ 15 рд╕реЗ рдХрдо рд╡рдЬрди рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП 50 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреАред

AWK рдкрд░ рд▓реМрдЯреЗрдВ


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : AWK рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпрд╛рдБ рдмрд╣реБрдд рдХреБрд╢рд▓ рд╣реИрдВред

рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ рдХрд┐ рдореИрдВ рдПрдХ рдЙрдЪреНрдЪ рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐ рдмреНрд░реВрд╕ рдмрд╛рд░реНрдиреЗрдЯ рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ AWK рдЧрд╛рдЗрдб рдореЗрдВ, рдореИрдВрдиреЗ " рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ " рдирд╛рдордХ рдПрдХ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ AWK рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд░реЛрдорди рдЪреЗрд▓рд┐рдкрд╛рдХрд╛ рдиреЗ рдпрд╛рдж рдХрд┐рдпрд╛ рдХрд┐ "рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ" рд╢рдмреНрдж "рдХреА-рд╡реИрд▓реНрдпреВ рдкреЗрдпрд░" рд╢рдмреНрдж рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдкреБрд░рд╛рдирд╛ рд╣реИред рдпрджрд┐ рдЖрдк Google Ngram рдореЗрдВ рдХреА-рд╡реИрд▓реНрдпреВ рдЦреЛрдЬрддреЗ рд╣реИрдВ , рддреЛ рднреА рдЖрдкрдХреЛ рдпрд╣ рд╢рдмреНрдж рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпрд╛рдБ рдорд┐рд▓реЗрдВрдЧреА ! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реА рдЕрдХреНрд╕рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣реИрд╢рдореИрдк рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдПрд╕рдПрдирдкреА рдХреЛ рдмрд┐рди рдЯреЗрдмрд▓ рдФрд░ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдкрд╛рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рд▓рд┐рдП, AWK рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ BEGIN рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдореБрдЦреНрдп рдирд┐рдХрд╛рдп рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 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 рд╕рдореВрд╣ (рдмрд┐рди) рд╕реЗ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛, рдкрд╣рд▓реЗ рд╕реНрддрдВрдн (SNP рдирд╛рдо) рдХреЛ bin рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рджреВрд╕рд░реЗ рдорд╛рди (рд╕рдореВрд╣) рдХреЛ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ред рдлрд┐рд░, рдмреНрд▓реЙрдХ { } , рдЬрд┐рд╕реЗ рдореБрдЦреНрдп рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрди рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЗрд╕рдХреЗ рд╕рдореВрд╣ (рдмрд┐рди) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ: ..._bin_"bin[$1]"_...

batch_num рдФрд░ chunk_id рдкрд╛рдЗрдк рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдереЗ, рдЬреЛ рдХрд┐ рд░реЗрд╕ рд╕реНрдЯреЗрдЯ рд╕реЗ рдмрдЪрд╛ рдерд╛, рдФрд░ parallel рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдХреЛ рдЕрдкрдиреА рдЕрдиреВрдареА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред

рдЪреВрдВрдХрд┐ рдореИрдВрдиреЗ AWK рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рдж рдЫреЛрдбрд╝реЗ рдЧрдП рдЧреБрдгрд╕реВрддреНрд░реЛрдВ рдкрд░ рд╕рднреА рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдмрд┐рдЦреЗрд░ рджрд┐рдпрд╛ рдерд╛, рдЕрдм рдореИрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдЧреБрдгрд╕реВрддреНрд░ рдкрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддрд╛ рдерд╛ рдФрд░ 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/* 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рджреЛ рдЦрдВрдб parallel ред

рдкрд╣рд▓рд╛ рдЦрдВрдб рд╡рд╛рдВрдЫрд┐рдд рдЧреБрдгрд╕реВрддреНрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реА рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдореВрд╣реЛрдВ (рдмрд┐рди) рдореЗрдВ рдмрд┐рдЦреЗрд░рддрд╛ рд╣реИред рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдИ рдзрд╛рд░рд╛рдПрдБ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ AWK рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, chr_10_bin_52_batch_2_aa.csv ред рдирддреАрдЬрддрди, рдбрд┐рд╕реНрдХ рдкрд░ рдХрдИ рдЫреЛрдЯреА рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдИрдмреАрдПрд╕ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ)ред

рджреВрд╕рд░реЗ parallel рдЦрдВрдб рд╕реЗ рдкрд╛рдЗрдк рд▓рд╛рдЗрди рд╕рдореВрд╣реЛрдВ (рдмрд┐рди) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддреА рд╣реИ рдФрд░ cat рд╕рд╛рде рдЖрдо рд╕реАрдПрд╕рд╡реА рдореЗрдВ рдЙрдирдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рднреЗрдЬрддреА рд╣реИред

рдЖрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд╛рд░рдг?


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рдЖрдк рдПрдХ рдЖрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ stdin рдФрд░ stdout рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЖрдк рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: ...cat chunked/*_bin_{}_*.csv | ./upload_as_rds.R... ...cat chunked/*_bin_{}_*.csv | ./upload_as_rds.R... рдпрд╣ рд╕рднреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдореВрд╣ рдлрд╝рд╛рдЗрд▓реЛрдВ (рдмрд┐рди) рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдиреАрдЪреЗ рдХреА рдЖрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд░рддрд╛ рд╣реИред {} рдПрдХ рд╡рд┐рд╢реЗрд╖ parallel рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕реАрдзреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдореЗрдВ рд╣реА рдбрд╛рд▓рддреА рд╣реИред {#} рд╡рд┐рдХрд▓реНрдк рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдереНрд░реЗрдб рдЖрдИрдбреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ {%} рдиреМрдХрд░реА рд╕реНрд▓реЙрдЯ рд╕рдВрдЦреНрдпрд╛ (рдмрд╛рд░-рдмрд╛рд░, рд▓реЗрдХрд┐рди рдХрднреА рднреА рдПрдХ рд╕рд╛рде рдирд╣реАрдВ {%} рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ред

 #!/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 file("stdin") рдЪрд░ рдХреЛ readr::read_csv , рддреЛ R-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдлреНрд░реЗрдо рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕реАрдзреЗ .rds рдлрд╝рд╛рдЗрд▓ рдореЗрдВ .rds рд░реВрдк рдореЗрдВ S3 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

RDS рд╕реНрддрдВрдн рднрдВрдбрд╛рд░рдг рдХреЗ рддрд╛рдордЭрд╛рдо рдХреЗ рдмрд┐рдирд╛, рд▓рдХрдбрд╝реА рдХреА рдЫрдд рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд░рд╣ рд╣реИред

рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ S3 рдореЗрдВ рдкрдбрд╝реА рд╣реБрдИ .rds рдлрд╝рд╛рдЗрд▓реЛрдВ .rds рдПрдХ .rds рдорд┐рд▓рд╛, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдХреБрд╢рд▓ рд╕рдВрдкреАрдбрд╝рди рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред

рдмреНрд░реЗрдХ рдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдкрд░ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЖрд░ рдкрд░ рдЯреБрдХрдбрд╝реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИрдВред рдПрдХ рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреЗ рдЧреБрдгрд╕реВрддреНрд░ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдп рдХреЛ C5n.4xl рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓рдЧрднрдЧ рджреЛ рдШрдВрдЯреЗ рдореЗрдВ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

S3 рдХреА рд╕реАрдорд╛рдПрдБ


рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реАрдЦрд╛ : рдкрде рдХреЗ рд╕реНрдорд╛рд░реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, S3 рдХрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЪрд┐рдВрддрд╛ рдереА рдХрд┐ рдЕрдЧрд░ S3 рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЧрдИ рдмрд╣реБрдд рд╕рд╛рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЛ рд╕рд╛рд░реНрдердХ рдмрдирд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди S3 рдЙрдирдХреЗ рд▓рд┐рдП рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛?


S3 рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рд╕рд┐рд░реНрдл рд╕реБрдВрджрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреНрд░рддреАрдХ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реИ /ред S3 FAQ рдкреГрд╖реНрда рд╕реЗред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ S3 рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрд╢ рдЯреЗрдмрд▓ рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВред рдПрдХ рдмрд╛рд▓реНрдЯреА рдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВред

Amazon, , ┬л-----┬╗ . : get-, . , 20 . bin-. , , (, , ). .

?


: тАФ .

: ┬л ?┬╗ ( gzip CSV- 7 ) . , R Parquet ( Arrow) Spark. R, , , .


: , .

, .
EC2 , ( , Spark ). , , AWS- 10 .

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 

, , , 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]> 

purrr .

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

, . Bash- 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 .

- . , . API . .rds Parquet-, , . R-.

, , get_snp . pkgdown , .




: , !

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 , , .

, prev_snp_results snps_in_bin . SNP (bin), , . SNP (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 ;
  • Parquet- ;
  • Spark ;
  • 2,5 ;
  • , Spark;
  • ;
  • Spark , ;
  • , , - 1980-;
  • gnu parallel тАФ , ;
  • Spark ;
  • Spark ;
  • AWK ;
  • stdin stdout R-, ;
  • S3 ;
  • тАФ ;
  • , ;
  • API ;
  • , !

Source: https://habr.com/ru/post/hi456392/


All Articles