根據 Amazon EMR 日誌檔建立和查詢基本資料表 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

根據 Amazon EMR 日誌檔建立和查詢基本資料表

以下範例會根據儲存至 s3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6/elasticmapreduce/ 的日誌檔建立基本資料表 myemrlogs。以下範例中使用的 Amazon S3 位置反映 Amazon Web Services 帳戶建立之EMR叢集的預設日誌位置模式 123456789012 在地區 us-west-2。 如果您使用自訂位置,則模式為 s3://amzn-s3-demo-bucket/ClusterID.

如需建立分割的資料表以盡可能提升查詢效能並減少資料傳輸的詳細資訊,請參閱 根據 Amazon EMR 日誌建立和查詢分區資料表

CREATE EXTERNAL TABLE `myemrlogs`( `data` string COMMENT 'from deserializer') ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://aws-logs-123456789012-us-west-2/elasticmapreduce/j-2ABCDE34F5GH6'

查詢範例

以下範例查詢可在上一個範例建立的 myemrlogs 資料表上執行。

範例 — 查詢ERROR、、、WARN或發生次數的步驟記錄 INFO EXCEPTION FATAL DEBUG
SELECT data, "$PATH" FROM "default"."myemrlogs" WHERE regexp_like("$PATH",'s-86URH188Z6B1') AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
範例 — 查詢特定執行個體記錄檔,例如:、、、、或 ERROR WARN INFO EXCEPTION FATAL DEBUG
SELECT "data", "$PATH" AS filepath FROM "default"."myemrlogs" WHERE regexp_like("$PATH",'i-00b3c0a839ece0a9c') AND regexp_like("$PATH",'state') AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
範例 -查詢普雷斯托應用程序日誌 ERROR WARNINFO,EXCEPTION,FATAL,或 DEBUG
SELECT "data", "$PATH" AS filepath FROM "default"."myemrlogs" WHERE regexp_like("$PATH",'presto') AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
範例 — 查詢ERROR、WARN、、或的名稱節點應用程式記錄檔 INFO EXCEPTION FATAL DEBUG
SELECT "data", "$PATH" AS filepath FROM "default"."myemrlogs" WHERE regexp_like("$PATH",'namenode') AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;
範例 — 按日期和小時查詢ERROR、、WARNINFOEXCEPTION、FATAL或的所有記錄檔 DEBUG
SELECT distinct("$PATH") AS filepath FROM "default"."myemrlogs" WHERE regexp_like("$PATH",'2019-07-23-10') AND regexp_like(data, 'ERROR|WARN|INFO|EXCEPTION|FATAL|DEBUG') limit 100;