Bảng tạo HBase với Java Ví dụ về API & Shell

⚡ Tóm tắt thông minh

HBase lưu trữ dữ liệu trong các bảng, và bạn có thể tạo và quản lý các bảng đó theo hai cách: thông qua... Java API với HTableDescripthoặc sử dụng HBaseAdmin, hoặc trực tiếp trong trình shell của HBase bằng lệnh create.

  • Java API: Tạo bảng trong mã bằng HTableDescripthoặc, HColumnDescripthoặc, và HBaseAdmin.
  • 🐚 Tạo Shell: Lệnh `create` tạo một bảng từ tên và một hoặc nhiều nhóm cột.
  • 🧬 Các nhóm cột: Mỗi bảng cần ít nhất một nhóm cột, được định nghĩa khi bảng được tạo.
  • 🔧 Thay đổi bảng: Lệnh alter thêm các nhóm cột, thiết lập phiên bản hoặc thay đổi các thuộc tính phạm vi bảng.
  • 🗑️ Vòng đời của bảng: Hãy vô hiệu hóa bảng trước khi bạn chỉnh sửa hoặc xóa nó, sau đó kích hoạt lại bảng để tiếp tục ghi dữ liệu.
  • 🤖 Hỗ trợ AI: Các trợ lý AI soạn thảo, tạo, chỉnh sửa và xóa các lệnh cũng như xem xét thiết kế của nhóm cột.

Tạo bảng HBase với Java Ví dụ về API và lệnh shell

Cách tạo bảng trong HBase với Java API

Trong HBase, có hai cách để tạo bảng: thông qua... Java API và thông qua giao diện dòng lệnh HBase. Phần này bao gồm Java API này cho phép ứng dụng tạo bảng và tải dữ liệu theo chương trình như một phần của tác vụ lớn hơn.

Thông qua Java API, chúng ta có thể tạo bảng trong HBase và cũng có thể tải dữ liệu vào bảng bằng cách sử dụng Java Lập trình. Hai việc chúng ta thiết lập ở đây là:

  • Thiết lập kết nối với HBase thông qua Java API.
  • Sử dụng Eclipse cho Java Lập trình, gỡ lỗi và kiểm thử.

Sau đây là các bước để tạo bảng trong HBase thông qua Java API.

Bước 1) Tạo một Java Dự án ở Eclipse

Ở bước này, chúng ta sẽ tạo một Java dự án trong Eclipse Đối với kết nối HBase, được đặt tên là “HbaseConnection”.

The New Java Hộp thoại dự án bên dưới hiển thị quá trình thiết lập dự án “HbaseConnection”:

Eclipse Mới Java Hộp thoại dự án tạo dự án HbaseConnection với một JavaMôi trường SE-1.7

Nếu chúng ta quan sát ảnh chụp màn hình phía trên:

  • Hãy nhập tên dự án vào ô này. Trong trường hợp của chúng tôi, tên dự án là “HbaseConnection”.
  • Chọn ô này để lưu vị trí mặc định. Ở đây, đường dẫn là /home/hduser/work/HbaseConnection.
  • Chọn hộp cho Java môi trường ở đây. Trong trường hợp này JavaSE-1.7 là Java ấn bản.
  • Hãy chọn tùy chọn nơi bạn muốn lưu tập tin. Trong trường hợp này, chúng tôi đã chọn tùy chọn thứ hai, “Tạo một thư mục riêng cho các tệp nguồn và tệp lớp học”.
  • Nhấp vào nút Hoàn tất, thao tác này sẽ tạo dự án “HbaseConnection”. Eclipse và mở ra Eclipse trang chủ.

Bước 2) Cấu hình đường dẫn xây dựng trong Eclipse

trên Eclipse Trang chủ, hãy làm theo các bước sau để mở cấu hình đường dẫn xây dựng:

Right click on project -> Select Build Path -> Configure build path

Ảnh chụp màn hình bên dưới hiển thị menu chuột phải được sử dụng để mở cấu hình đường dẫn xây dựng:

Eclipse Trong menu chuột phải của dự án, chọn Build Path rồi Configure Build Path.

Từ ảnh chụp màn hình phía trên:

  • Nhấp chuột phải vào một dự án.
  • Chọn Đường dẫn xây dựng.
  • Chọn Cấu hình Đường dẫn Xây dựng.

Sau khi nhấp vào Configure Build Path, một cửa sổ khác sẽ mở ra, như trong ảnh chụp màn hình bên dưới. Tab Libraries là nơi các tệp JAR của HBase và Hadoop được thêm vào dự án:

Eclipse Java Tab Thư viện Đường dẫn Xây dựng cho phép thêm các tệp JAR HBase và Hadoop bên ngoài.

Trong bước này, chúng ta thêm các tệp JAR HBase có liên quan vào... Java dự án như trong ảnh chụp màn hình.

  • Các file JAR quan trọng cần thêm vào: hbase-0.94.8.jar và hadoop-core-1.1.2.jar.
  • Hãy vào mục Thư viện.
  • Nhấn vào tùy chọn Thêm JAR bên ngoài.
  • Chọn các tệp JAR quan trọng cần thiết.
  • Nhấn nút Hoàn tất để thêm các tệp này vào thư mục “src” của dự án. Java Dự án thuộc lĩnh vực Thư viện.

Sau khi thêm các file JAR, chúng sẽ xuất hiện trong thư mục “src” của dự án như hình bên dưới:

Eclipse Trình khám phá dự án hiển thị các tệp JAR HBase và Hadoop đã được thêm vào trong thư mục nguồn dự án.

Tất cả các tập tin JAR thuộc dự án hiện đã sẵn sàng để sử dụng với hệ sinh thái Hadoop.

Bước 3) Thiết lập kết nối HBase

Ở bước này, sử dụng HBaseConnection.java, kết nối HBase được thiết lập thông qua Java mã hóa.

trên Eclipse menu trên cùng, thực hiện một Java Chương trình như hiển thị bên dưới: Chạy -> Chạy với quyền -> Java Ứng dụng. Menu bên dưới hiển thị chương trình đang được khởi chạy:

Eclipse Chạy như Java Menu ứng dụng khởi chạy chương trình HBaseConnection

  • Chọn Chạy.
  • Chọn Chạy với quyền Java Ứng dụng.
  • Đoạn mã này thiết lập kết nối với HBase thông qua Java API.
  • Sau khi chạy đoạn mã này, bảng “guru99” được tạo trong HBase với hai nhóm cột có tên là “education” và “projects”. Hiện tại, chỉ có lược đồ trống được tạo trong HBase.

Đoạn mã trích dẫn bên dưới làm nổi bật HTable.Descripthoặc các lệnh addFamily để xây dựng lược đồ bảng:

Java mã sử dụng HTableDescripthoặc sử dụng addFamily để định nghĩa bảng guru99 với các nhóm cột giáo dục và dự án.

Từ ảnh chụp màn hình phía trên, chúng ta đang thực hiện các chức năng sau:

  • Sử dụng HTableDescriptHoặc, chúng ta có thể tạo bảng “guru99” trong HBase.
  • Sử dụng phương thức addFamily, chúng ta thêm “education” và “projects” làm các nhóm cột vào bảng “guru99”.

Đoạn mã dưới đây sẽ thiết lập kết nối với HBase và tạo bảng “guru99” với hai nhóm cột. Hãy đặt đoạn mã này vào bên trong tệp HBaseConnection.java:

// Place this code inside Hbase connection
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
Import org.apache.hadoop.hbase.client.HBaseAdmin;

public class HBaseConnection
{
    public static void main(String[] args) throws IOException
    {
	HBaseConfigurationhc = new HBaseConfiguration(new Configuration());
	HTableDescriptorht = new HTableDescriptor("guru99");

	ht.addFamily( new HColumnDescriptor("education"));
	ht.addFamily( new HColumnDescriptor("projects"));
	System.out.println( "connecting" );
	HBaseAdminhba = new HBaseAdmin( hc );

	System.out.println( "Creating Table" );
	hba.createTable( ht );
	System.out.println("Done......");
    }
}

Đây là đoạn mã bắt buộc bạn phải đặt vào tệp HBaseConnection.java trước khi chạy. Java chương trình.

Sau khi chạy chương trình này, nó sẽ thiết lập kết nối với HBase và tạo ra một bảng với các tên cột.

  • Tên bảng là “guru99”.
  • Các nhóm cột là "giáo dục" và "dự án".

Bước 4) Kiểm tra bảng đã tạo trong HBase

Chúng ta có thể kiểm tra xem bảng “guru99” có được tạo với hai nhóm cột trong HBase hay không bằng cách sử dụng chế độ shell của HBase với lệnh “list”. Lệnh “list” cung cấp thông tin về tất cả các bảng đã được tạo trong HBase.

Chạy lệnh list trong HBase shell sẽ xác nhận bảng mới, như hình bên dưới:

Kết quả đầu ra của lệnh list trong HBase cho thấy bảng guru99 đã được tạo.

  • Code Kiểm tra trong trình shell HBase bằng cách thực thi lệnh “list”.
  • Nếu ta chạy lệnh “list”, nó sẽ hiển thị các bảng đã được tạo trong HBase. Trong trường hợp này, ta có thể thấy bảng “guru99” đã được tạo.

Bảng tạo HBase với Shell

Bên cạnh những Java Thông qua API, bạn có thể tạo bảng trực tiếp từ giao diện dòng lệnh HBase, đây là cách nhanh nhất để thiết lập bảng cho các thử nghiệm nhanh. Cú pháp để tạo bảng trong HBase bằng giao diện dòng lệnh là:

Syntax: create <tablename>, <columnfamilyname>

Thí dụ:-

hbase(main):001:0> create 'education' ,'guru99'
0 rows(s) in 0.312 seconds
=>Hbase::Table – education

Ví dụ trên giải thích cách tạo bảng trong HBase với tên được chỉ định theo thông số kỹ thuật của từng nhóm cột. Ngoài ra, chúng ta cũng có thể truyền một số thuộc tính phạm vi bảng vào đó.

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}

Khối {NAME=>'Edu', VERSIONS=>…} ở đây thiết lập một nhóm cột có tên là “Edu” và số lượng phiên bản ô mà nhóm đó lưu giữ. Con số lớn chỉ mang tính minh họa; trên thực tế, VERSIONS là một giá trị nhỏ như 3 hoặc 5.

Liệt kê, mô tả và xác minh các bảng HBase

Việc tạo bảng chỉ là bước đầu tiên trong việc quản lý bảng trong HBase. Sau khi bảng “guru99” tồn tại, một vài lệnh tổng quát cho phép bạn kiểm tra và xác nhận trạng thái của bảng trước khi đọc, ghi hoặc sửa đổi dữ liệu. Bạn có thể chạy tất cả các lệnh này từ... Vỏ HBase.

Lệnh list trả về tất cả các bảng người dùng trong HBase:

hbase> list

Lệnh describe hiển thị cấu trúc của bảng, bao gồm các nhóm cột và trạng thái hiện tại của bảng:

hbase> describe 'guru99'

Lệnh `exists` kiểm tra xem bảng có tồn tại hay không, và `is_enabled` cho biết bảng đó có cho phép ghi dữ liệu hay không.

hbase> exists 'guru99'
hbase> is_enabled 'guru99'

Các kiểm tra chỉ đọc này có thể chạy an toàn bất cứ lúc nào. Chúng là cách nhanh nhất để xác nhận rằng bảng đã được tạo đúng cách và để xem xét các nhóm cột của bảng trước khi tải dữ liệu.

Thay đổi bảng HBase

Lược đồ bảng HBase không được cố định sau khi tạo. Lệnh `alter` thay đổi các nhóm cột và thuộc tính phạm vi bảng mà không tạo lại bảng. Tùy thuộc vào phiên bản HBase của bạn, bạn có thể cần phải vô hiệu hóa bảng trước, sau đó chạy lệnh `alter` và kích hoạt lại bảng.

Để thêm một nhóm cột mới vào bảng “guru99”:

hbase> alter 'guru99', {NAME => 'contact'}

Để thiết lập số lượng phiên bản mà một nhóm cột lưu giữ:

hbase> alter 'guru99', NAME => 'education', VERSIONS => 5

Để xóa một nhóm cột khỏi bảng:

hbase> alter 'guru99', {NAME => 'contact', METHOD => 'delete'}

Bạn cũng có thể thay đổi các thuộc tính phạm vi bảng. Ví dụ, đánh dấu bảng là chỉ đọc hoặc đặt kích thước tệp vùng tối đa là 128 MB:

hbase> alter 'guru99', READONLY
hbase> alter 'guru99', MAX_FILESIZE => '134217728'

Vì lệnh `alter` viết lại lược đồ, hãy lên kế hoạch thay đổi cẩn thận trên bảng sản xuất và xác nhận kết quả sau đó bằng lệnh `describe`.

Vô hiệu hóa, Kích hoạt và Xóa bảng HBase

Để xóa một bảng hoặc áp dụng một số thay đổi nhất định, HBase yêu cầu bạn phải vô hiệu hóa bảng đó trước. Việc vô hiệu hóa sẽ đưa bảng vào trạng thái ngoại tuyến, do đó không có máy khách nào có thể đọc hoặc ghi vào bảng đó, điều này giúp đảm bảo an toàn cho các thay đổi cấu trúc.

Vô hiệu hóa một bảng và kiểm tra trạng thái của nó bằng hàm is_disabled:

hbase> disable 'guru99'
hbase> is_disabled 'guru99'

Kích hoạt lại bảng để tiếp tục đọc và ghi:

hbase> enable 'guru99'

Bảng phải được vô hiệu hóa trước khi có thể bị xóa. Xóaping Thao tác này xóa vĩnh viễn bảng và tất cả dữ liệu trong đó, vì vậy hãy sử dụng cẩn thận:

hbase> disable 'guru99'
hbase> drop 'guru99'

Để xóa nhiều bảng cùng một lúc, lệnh `drop_all` sẽ xóa tất cả các bảng có tên khớp với biểu thức chính quy. Các lệnh `create`, `alter`, `disable`, `enable` và `drop` cùng nhau bao trùm toàn bộ vòng đời của một hệ thống. xử lý dữ liệu trong các bảng HBase.

Câu Hỏi Thường Gặp

Tốt nhất nên giữ số lượng nhóm cột ở mức thấp, lý tưởng là từ một đến ba. HBase sẽ ghi và nén tất cả các nhóm cột của một vùng lại với nhau, vì vậy các nhóm cột dư thừa sẽ phân tán dữ liệu trên nhiều tệp hơn và làm chậm quá trình đọc và ghi. Nên nhóm các cột liên quan vào một nhóm duy nhất khi có thể.

Không. Tại thời điểm tạo, bạn chỉ định nghĩa các nhóm cột. Các định danh cột là động và có thể được thêm vào bất kỳ hàng nào khi bạn ghi dữ liệu. Thiết kế linh hoạt về lược đồ này cho phép mỗi hàng chứa các cột khác nhau mà không cần sửa đổi bảng trước.

Sử dụng lệnh truncate 'guru99', lệnh này sẽ vô hiệu hóa bảng, xóa bảng và tạo lại bảng với cùng các nhóm cột. Cấu trúc bảng vẫn được giữ nguyên trong khi mọi hàng đều bị xóa. Cách này nhanh hơn và gọn gàng hơn so với việc xóa từng hàng một.

Ví dụ này sử dụng HBaseAdmin và HTable.DescriptHoặc cả hai đều đã bị loại bỏ kể từ HBase 1.0. Mã hiện đại lấy đối tượng Admin từ Connection thông qua ConnectionFactory và xây dựng lược đồ bằng Table.DescripthoặcBuilder và ColumnFamilyDescriptorBuilder. Logic tạo bảng vẫn giữ nguyên.

Tham số VERSIONS thiết lập số lượng phiên bản có dấu thời gian của mỗi ô mà một nhóm cột lưu giữ. Mặc định là 1. Việc yêu cầu các phiên bản cũ hơn bằng lệnh get hoặc scan sẽ trả về chúng cho đến khi số lượng phiên bản được lưu giữ bị vượt quá, sau đó quá trình nén sẽ loại bỏ các ô cũ nhất.

HBase phù hợp với các tập dữ liệu lớn, thưa thớt cần tốc độ đọc và ghi ngẫu nhiên nhanh trên nền tảng Hadoop và HDFS. Các trường hợp sử dụng điển hình bao gồm dữ liệu chuỗi thời gian, hệ thống nhắn tin và phân tích thời gian thực, nơi các bảng có thể lên đến hàng tỷ hàng trên nhiều nút.

Các trợ lý lập trình AI và các mô hình ngôn ngữ lớn soạn thảo, tạo, sửa đổi và xóa các lệnh từ các lời nhắc bằng ngôn ngữ thông thường, giải thích thiết kế nhóm cột và gắn cờ các thao tác rủi ro như xóa.ping một bảng. Máy học cũng có thể phân tích các mẫu truy cập để đề xuất bố cục hàng-khóa và nhóm tốt hơn, mặc dù kỹ sư nên xác minh từng đề xuất.

Vâng. Trợ lý GitHub có thể tạo ra các lệnh shell HBase và Java Mã máy khách dùng để tạo, chỉnh sửa và xóa.ping Bảng dữ liệu được tạo từ một bình luận ngắn. RevHãy xem kết quả đầu ra để đảm bảo tên bảng, nhóm cột và API quản trị hiện tại là chính xác trước khi chạy.

Tóm tắt bài viết này với: