Tôi cố gắng để tải dữ liệu từ kho lưu trữ Gzip vào bảng Hive nhưng file gzip của tôi có phần mở rộng như ví dụ:Làm thế nào để xác định định dạng tập tin đầu vào khi tải dữ liệu vào Hive
apache_log.gz_localhost
Khi tôi chỉ định Vị trí thư mục HDFS nơi các tệp này được đặt Hive không nhận ra các tệp nén GZip vì nó đang tìm kiếm các tệp có phần mở rộng .gz.
Có thể xác định loại tệp khi tải dữ liệu vào Hive không? Một cái gì đó như (PSEUDO):
đặt input.format = gzip;
LOAD DATA INPATH/tmp/logs/INTO TABLE apache_logs;
Đây là SQL của tôi để tạo bảng:
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/';
'đặt mapred.map.output.compression.codec = org.apache.hadoop.io.compress.GZipCodec;' ở đầu tập lệnh – Singleton
Thật không may là không giúp được gì. Cảm ơn bạn – antunovic
Câu hỏi thú vị, hy vọng nó sẽ được chú ý nhiều hơn. – javadba