89186


python で計算したデータを Athena 上に geometry カラムとして生成したいです  
クエリのパフォーマンスを考えると最終的に orc フォーマットにしたいんですが  
pyorc というライブラリで orc を python 上で作ろうとするとメモリが全く足りません

おそらく列指向データのため一定量レコードがたまらないと出力できないので  
本質的に必要なメモリであって最適化の余地はないのかなと思っています

なので１度 CSV として S3 にアップロードして一時テーブルとして読み込んで  
unload というクエリで orc で生成しようと考えているんですが  
athena が geometry カラムとして認識してくれるバイナリカラムをCSVでどのようにはけばいいでしょうか  
<https://docs.aws.amazon.com/ja_jp/athena/latest/ug/unload.html>

CSV でなくてもいいのでメモリを使わない行指向データで Athena の geometry カラムとして認識するバイナリ出力する方法が知りたいです


CC BY-SA 4.0
2022-06-01T11:48:45.730
89181
2022-06-01T15:09:02.230
question
aws-athena
aws athena で geometry カラムとして読み込める CSV の出力方法


CSV として保存するのであれば、バイナリ表現ではなくて well-known text (WKT)
としてシリアライズする保存する方法があります。テーブルを作成するときは `varchar` として持っておいて、クエリ時に
`ST_GeometryFromText` を使うとテキストから geometry に変換できます。WKT の中にカンマが含まれる場合があるので、CSV
とはいっても区切り文字をタブ文字にした方が便利かもしれません。

また、扱っているデータの種類によっては緯度・経度の小数ペアとしてシリアライズしたり、GeoJSON
からシリアライズする方が手っ取り早い場合もあるでしょう。前者はクエリ時に `ST_Point` で、後者はテーブル作成時に Hive JSON SerDe
で処理できます。

### 参考

  * [入力データ形式とジオメトリデータ型](https://docs.aws.amazon.com/ja_jp/athena/latest/ug/geospatial-input-data-formats-supported-geometry-types.html)
  * [Athena エンジンバージョン 2 の地理空間関数](https://docs.aws.amazon.com/ja_jp/athena/latest/ug/geospatial-functions-list-v2.html)
  * [例: 地理空間クエリ](https://docs.aws.amazon.com/ja_jp/athena/latest/ug/geospatial-example-queries.html)


CC BY-SA 4.0
2022-06-01T15:09:02.230
89186
2022-06-01T15:09:02.230
19110
89181
answer