Tôi thích sử dụng Apache Pig cho ingest vào HBase bởi vì nó rất đơn giản, đơn giản và linh hoạt.
Đây là tập lệnh Pig sẽ thực hiện công việc cho bạn, sau khi bạn đã tạo bảng và họ cột. Để tạo bảng và gia đình cột, bạn sẽ thực hiện:
$ hbase shell
> create 'mydata', 'mycf'
Move tập tin để HDFS:
$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
Sau đó, viết kịch bản lợn để lưu trữ với HBaseStorage (bạn có thể phải tìm kiếm lên làm thế nào để set up and run Pig):
A = LOAD 'file.txt' USING PigStorage(',') as (strdata:chararray, intdata:long);
STORE A INTO 'hbase://mydata'
USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
'mycf:intdata');
Lưu ý rằng trong kịch bản trên, chìa khóa sẽ là strdata
. Nếu bạn muốn tạo khóa của riêng mình từ một cái gì đó, hãy sử dụng câu lệnh FOREACH để tạo khóa. HBaseStorage giả định rằng điều đầu tiên trong mối quan hệ trước đó (A::strdata
trong trường hợp này) là chìa khóa.
Một số tùy chọn khác sẽ là:
- Viết một công việc Java MapReduce để làm điều tương tự như trên.
- Tương tác trực tiếp với HTable với the client và được xếp theo từng hàng. Điều này chỉ nên được thực hiện với nhiều tệp nhỏ hơn.
Đẩy dữ liệu lên bằng vỏ cơ sở bằng cách sử dụng một số loại tập lệnh (ví dụ: sed, perl, python) biến đổi các dòng csv thành các lệnh put
shell. Một lần nữa, điều này chỉ nên được thực hiện nếu số lượng bản ghi nhỏ.
$ cat /home/file.txt | transform.pl
put 'mydata', 'one', 'mycf:intdata', '1'
put 'mydata', 'two', 'mycf:intdata', '2'
put 'mydata', 'three', 'mycf:intdata', '3'
$ cat /home/file.txt | transform.pl | hbase shell
Nguồn
2011-12-27 14:42:48
nào bạn muốn có chìa khóa của bạn là gì? Bạn có đẩy cả hai vào một nhóm cột đơn lẻ hoặc hai nhóm riêng biệt? –