非常に大量のデータ(数百 GB)を計算する必要があったことはありますか?または、その内部を検索したり、その他の操作(並列化できないもの)を実行したりします。データの専門家の皆さん、私はあなたに話しかけています。 4 コア以上の CPU をお持ちの場合でも、grep、bzip2、wc、awk、sed などの適切なツールはシングルスレッドであり、1 つの CPU コアしか使用できません。 漫画のキャラクター、カートマンのセリフを言い換えると、「これらのコアをどうやって使うのか?」 Linux コマンドですべての CPU コアを使用するには、GNU Parallel コマンドを使用する必要があります。このコマンドを使用すると、すべての CPU コアが単一のマシンで魔法のようなマップ削減操作を実行できるようになります。もちろん、これには、あまり使用されない –pipes パラメーター (–spreadstdin とも呼ばれます) も必要です。こうすることで、負荷は CPU 間で均等に分散されます。 ZIP2形式 bzip2 は gzip よりも優れた圧縮ツールですが、速度が遅いです。心配しないでください。この問題を解決する方法があります。 これまでの練習: cat bigfile.bin | bzip2 --best > 圧縮ファイル.bz2 今はこんな感じです: cat bigfile.bin | parallel --pipe --recend '' -k bzip2 --best > compressedfile.bz2 特に bzip2 の場合、GNU parallel はマルチコア CPU 上で非常に高速です。気がつけば、終わっていました。 グレップ 非常に大きなテキスト ファイルがある場合は、以前に次の操作を行ったことがあるかもしれません。 grep パターン bigfile.txt 今、次のことができるようになりました: cat bigfile.txt | parallel --pipe grep 'パターン' または、次のようになります。 cat bigfile.txt | parallel --block 10M --pipe grep 'パターン' この 2 番目の使用法では、--block 10M パラメータが使用されています。これは、各コアが 1,000 万行を処理することを意味します。このパラメータを使用して、各 CPU コアで処理されるデータの行数を調整できます。 AWK 以下は、awk コマンドを使用して非常に大きなデータ ファイルを計算する例です。 一般的な使用法: cat rands20M.txt | awk '{s+=$1} END {print s}' 今はこんな感じです: cat rands20M.txt | parallel --pipe awk \'{s+=\$1} END {print s}\' | awk '{s+=$1} END {print s}' これは少し複雑です。parallel コマンドの --pipe パラメータは、cat 出力を複数のブロックに分割し、awk 呼び出しにディスパッチして、多くのサブ計算操作を形成します。これらのサブ計算は、2 番目のパイプラインを介して同じ awk コマンドにパイプされ、最終結果が出力されます。最初の awk には 3 つのバックスラッシュがあり、これは GNU parallel が awk を呼び出すために必要です。 トイレ ファイル内の行数をできるだけ早くカウントしたいですか? 従来のアプローチ: wc -l ビッグファイル.txt これで次のようになります: cat bigfile.txt | parallel --pipe wc -l | awk '{s+=$1} END {print s}' 非常に巧妙です。まず、並列コマンドを使用して、多数の wc -l 呼び出しをサブ計算に「マップ」し、最後にパイプを介して awk に送信して集計します。 翻訳 巨大なファイル内で sed コマンドを使用して多数の置換操作を実行したいですか? 従来の慣行: sed s^old^new^g bigfile.txt 次のことが可能になります: cat bigfile.txt | parallel --pipe sed s^old^new^g …そしてパイプを使用して出力を特定のファイルに保存できます。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL Community Server 5.7.16 のグリーン バージョンをインストールしてリモート ログインを実装する方法
メタ宣言注釈の手順: 1. モバイル ページと 1 対 1 で対応するすべての PC ページを分類し...
1. MySQL インストール パス D:\xxx\MYSQL\MySQL Workbench CE...
この記事は主にMybatisでの動的SQL文の解析について紹介します。この記事のサンプルコードは非常...
目次予防必要条件AWSアカウントを申請する仮想マシンの申請と有効化仮想マシンを申請するセキュリティグ...
RHEL8/CentOS8 に基づく一般的な nmcli コマンド # IP を表示する (ifco...
目次Docker-Maven-プラグインMavenプラグインの自動デプロイメント手順1. ホストマシ...
ウェブサイトの互換性のデバッグは本当に面倒です。今日のウェブサイト デザイナーは、以前よりもはるかに...
今日、プログラムが間違った時刻を挿入し、フィールドがデフォルト値 CURRENT_TIMESTAMP...
目次序文開発環境新しいプロジェクトを作成するモバイルウェブプロジェクト角度付きJSONパブリックモジ...
目次序文1. 基本データ2. 継承駆動設計3. 左右の値のエンコーディングに基づく設計4. ツリー構...
目次需要背景思考分析UI 表示始める1. 支払いコンポーネントテンプレートを作成する2. 支払いコン...
この記事は、WindowsでのMySQL 8.0.11のインストールチュートリアルを記録しています。...
目次1. 操作要素1.1. 要素コンテンツの変更1.2. innerText と innerHtml...
目次インストールコンポーネントのインポート基本的な使い方保存したマークダウンまたは HTML テキス...
目次1. 関連するbinlog設定2. binlogに関する詳細設定2.1 バイナリログモードの変更...