2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

S3アクセスポイント経由でAmazon FSx for NetApp ONTAPのデータにAthenaからクエリ実行してみた

Posted at

NetAppでSales Specialistをしている小寺です。
S3アクセスポイントをサポートしたアップデートに関わるブログも終盤です。

image.png

ローンチブログではQuickSuite、Bedrockが取り上げられていましたが、今日はONTAPのデータをS3ポイントを経由して、Athenaからクエリを実行したみたいと思います。

事前準備

(1) FSx for ONTAPからS3アクセスポイントを作成しておきます。
{A29CCF88-6243-4F4C-9709-5F5D3349826F}.png

(2) Athenaからアクセスするので、S3アクセスポイントのアクセスポリシーを指定します。
最初は権限を絞っていたのですが、Athenaからのテーブル作成時にアクセス権限エラーが出てしまい、フルを指定しています。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowAthenaFullS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<AWSアカウントID>:<ユーザ名>"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:us-east-1:<AWSアカウントID>:accesspoint/my-s3-access-point",
                "arn:aws:s3:us-east-1:<AWSアカウントID>:accesspoint/my-s3-access-point/object/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalArn": "arn:aws:iam::<AWSアカウントID>:role/AthenaQueryRole"
                }
            }
        }
    ]
}

(3) クエリ用のサンプルデータをFSx for ONTAPに格納します。

Athenaのクエリ保存設定

(1) Athenaのクエリエディタからクエリ保存先のS3を指定します。

image.png

(2) S3バケットを指定します。クエリ結果の書き込みのため、チェックボックスにチェックも入れます。

image.png

(3) クエリ設定が保存されました。
{5CA23EA0-5810-4DFD-95AC-ACA58D4BA6D4}.png

Athenaのテーブル作成

(1) クエリエディタの「テーブルとビュー」で「作成」から「S3バケットデータ」を選びます。
image.png

(2) 「S3 バケットデータからテーブルを作成」画面にて、テーブル名を入力します。
{C6D4910E-F4B4-4B6E-944E-2B027CD4A3E5}.png

データセットにS3アクセスポイントのエイリアスを入力します。

{C014652D-C088-43E2-8EE1-991623B4180D}.png

ファイル形式は「CSV」とします。
{7C0A5E98-B06F-4843-8C35-EC3D120F660A}.png

列の設定を行います。
{B9968C9D-CEEF-4750-86AD-A7E61447DA88}.png

(3) テーブル作成を行います。

CREATE EXTERNAL TABLE IF NOT EXISTS `default`.`ontap_table` (
  `No` int,
  `prefecture` string,
  `year` int,
  `population` string,
  `populationmen` int,
  `populationwomen` int
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ('field.delim' = ',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 's3://my-s3-access-poi-uxxdxoggrxtp891ngejc5zht78h64use1b-ext-s3alias/'
TBLPROPERTIES ('classification' = 'csv');

クエリを実行してみます

今回は、年代別、男女別の人口のデータです。

SELECT year, population
from ontap_table
where  year IN (1970, 1980);

image.png

ONTAPに保存したデータに対してもS3アクセスポイントを経由して、クエリを実行できるようになりました。
データをS3に移動することなく、Athenaからデータへアクセスすることができます。
ぜひ試してみてください!

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?