1
0

More than 1 year has passed since last update.

awswranglerにて pyarrow.lib.ArrowTypeError: Did not pass numpy.dtype object のエラー

Posted at

最近、業務でデータ基盤の構築をしており、その中でETL処置のためにawswranglerというライブラリを使用することがあります。
これを使うとS3 <-> pandas.DataFrameなどのやりとりが非常に簡単に行えて便利です。

ただ、そのセットアップで表題のエラーが出ることがあったので簡潔にまとめておきます。

何が起きたか?

以下のようにpandasのDataFrameをawswanglerでS3にputしようとした際にエラーが発生しました。

import awswrangler as wr

path = "s3://hoge_bucket/hoge.parquet"
wr.s3.to_parquet(
    df=df,
    path=path,
)

型の問題なことはエラーからわかりますが、dfのtypeを調べてみても間違いなく<class 'pandas.core.frame.DataFrame'>でした。

原因

どうやらライブラリのバージョンの問題のようです。

  • awswanglerが依存しているpyarrowが3系なら解決済み
  • pyarrowが2系かつnumpyが1.20.xのだと起きる

どう解決したか?

上記から、以下どちらかが必要です。
- pyarrowを3.0.0にアップグレード
- numpyを<1.20.0よりしたのバージョンにダウングレード

僕が業務でawswanglerを使用しようとしていたのはAWS MWAAにおいてだったため、numpyをダウングレードして解決しました。
※ ↓ いくつかのサービスではpyarrowが2系でないと使用できない、、、

⚠️ For platforms without PyArrow 3 support (e.g. EMR, Glue PySpark Job, MWAA):
➡️pip install pyarrow==2 awswrangler

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0