Przykład zapytania HBase: polecenia put(), get() i scan()

⚡ Inteligentne podsumowanie

Polecenia HBase put, get i scan to podstawowe polecenia służące do zapisywania i odczytywania danych, pozwalające na przechowywanie wartości komórki według wiersza i kolumny, pobieranie pojedynczego wiersza lub przeglądanie wielu wierszy z poziomu powłoki lub Java API.

  • ✍️. Napisz za pomocą put: Polecenie put przechowuje wartość w tabeli, wierszu, kolumnie i opcjonalnym znaczniku czasu.
  • 🔍 Przeczytaj z otrzymaniem: Polecenie get zwraca pojedynczy wiersz lub komórkę z opcjami TIMERANGE, VERSIONS i FILTERS.
  • 📜 Przeglądaj ze skanowaniem: Polecenie skanowania wyświetla wiele wierszy i wartości ich kolumn w całej tabeli.
  • Java OGIEŃ: Te same operacje są wykonywane w Java korzystając z Put, Get, Scan i klasy pomocniczej Bytes.
  • 🧬 Współrzędne: Każda wartość jest adresowana za pomocą klucza wiersza, rodziny kolumn i kwalifikatora kolumny.
  • 🤖 Asystent AI: Asystenci AI projektują, pobierają i skanują kod oraz sugerują efektywne projekty oparte na kluczach wierszowych.

Polecenia zapytań HBase put(), get() i scan() w powłoce i Java

Zapisz dane w tabeli HBase: Shell

W tych przykładach przyjęto założenie, że HBase jest zainstalowany i uruchomiony, powłoka HBase jest otwarta i tabela o nazwie guru99 już istnieje z kolumną rodziny edukacja i projekty.

Polecenie put służy do przechowywania danych w tabeli.

Syntax:  put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>

To polecenie służy do następujących celów:

  • Umieści „wartość” komórki w zdefiniowanej lub określonej tabeli, wierszu lub kolumnie.
  • Opcjonalnie będzie koordynować znacznik czasu.

Na przykład tutaj umieszczamy wartości w tabeli „guru99” w wierszu r1 i kolumnie c1:

hbase> put 'guru99', 'r1', 'c1', 'value', 10

W tabeli „guru99” umieściliśmy trzy wartości: 10, 15 i 30, jak pokazano na zrzucie ekranu poniżej.

Polecenie powłoki HBase wstawiające wartości 10, 15 i 30 do tabeli guru99

Załóżmy, że tabela „guru99” ma odwołanie do tabeli, takie jak g. Możesz również uruchomić polecenie na odwołaniu do tabeli w następujący sposób:

hbase> g.put 'guru99', 'r1', 'c1', 'value', 10

Po wpisaniu wartości do „guru99” wynik wygląda tak, jak pokazano na zrzucie ekranu powyżej.

Odczytaj dane z tabeli HBase: Shell

W tej sekcji sprawdzamy następujące elementy: Powłoka HBase:

  • Wartości wstawione do tabeli HBase „guru99”.
  • Nazwy kolumn z wartościami obecnymi w tabeli HBase guru99.

Poniżej znajduje się lista wyników skanowania zawierająca wszystkie wartości wstawione do „guru99” wraz z nazwami wierszy i kolumn:

Wynik polecenia skanowania powłoki HBase wyświetlający wartości wierszy i kolumn w tabeli guru99

Ze zrzutu ekranu powyżej możemy wywnioskować następujące informacje:

  • Jeśli uruchomimy polecenie „scan” w powłoce HBase, wyświetlone zostaną wstawione wartości w „guru99” w następujący sposób.
  • W powłoce HBase wyświetlane są wartości wstawione przez nasz kod wraz z nazwami kolumn i wierszy.
  • Tutaj możemy zobaczyć, że wstawione nazwy kolumn to „edukacja” i „projekty”.
  • Wprowadzono wartości „BigData” i „HBase Tutorials” do wymienionych kolumn.

Można również użyć polecenia get, aby odczytać dane z tabeli.

Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}

Tutaj dodatkowe parametry obejmują TIMERANGE, TIMERANGE, VERSIONS i FILTERS. Za pomocą tego polecenia można pobrać zawartość wiersza lub komórki z tabeli. Można dodać dodatkowe parametry, takie jak TIMESTAMP, TIMERANGE, VERSIONS lub FILTERS, aby pobrać zawartość konkretnego wiersza lub komórki. Poniższa tabela podsumowuje te parametry:

Parametr Cel
ZAKRES CZASU Zwraca komórki, których znacznik czasu mieści się w przedziale czasu początkowego i końcowego.
ZNAK CZASU Zwraca tylko wersję komórki zapisaną w dokładnym znaczniku czasu.
WERSJE Ustawia liczbę wersji komórki, które mają zostać zwrócone (wartość domyślna to 1).
FILTRY Stosuje filtr ograniczający liczbę zwracanych wierszy i kolumn.
KOLUMNA Ogranicza wynik do określonych rodzin kolumn lub kwalifikatorów.

Oto kilka przykładów wykonania polecenia get:

hbase> get 'guru99', 'r1', {COLUMN => 'c1'}

W przypadku tabeli „guru99” wartości wiersza r1 i kolumny c1 zostaną wyświetlone po użyciu tego polecenia, jak pokazano na zrzucie ekranu poniżej.

Polecenie powłoki HBase zwracające pojedynczy wiersz r1 z tabeli guru99

hbase> get 'guru99', 'r1'

W przypadku tabeli „guru99” wartości wiersza r1 zostaną wyświetlone za pomocą tego polecenia.

hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}

W przypadku tabeli „guru99” za pomocą tego polecenia zostaną wyświetlone wartości wiersza r1 w zakresie czasu od ts1 do ts2.

hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}

W przypadku tabeli „guru99” za pomocą tego polecenia zostaną wyświetlone wartości wiersza r1 oraz rodzin kolumn c1, c2 i c3.

Zapisz dane do tabeli HBase: API JAVA

W tym kroku zapiszemy dane do tabeli HBase „guru99”.

Najpierw musimy napisać kod do wstawiania i pobierania wartości z HBase, używając programu HBaseLoading.java. Aby utworzyć i wstawić wartości do tabeli na poziomie kolumn, należy użyć kodu pokazanego poniżej.

Zrzut ekranu poniżej pokazuje Java kod, który buduje konfigurację HBase i wstawia wartości do „guru99”:

Java kod tworzący konfigurację HBase i wstawiający wartości za pomocą interfejsu API Put

Ze zrzutu ekranu powyżej:

  • Podczas tworzenia konfiguracji HBase odnosi się ona do konfiguracji, które ustawiliśmy w plikach hbase-site.xml i hbase-default.xml podczas instalacji HBase.
  • Utworzenie tabeli „guru99” przy użyciu metody HTable.
  • Dodanie wiersza 1 do tabeli „guru99”.
  • Określ nazwy kolumn „edukacja” i „projekty” i wstaw wartości w nazwy kolumn w odpowiednim wierszu 1. Wstawione tutaj wartości to BigData i „HBaseTutorials”.

Odczytaj dane z tabeli HBase: Java API

Niezależnie od tego, jakie wartości umieściliśmy w tabeli HBase w sekcji powyżej, tutaj je pobierzemy i wyświetlimy.

Poniższy wynik konsoli pokazuje dane odczytywane z tabeli HBase „guru99”:

Java odczyt danych wyjściowych konsoli, edukacja i projekty wartości kolumn z tabeli HBase guru99

Aby pobrać wyniki zapisane w „guru99”:

  • Tutaj pobierzemy wartości przechowywane w rodzinach kolumn, tj. „edukacja” i „projekty”.
  • Za pomocą polecenia „get” pobierzemy wartości zapisane w tabeli HBase.
  • Wyniki skanowania za pomocą polecenia „scan”. Wartości zapisane w wierszu 1 zostaną wyświetlone na konsoli.

Po napisaniu kodu należy go uruchomić Java aplikacja lubię to:

Kliknij prawym przyciskiem myszy na HBaseLoading.java -> Uruchom jako -> Java Podanie.

Po uruchomieniu „HBaseLoading.java” wartości są wstawiane do „guru99” w każdej kolumnie w HBase, a ten sam program może również pobierać wartości.

Oto pełny kod:

import java.io.IOException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseLoading
{
public static void main(String[] args) throws IOException
{
/* When you create a HBaseConfiguration, it reads in whatever you've set into your hbase-site.xml and in hbase-default.xml, as long as these can be found on the CLASSPATH*/

org.apache.hadoop.conf.Configuration config = HBaseConfiguration.create();

/*This instantiates an HTable object that connects you to the "test" table*/

HTable table = new HTable(config, "guru99");

/* To add to a row, use Put. A Put constructor takes the name of the row you want to insert into as a byte array.*/

Put p = new Put(Bytes.toBytes("row1"));

/*To set the value you'd like to update in the row 'row1', specify the column family, column qualifier, and value of the table cell you'd like to update. The column family must already exist in your table schema. The qualifier can be anything.*/

p.add(Bytes.toBytes("education"), Bytes.toBytes("col1"),Bytes.toBytes("BigData"));
p.add(Bytes.toBytes("projects"),Bytes.toBytes("col2"),Bytes.toBytes("HBaseTutorials"));

// Once you've adorned your Put instance with all the updates you want to make, to commit it do the following

table.put(p);

// Now, to retrieve the data we just wrote.

Get g = new Get(Bytes.toBytes("row1"));
Result r = table.get(g);

byte [] value = r.getValue(Bytes.toBytes("education"),Bytes.toBytes("col1"));
byte [] value1 = r.getValue(Bytes.toBytes("projects"),Bytes.toBytes("col2"));
String valueStr = Bytes.toString(value);

String valueStr1 = Bytes.toString(value1);
System.out.println("GET: " +"education: "+ valueStr+"projects: "+valueStr1);

Scan s = new Scan();

s.addColumn(Bytes.toBytes("education"), Bytes.toBytes("col1"));
s.addColumn(Bytes.toBytes("projects"), Bytes.toBytes("col2"));
ResultScanner scanner = table.getScanner(s);
try
{
for (Result rr = scanner.next(); rr != null; rr = scanner.next())
{
System.out.println("Found row : " + rr);
}
} finally
{
// Make sure you close your scanners when you are done!

scanner.close();
}
}
}

Uwaga dotycząca wersji API: Powyższy przykład wykorzystuje klasę HTable i jej metodę add(), które odzwierciedlają starszy interfejs API klienta HBase. Od wersji HBase 1.0, HTable jest przestarzały. Współczesny kod pobiera tabelę za pomocą ConnectionFactory.createConnection(…).getTable(…) i tworzy obiekt Put za pomocą addColumn() zamiast add(). Logika operacji put, get i scan pozostaje taka sama.

FAQ

Polecenie „get” pobiera jeden wiersz według klucza wiersza i szybko zwraca wynik. Polecenie „scan” odczytuje wiele wierszy sekwencyjnie z tabeli lub zakresu kluczy, opcjonalnie filtrując je według kolumn lub czasu. Użyj polecenia „get” do pojedynczych wyszukiwań, a „scan” do przeglądania lub eksportowania wielu wierszy.

Rodzina kolumn to nazwana grupa kolumn przechowywanych razem i definiowanych podczas tworzenia tabeli. Kwalifikator kolumny to nazwa pojedynczej kolumny w tej rodzinie, na przykład edukacja:kolumna1. Rodziny muszą istnieć w schemacie; kwalifikatory można swobodnie dodawać w trakcie zapisu.

Użyj polecenia delete, aby usunąć jedną komórkę, na przykład delete 'guru99', 'r1', 'c1'. Użyj deleteall, aby usunąć cały wiersz: deleteall 'guru99', 'r1'. Aby całkowicie opróżnić tabelę, wyłącz ją, a następnie uruchom polecenie truncate 'guru99', które usunie ją i utworzy ponownie.

Baza danych HBase przechowuje wiele wersji każdej komórki ze znacznikiem czasu. Liczba przechowywanych wersji jest ustawiana dla każdej rodziny kolumn za pomocą atrybutu VERSIONS, którego wartość domyślna wynosi 1. Dodaj {VERSIONS => 3} do polecenia get lub scan, aby zwrócić kilka wersji, lub TIMESTAMP, aby pobrać jedną dokładną wersję.

Uruchom listę, aby wyświetlić wszystkie tabele w HBase. Uruchom polecenie count „guru99”, aby policzyć wiersze w tabeli, opcjonalnie z INTERWAŁEM dla postępu. Użyj polecenia describe „guru99”, aby wyświetlić rodziny kolumn, i polecenia status „simple”, aby sprawdzić stan klastra.

HBase nie ma natywnego SQL, ale Apache Phoenix dodaje warstwę SQL, która kompiluje zapytania do natywnych operacji put, get i scan. Obsługuje znaną składnię SELECT, UPSERT i JOIN, dzięki czemu HBase jest łatwiejszy w obsłudze dla zespołów, które już biegle posługują się SQL.

Asystenci kodowania AI i duże modele językowe mogą tworzyć polecenia powłoki HBase i Java Kod klienta można odczytać z poziomu komunikatu w języku zrozumiałym dla użytkownika, zasugerować projekty oparte na kluczach wierszowych i wyjaśnić filtry skanowania. Uczenie maszynowe pomaga również dostroić wydajność poprzez przewidywanie obszarów o wysokiej aktywności, chociaż inżynier powinien weryfikować każde wygenerowane zapytanie.

Tak. Drugi pilot GitHub może generować fragmenty kodu HBase put, get i scan Java lub powłoki z krótkiego komentarza, obejmującego wywołania Bytes.toBytes i filtry Scan. RevPrzed uruchomieniem sprawdź poprawną nazwę tabeli, rodziny kolumn i bieżący interfejs API tabel.

Podsumuj ten post następująco: