次のように構成されたデータセットがあります。
[TIMESTAMP] FIXED POSITION DATA STRING
[TIMESTAMP] FIXED POSITION DATA STRING
[TIMESTAMP] tag1=9324, tag2=19, tag3=55, etc
[TIMESTAMP] FIXED POSITION DATA STRING
これらの 2 種類のレコードは、一定の間隔で要約データを含むタグベースのフィールドと混在しています。これらのデータ ファイルは、1 つのファイルで最大 1,000 万行になる場合があります。さらに、固定位置の行の中には数キロバイトの長さになるものもあり、それらを処理するときにメモリ管理の問題が発生します。
最初からファイルを処理する必要があります。サマリー エントリにヒットしたときにすべてのエントリをグループ化し、これらのサマリー エントリを固定位置エントリの特定のフィールドの集計とともに記録する必要があります。具体的には、固定位置セグメントの 1 つの特定の部分に 4 桁のステータス コードが含まれています。そのデータを要約レコードに追加する必要があります-最後の要約レコード以降に表示された各要約コードの出現回数。集計データとタイムスタンプのフィールドを含む各サマリー エントリは、CSV の行に変換する必要があります。
現在、これを行うためだけに ruby コード/標準ライブラリを使用しています。小さいデータ セットの場合は問題ありませんが、大きいデータ セットの場合はパフォーマンスが急速に低下します。これは、一般的な ETL タイプの問題のように思えます。私は後でこのデータに対してより複雑なタイプの操作を行う予定であり、より複雑なレポートを作成するためにこれらのログ ファイルを常に再確認しているようです。
既存の ETL ツールまたはライブラリ (pref. Ruby) はありますか?
- 高パフォーマンスの混合 (正規表現/固定位置) 抽出をうまく実行します。
- 習得が容易です。
- メモリ管理を抽象化します。
- 無料/オープン ソースまたは低コスト (200 ドル未満) の商用です。
この問題に取り組むために何を使用するかについて、別の推奨事項を受け入れます。生の標準ライブラリの Ruby コードよりも優れたソリューションを探しているだけです。