背景・目的
- parquetファイルと、GlueやAthenaなどで定義したスキーマにおいて、データタイプが異なるため、HIVE_BAT_DATAのエラーになる場合があります。
- スキーマをparquetで定義されているデータタイプに合わせて修正する場合、1)ファイルで定義されているデータを調べる。2)スキーマを再作成する。事が必要です。
- 1)のファイルで定義されているデータを調べる場合、parquet-toolsを使うことで内容を確認できるので使い方をメモしておく。
内容
前提
- 対象のparquetファイルはvpcflowログになります。
スキーマを確認する場合
- コマンド
parquet-tools schema ${parquetファイル}
- 結果
[21-11-25 14:01] $ parquet-tools schema 0123456789012_vpcflowlogs_ap-northeast-1_fl-xxxxxxxxxxxxxxxxxxx_20211124T0000Z_4fcc3e99.log.gz
message LogFormatSchema.LogFormatInfo {
optional int32 version;
optional binary account_id (STRING);
optional binary interface_id (STRING);
optional binary srcaddr (STRING);
optional binary dstaddr (STRING);
optional int32 srcport;
optional int32 dstport;
optional int32 protocol;
optional int64 packets;
optional int64 bytes;
optional int64 start;
optional int64 end;
optional binary action (STRING);
optional binary log_status (STRING);
}
[21-11-25 14:01] $
データを確認する場合(全件)
- コマンド
parquet-tools cat ${parquetファイル}
- 結果
- 出力量が多いので先頭30行のみ表示しています。
[21-11-25 14:09] $ parquet-tools cat 0123456789012_vpcflowlogs_ap-northeast-1_fl-xxxxxxxxxxxxxxxxxxx_20211124T0000Z_4fcc3e99.log.gz | head -30
version = 2
account_id = unknown
interface_id = eni-xxxxxxxxxx
srcaddr = -
dstaddr = -
start = 1637712005
end = 1637712056
action = -
log_status = NODATA
version = 2
account_id = unknown
interface_id = eni-xxxxxx
srcaddr = -
dstaddr = -
start = 1637712065
end = 1637712116
action = -
log_status = NODATA
version = 2
account_id = unknown
interface_id = eni-xxxxxxx
srcaddr = -
dstaddr = -
start = 1637712125
end = 1637712176
action = -
log_status = NODATA
データを確認する場合(先頭N件)
- head --records N or n Nで件数が絞り込める。自分はエラーにより実行できなかったので、後ほど確認する。
- ここでは、デフォルト5件を表示している。
parquet-tools head ${parquetファイル}
[21-11-25 14:16] $ parquet-tools head 0123456789012_vpcflowlogs_ap-northeast-1_fl-xxxxxxxxxxxxxxxxxxx_20211124T0000Z_4fcc3e99.log.gz
version = 2
account_id = unknown
interface_id = eni-XXXX
srcaddr = -
dstaddr = -
start = 1637712005
end = 1637712056
action = -
log_status = NODATA
version = 2
account_id = unknown
interface_id = eni-XXXX
srcaddr = -
dstaddr = -
start = 1637712065
end = 1637712116
action = -
log_status = NODATA
version = 2
account_id = unknown
interface_id = eni-XXXX
srcaddr = -
dstaddr = -
start = 1637712125
end = 1637712176
action = -
log_status = NODATA
version = 2
account_id = unknown
interface_id = eni-XXXX
srcaddr = -
dstaddr = -
start = 1637712245
end = 1637712296
action = -
log_status = NODATA
version = 2
account_id = unknown
interface_id = eni-XXXX
srcaddr = -
dstaddr = -
start = 1637712185
end = 1637712236
action = -
log_status = NODATA
[21-11-25 14:16] $
考察
- この他にも、meta情報や件数出力、ファイルマージなどいくつかできる模様。後ほど記載する。