🌟
Mac に parquet cli をインストールして Apache Parquet の中身を確認する
IVRyのバックエンドエンジニアの島筒です。
最近、社内でdata rakeの構築が進んでいます。
data rakeはBigQueryで構築されており、IVRyのデータの一部が保存されているAWSのRDSからは、日次でファイルにエクスポートしS3を経由してBigQueryへ連携しています。
その際、作成されたファイルの拡張子がparquetで、そのファイルの中身を確認するツールとして、parquet cliをインストールしたのですが、インストール時に少し手間取ったので記録しておきます。
インストールの説明の前にparquet(正式名称Apache Parquet、フランス語で、パルケと読み、英語読みにするとパーケット)を超大雑把に説明すると、データを圧縮して保存してくれるファイルフォーマットで、data rakeの構築に使われることが多いです。
詳細については、こちらを読んでください。
インストール for Mac
インストール手順の紹介はMacのみとなります。
brew install parquet-cli
parquet-tools
をインストールする記事を見かけますが、以下の通り、deprecatedされています。
$ brew install parquet-tools
Error: parquet-tools has been disabled because it is deprecated upstream!
使い方
help
まずhelpを見ます
$ parquet --help
Usage: parquet [options] [command] [command options]
Options:
-v, --verbose, --debug
Print extra debugging information
Commands:
help
Retrieves details on the functions of other commands
meta
Print a Parquet file's metadata
pages
Print page summaries for a Parquet file
dictionary
Print dictionaries for a Parquet column
check-stats
Check Parquet files for corrupt page and column stats (PARQUET-251)
schema
Print the Avro schema for a file
csv-schema
Build a schema from a CSV data sample
convert-csv
Create a file from CSV data
convert
Create a Parquet file from a data file
to-avro
Create an Avro file from a data file
cat
Print the first N records from a file
head
Print the first N records from a file
column-index
Prints the column and offset indexes of a Parquet file
column-size
Print the column sizes of a parquet file
prune
Prune column(s) in a Parquet file and save it to a new file. The columns left are not changed.
trans-compression
Translate the compression from one to another (It doesn't support bloom filter feature yet).
masking
Replace columns with masked values and write to a new Parquet file
footer
Print the Parquet file footer in json format
Examples:
# print information for meta
parquet help meta
See 'parquet help <command>' for more information on a specific command.
スキーマ定義の確認
$ parquet schema part-00000-xxxxxxxx-1234-xxxx-5678-xxxx0000xxxx0000-c000.gz.parquet
{
"type" : "record",
"name" : "users",
"fields" : [ {
"name" : "id",
"type" : [ "null", "long" ],
"default" : null
}, {
"name" : "name",
"type" : [ "null", "string" ],
"default" : null
},
...省略
データの確認
head or catですが、catは全件出力なので、確実に中身の件数を理解している場合のみにしましょう。
先頭5行を表示
$ parquet head part-00000-xxxxxxxx-1234-xxxx-5678-xxxx0000xxxx0000-c000.gz.parquet
{"id": 1, "name": "Jonhy ...},
{"id": 2, "name": "Jonhy ...},
先頭10行を表示(helpに書いてないから困る)
$ parquet head -n 10 part-00000-xxxxxxxx-1234-xxxx-5678-xxxx0000xxxx0000-c000.gz.parquet
最後に会社紹介
壁のある会社です、遊びに来てください。
アドカレの1日目に、社長奥西によるIVRyの1年の軌跡が紹介されているので、読んでみてください!
絶賛、エンジニア募集中です。
Discussion