さてどうしましょう? twitterからのお題です。
—
【問題】つよつよITエンジニアさんに質問です
100GBのCSVファイルを10GB以下(少ないほど良い)のメモリ使用で効率よく(イケてる感じで)ソートする方法教えて下さい。
出典: https://twitter.com/ebiebi_pg/status/...
[対象者]
非エンジニアの方だと流石に厳しいですが、
駆け出しエンジニアレベルや
学生さんで卒論や修論でプログラムの実験を行う予定の人くらいのレベル
だと理解できるんじゃないかと思います
[サンプルファイル]
https://drive.google.com/drive/folder...
[100GBのテスト用CSVファイルの作成手順]
作成予定
[このほかに失敗する可能性のある要素を潰していく、について]
・「2列目にデータが入っていなかった場合」.. sortは途中でエラーにならずに実行できます。
・「CSVファイルが一部壊れていた場合」.. CSVファイル自体は単純な構造なので修復は難しいですが、これを気にせずにソートしても途中でエラーになることはありません。
・「CSVファイルの改行コード」 .. 特に問題なくできます。
・「ひらがなカタカナ漢字が含まれていた場合」 .. ソートのルールが不明確なので、ヒアリングで事前にはっきりさせるなど確認が必要
[実行環境]
Windows10 WSL1 ubuntu 20.04, GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
VSCodeのターミナル画面
0:00 初めに、お題の説明
1:15 この動画の流れ
1:55 このタスクで一番重要なこと
4:18 マージソートの紹介(どういう方法で取り組むべきか)
7:17 [デモ0] “sort”コマンドの使い方の確認
9:55 [デモ0]「失敗する可能性のある要素」をつぶす
10:46 [デモ0] ここまでの感触
11:28 [デモ1] 小規模なファイルで確認
14:15 [デモ2] 中規模なファイルで確認(時間計測(time))
16:58 [デモ2] 中規模なファイルで確認(nohup, kill)
19:31 [デモ3] 100GBのファイルで確認
20:37 [デモ3] 一時ファイルの確認
21:17 [デモ3] 出力ファイルのチェック
21:41 まとめ