インタラクティブなハイブ セッションをセットアップし、Apache ウェブログの日付を s3 バケットから直接テーブルにロードしました。
DROP TABLE apachelog;
CREATE EXTERNAL TABLE apachelog (
host STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
referer STRING,
agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)
STORED AS TEXTFILE
LOCATION 's3n://OperationOverkill/';
その後、次のように正常に選択できます。
SELECT * FROM apachelog LIMIT 5;
しかし、カウント (または実際の map-reduce を必要とするものは何もしません:
SELECT COUNT(host) FROM apachelog;
エラーメッセージ:
Job Submission failed with exception 'java.io.IOException(cannot find dir = s3n: //OperationOverkill/access_clickkiller_12-08-08.log in pathToPartitionInfo: s3n ://OperationOverkill/)'
私はグーグルでAWSサポートフォーラムで同様の質問を見つけました が、SOからのより迅速なポインタ/ヘルプを期待しています.