この質問は重複しません。これは、共通の値/行セットが同じパーティションファイルに保持されていること(および複数のパーティションファイルに分散されていない)を確認する必要があるためです。
最終的に解決策を見つけるためにインターネットを検索しようとしましたが、私の要件に合った解決策を見つけることができませんでした。
問題:大容量ファイルがあり、サイズが2 GBを超える場合は、複数のファイルに分割する必要があります。これにはレコードカウントを使用する予定です。しかし、問題は、ファイルを分割するときにグループデータを分割しないでください。単一ファイルとしてアーカイブする必要があります。
前任者:
A,1,2,6/11/2018,X,Y,Z
A,2,2,6/11/2018,X,Y,B
A,3,2,6/11/2018,X,Y,Z
A,4,2,6/12/2018,X,Y,Z
B,1,2,6/11/2018,X,Y,Z
B,2,2,6/11/2018,X,Y,B
A,5,2,6/15/2018,X,C,Z
A,6,3,6/110/2018,A,Y,Z
C,3,2,6/11/2018,X,Y,Z
C,4,2,6/12/2018,X,Y,Z
C,5,2,6/15/2018,X,C,Z
D,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z
G,6,3,6/110/2018,A,Y,Z
上記の例では、私のグループキーが最初の列であるとします。したがって、ファイルを複数のファイルに分割することにした場合(各ファイルのレコード数は次のように切り捨てられます。)7最大レコード)、値が「A」のレコードを複数のファイルに分割したくありません。同様に、「B」、「C」などの記録は1つのファイルとして保存する必要があります。グループ化されたすべてのデータは同じパーティションファイルに保存する必要があります。上記の例では、合計3つのファイルが生成されます。 (ただし、同じグループデータは1つの分割ファイルに残る必要があります。)
上記の例では、次のようなサンプル出力が必要です。
ジョブ file_1
A,1,2,6/11/2018,X,Y,Z
A,2,2,6/11/2018,X,Y,B
A,3,2,6/11/2018,X,Y,Z
A,4,2,6/12/2018,X,Y,Z
A,5,2,6/15/2018,X,C,Z
A,6,3,6/110/2018,A,Y,Z
G,6,3,6/110/2018,A,Y,Z
ジョブ file_2
B,1,2,6/11/2018,X,Y,Z
B,2,2,6/11/2018,X,Y,B
C,3,2,6/11/2018,X,Y,Z
C,4,2,6/12/2018,X,Y,Z
C,5,2,6/15/2018,X,C,Z
E,6,3,6/110/2018,A,Y,Z
E,6,3,6/110/2018,A,Y,Z
ジョブ file_3
D,6,3,6/110/2018,A,Y,Z
答え1
$ awk -F, '{outfile="output."$1; print $0 > outfile}' input
$ ls
input output.A output.B output.C output.D