質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Amazon Athena

Amazon Athenaは、標準SQLを使用してAmazon S3内のデータを直接分析することができるインタラクティブなクエリサービスです。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

Q&A

1回答

3450閲覧

AWS S3上のCSVデータから、Athena上でテーブルを作成したいが、あるエラーが解消できない

hamura

総合スコア1

Amazon Athena

Amazon Athenaは、標準SQLを使用してAmazon S3内のデータを直接分析することができるインタラクティブなクエリサービスです。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

0グッド

0クリップ

投稿2023/06/24 16:26

実現したいこと

AWS S3上にアップロードされたCSVファイルに対し、Athena上でテーブルを作成したいですが、
エラーに阻まれています。このエラーの解消方法を知りたいです。
以下詳述します。

前提

AWSにはrootアカウントでログインしています。
S3バケット上にCSVファイルがアップロードされています。
名前は「test.csv」で、内容は以下の通りです。

Name, John,25 Jane,30 Sam,35

次に、テーブル作成を試行した手順を述べます。
データベース「default」にテーブル名「test」として、上記CSVファイルをテーブル化しようと試みました。

Athenaのクエリエディタをブラウザから操作しました。
まず、クエリエディタ内の「テーブルとビュー」項目から「作成」「S3バケットデータ」を選択し、
「S3バケットデータからテーブルを作成」画面の指示に従い、必要事項を入力していきました。
結果得られたクエリは以下の通りです。

CREATE EXTERNAL TABLE IF NOT EXISTS `default`.`test` (`Name` string, `Age` 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://{バケット名}/' TBLPROPERTIES ('classification' = 'csv');

発生している問題・エラーメッセージ

上のクエリを実行すると、次のエラーが発生します。

line 1:48: mismatched input 'EXTERNAL'. Expecting: 'MATERIALIZED', 'OR', 'ROLE', 'SCHEMA', 'TABLE', 'VIEW' このクエリは、クエリで修飾されていない限り、「default」データベースに対して実行されました。エラーメッセージを フォーラム に投稿するか、クエリ ID: b73e12b2-e127-443a-8b2e-d658317e5a18 とともに カスタマーサポート にお問い合わせください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

この回答はGPT-4による自動生成回答です

このエラーは、Athenaのクエリエディタで実行しているために発生しています。Athenaではなく、AWS Glueを使用してS3バケット上のCSVファイルからテーブルを作成する必要があります。

以下の手順でAWS Glueを使用してテーブルを作成してください。

  1. AWS Management Consoleにログインし、AWS Glueサービスに移動します。
  2. 左側のメニューから「テーブル」を選択し、「テーブルの追加」をクリックします。
  3. 「データソースの選択」画面で、「S3」を選択し、CSVファイルが保存されているS3バケットのパスを入力します。
  4. 「データフォーマットの選択」画面で、「CSV」を選択し、適切なデリミタ(この場合はカンマ)を指定します。
  5. 「スキーマの定義」画面で、テーブル名(この場合は「test」)を入力し、列名とデータ型を指定します。この例では、Name列はstring型、Age列はint型です。
  6. 「テーブルの作成」画面で、データベース(この場合は「default」)を選択し、「テーブルの作成」をクリックします。

これで、AWS Glueを使用してS3バケット上のCSVファイルからテーブルが作成されます。その後、Athenaでこのテーブルをクエリすることができます。

投稿2023/06/24 16:27

teratail-ai

Powered by GPT-4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問