現在、Hive を使用してレポートを生成する HDFS クラスターにいくつかのデータがあります。インフラストラクチャは廃止される過程にあり、データに関するレポートを生成する代替手段を考え出すタスクが残されています (タブ区切りファイルとして新しい環境にインポートしました)。
次のフィールドを持つテーブルがあるとします。
- クエリ
- IPアドレス
- ロケーションコード
Hive で実行していた元の SQL クエリは (正確ではありませんが、似たようなものでした)。
select
COUNT(DISTINCT Query, IPAddress) as c1,
LocationCode as c2,
Query as c3
from table
group by Query, LocationCode
上記のクエリの代わりとして機能する、sort、uniq、awk などの標準の UNIX/Linux ツールを使用して、最も効率的なスクリプトを誰かが提供してくれるかどうか疑問に思っていました。
スクリプトへの入力がテキスト ファイルのディレクトリであると仮定します。ディレクトリには約2000個のファイルが含まれます。各ファイルには、次の形式の任意の数のタブ区切りレコードが含まれます。
Query <TAB> LocationCode <TAB> IPAddress <NEWLINE>