ユーザ用ツール

サイト用ツール


aws

aws

boto3

AWS Data Wrangler

Amazon Athena

since 2021-11-26

「Amazon Athena は、標準 SQL を使用して Amazon S3 やその他のフェデレーティッドデータソース内のデータを簡単に分析できるようにするインタラクティブなクエリサービスです。」

https://docs.aws.amazon.com/athena/latest/ug/getting-started.html

やってみる

  • s3 でバケットを作る。ここではバケット名 example-bucket とする
  • example-bucket に "温湿度" というフォルダを作る(バケット直下だとダメらしい)
  • 温湿度フォルダに "温湿度計_data.csv" をアップロードする。これは Switchbot 温湿度計からエクスポートしたファイルである。
  • example-bucket に "温湿度クエリ結果" というフォルダを作る(バケット直下だとダメらしい)

アップロードしたファイルの先頭

Date,temperature,humidity
2021-07-22 19:15,24.3,62
2021-07-22 19:26,24.6,69

Amazon Athena - クエリエディタ

  • 設定 - 管理
  • s3 バケットを選べるので example-bucket を選ぶ
  • S3 データセットを選択 - "温湿度" フォルダ(キー)を選択できる、がそのあとどこにも出てこない
  • クエリの結果の場所と暗号化 : "温湿度クエリ結果" を選択する

再びクエリエディタ

  • データソースからテーブルを作成 - S3バケットデータ
  • テーブル名 temperature_humidity
  • データベース設定は default にしておく

入力セット

s3://example-bucket/温湿度

データ形式 CSV

  • ここで Apache Web ログや JSON なども選べる

列を定義

  • Date : date
  • temperature : float
  • humidity : float
  • 一括追加で `Date date, temperature float, humidity float` のようにも書けるらしい

テーブルクエリをプレビューに下記のように出てくる

CREATE EXTERNAL TABLE IF NOT EXISTS `default`.`temperature_humidity` (
`Date` date,
`temperature` float,
`humidity` float
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = ',',
'field.delim' = ','
) LOCATION 's3://example-bucket/温湿度'
TBLPROPERTIES ('has_encrypted_data'='false');

やってみるとたしかにテーブルはできるが、プレビューすると date が空欄になる。

調べてみるとこういう話

https://qiita.com/kazurof/items/23cba632b12fd5c7140e

https://aws.amazon.com/jp/premiumsupport/knowledge-center/query-table-athena-timestamp-empty/

Date を string にしてテーブルを作り直してみた

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied

というエラーが出て、クエリーできなくなった。

とりあえずここまで

aws.txt · 最終更新: 2021/11/26 10:33 by Takuya Nishimoto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki