Tôi có tệp nhật ký trong HDFS, các giá trị được phân tách bằng dấu phẩy. Ví dụ:Tải trọng trong bảng được phân đoạn
2012-10-11 12:00,opened_browser,userid111,deviceid222
Bây giờ tôi muốn tải tập tin này để Hive bảng trong đó có cột "dấu thời gian", "hành động" và phân chia bởi "userid", "deviceid". Làm thế nào tôi có thể yêu cầu Hive lấy 2 cột cuối cùng trong tệp nhật ký làm phân vùng cho bảng? Tất cả các ví dụ e.g. "hive> LOAD DATA INPATH '/user/myname/kv2.txt' OVERWRITE INTO TABLE invites PARTITION (ds='2008-08-15');"
yêu cầu định nghĩa phân vùng trong tập lệnh, nhưng tôi muốn phân vùng được thiết lập tự động từ tệp HDFS.
Một giải pháp là tạo bảng không phân đoạn trung gian với tất cả 4 cột, điền nó từ tệp và sau đó tạo INSERT into first_table PARTITION (userid,deviceid) select from intermediate_table timestamp,action,userid,deviceid;
nhưng đó là nhiệm vụ bổ sung và chúng tôi sẽ có 2 bảng rất giống nhau. bảng bên ngoài là trung gian.
Cảm ơn, Denny. Đó là cách tôi đã giải quyết vấn đề này - sử dụng bảng bên ngoài trỏ đến tệp thô và sau đó dữ liệu từ nó được chèn vào bảng được phân đoạn với các phân vùng đã chọn. Đây là giải pháp đơn giản duy nhất của trường hợp này. –
Thứ thú vị - vui vì nó đã hoạt động, eh ?! –
Vâng, đó là một phép thuật :) Tôi đã giải quyết nó cùng một lúc khi bạn thêm bình luận của bạn :) Có lẽ bạn có thể giúp tôi với một vấn đề khác? http://stackoverflow.com/questions/13240409/hadoop-eof-exception-after-map-step –