問題タブ [polybase]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pandas - Parquet エラーからのポリベース: Java.lang.Double をキャストできません
Polybase 経由で Azure Data Warehouse を読み込んで、Azure Blob にある Parquet ファイルを読み込んでいます。
まず、SQL で外部テーブルを作成して Parquet ファイルを参照し、次に CTAS で読み込みました。SQL で使用するデータ型に関係なく、この型キャスト エラーが発生します。DECIMAL、NUMERIC、FLOAT を試しました。ただし、VARCHAR のロードは正常に機能します。
df.to_parquet
を使用して Python Pandas データフレームから作成された Parquet ファイルがどのように作成されたかに関係があると思われますpyarrow
。ソースコードを掘り下げて実験してみると、Arrow (Parquet の前のステップ) にあるときのデータ型 data は Double であることがわかります。多分それが理由ですか?
また、ファイル作成時の圧縮形式は Gzip と Snappy の両方を試し、SQL 外部テーブルの作成時はサイコロなしで試しました。
これから発狂。何か案は?
再現する手順
環境:
パイソン:
Azure の手順:
- Parquet ファイルを Azure Blob にアップロードしました
- Azure Data Warehouse Gen2 を使用、サイズ: DW400c
- ドキュメントとチュートリアルに従って、DATABASE SCOPED CREDENTIAL 、EXTERNAL DATA SOURCE、および EXTERNAL FILE FORMAT を作成しました
SQL コード:
そして、ここにエラーがあります:
編集:同じエラーfastparquet
の代わりに
使用してみました。pyarrow