Gzip アーカイブから Hive テーブルにデータをロードしようとしていますが、gzip ファイルには次のような拡張子があります。
apache_log.gz_localhost
これらのファイルが配置されている HDFS ディレクトリの場所を指定すると、Hive は GZip 圧縮ファイルを認識しません。.gz 拡張子のファイルを検索しているためです。
データを Hive にロードするときにファイル タイプを定義することはできますか? (PSEUDO) のようなもの:
input.format=gzip を設定します。
LOAD DATA INPATH /tmp/logs/ INTO TABLE apache_logs;
テーブル作成のための私のSQLは次のとおりです。
CREATE EXTERNAL TABLE access_logs (
`ip` STRING,
`time_local` STRING,
`method` STRING,
`request_uri` STRING,
`protocol` STRING,
`status` STRING,
`bytes_sent` STRING,
`referer` STRING,
`useragent` STRING,
`bytes_received` STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'input.regex'='^(\\S+) \\S+ \\S+ \\[([^\\[]+)\\] "(\\w+) (\\S+) (\\S+)" (\\d+) (\\d+|\-) "([^"]+)" "([^"]+)".* (\\d+)'
)
STORED AS TEXTFILE
LOCATION '/tmp/logs/';