【python】pandasで列指向ストレージparquetを使う方法!エラー「ImportError: Unable to find a usable engine; tried using: ‘pyarrow’, ‘fastparquet’.」が出たときの対処方法

pandasで、以下のようにparquet形式のデータを読み込もうとしました。

#read_parquetでparquet形式のデータを読み込もうとする
book_train = pd.read_parquet("ファイルパス")

その結果、以下のようなエラーが出て失敗しました。

「ImportError: Unable to find a usable engine; tried using: 'pyarrow', 'fastparquet'.」

この記事では、上記のerror修正方法、pandasで列指向ストレージparquetを使う方法について解説します。

 

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

pandasでparquetを使えるようにする

pandasでparquetが使えるか確認する

pandasでparquetが使えるか確認します。

>>> import pandas as pd
>>> pd.show_versions()

実行結果は、以下の通りでした。

INSTALLED VERSIONS
------------------
python           : 3.7.3.final.0
fastparquet      : None
pyarrow          : None
scipy            : 1.6.0
sqlalchemy       : 1.3.16

上記の内容から、fastparquet、pyarrowがNoneになっていることがわかります。

Pandasをインストールしただけでは、parquetが使えないことがわかります。

 

parquetをインストールする

pipコマンドでparquetをインストールします。

pip install pyarrow
pip install fastparquet

 

その結果、再度pd.show_versions()を実行すると「fastparquet」「pyarrow」にバージョンがつくことがわかります。

fastparquet : 0.7.1

pyarrow : 5.0.0

 

その後、以下のコードを実行するとparquet形式のファイルを正しく読み込めるようになりました。

pd.read_parquet(“ファイルパス”)

 

めでたし、めでたし。

 

参考サイト

https://stackoverflow.com/questions/50760351/how-to-identify-pandas-backend-for-parquet

 

 

「parquet」とは

parquet(Apache Parquet)は、データ処理フレームワーク、データモデル、プログラミング言語の選択に関係なく、Hadoopエコシステムのすべてのプロジェクトで使用できる列型ストレージ形式です。

 

列型ストレージ形式について調べて見ると、「AWS 列指向ストレージ形式」には、

以下のことが書かれています。

 

Apache Parquet や ORC は、データを高速に取得できるように最適化された、AWS 分析アプリケーションで使用されている、列指向ストレージ形式です。

 

列指向ストレージ形式には以下の特性があるため、Athena での使用に適しています。

 

列のデータ型に合わせて選択された圧縮アルゴリズムによる列ごとの圧縮で、Amazon S3 のストレージ領域を節約し、クエリの処理中におけるディスク容量と I/O を削減します。

 

Parquet および ORC での述語プッシュダウンにより、Athena クエリが必要なブロックのみを取得できるようになり、クエリパフォーマンスが向上します。Athena クエリがデータから特定の列値を取得すると、データブロック述語からの統計 (最大値や最小値など) を使用して、そのブロックを読み取るかスキップするかを判断します。

 

Parquet および ORC でのデータの分割により、Athena がデータの読み取りを複数のリーダーに分割して、クエリ処理時における並列化を向上させることが可能になります。

 

出典:AWS 列指向ストレージ形式

 

簡単に言えば、機械学習のように列を指定してデータを取得するのに適したデータファイル形式と言えます。

 

列指向の反対は、行指向です。

行指向になると、Mysqlのように行を指定して取るもので、行形式のデータを取り出すのに最適化(DBのindex機能など)されています。

 

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

まとめ

以上、pandasで列指向ストレージparquetを使う方法でした。

 

入会するか悩むのは無料カウンセリング後で十分間に合います!無料カウンセリングは、スクール名のリンクから申し込みできます。

>>より詳しく5つのスクールについて知りたい方は、以下をクリック!

 

最新情報をチェックしよう!