HBase Създаване на таблица с Java Пример за API и Shell

⚡ Умно обобщение

HBase съхранява данни в таблици и можете да създавате и обработвате тези таблици по два начина: чрез Java API с HTableDescriptили и HBaseAdmin, или директно в HBase shell-а, използвайки командата create.

  • Java API: Създаване на таблици в код с HTableDescriptили, HColumnDescriptили и HBaseAdmin.
  • 🐚 Създаване на обвивка: Командата create изгражда таблица от име и едно или повече семейства колони.
  • 🧬 Семейства колони: Всяка таблица се нуждае от поне едно семейство колони, дефинирано при създаването на таблицата.
  • 🔧 Промяна на таблици: Командата alter добавя семейства колони, задава VERSIONS или променя атрибутите на табличен обхват.
  • 🗑️ Жизнен цикъл на таблицата: Деактивирайте таблица, преди да я промените или премахнете, след което я активирайте отново, за да възобновите записите.
  • 🤖 Помощ от изкуствен интелект: Асистентите с изкуствен интелект изготвят команди за създаване, промяна и премахване и преглеждат дизайна на семейства колони.

HBase създава таблица с Java Пример за API и shell команда

Как да създадете таблица в HBase с Java API

В HBase таблиците могат да бъдат създадени по два начина: чрез Java API и чрез HBase shell. Този раздел обхваща Java API, който позволява на приложението да създава таблици и да зарежда данни програмно като част от по-голяма задача.

През Java API, можем да създаваме таблици в HBase и също така да зареждаме данни в таблици, използвайки Java кодиране. Двете неща, които настройваме тук, са:

  • Установяване на връзка с HBase чрез Java API.
  • Използването на Eclipse за Java кодиране, дебъгване и тестване.

Следват стъпките за създаване на таблици в HBase чрез Java API.

Стъпка 1) Създайте a Java Проектирайте в Eclipse

В тази стъпка ще създадем a Java проект в Eclipse за HBase връзката, наречена „HbaseConnection“.

The New Java Диалоговият прозорец на проекта по-долу показва как се настройва проектът „HbaseConnection“:

Eclipse НОВ Java Диалогов прозорец на проекта, създаващ проекта HbaseConnection с JavaSE-1.7 среда

Ако разгледаме екранната снимка по-горе:

  • Въведете името на проекта в това поле. В нашия случай името на проекта е „HbaseConnection“.
  • Отметнете това квадратче, за да се запази местоположението по подразбиране. Тук пътят е /home/hduser/work/HbaseConnection.
  • Поставете отметка в квадратчето за Java среда тук. В този случай JavaSE-1.7 е Java издание.
  • Изберете опцията за мястото, където искате да запазите файла. В нашия случай избрахме втората опция – „Създаване на отделна папка за изходни кодове и файлове с класове“.
  • Щракнете върху бутона „Готово“, което създава проекта „HbaseConnection“ в Eclipse и отваря Eclipse начална страница.

Стъпка 2) Конфигурирайте пътя за изграждане в Eclipse

От Eclipse На началната страница, следвайте тези стъпки, за да отворите конфигурацията на пътя за изграждане:

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

Екранната снимка по-долу показва менюто с десен бутон, използвано за отваряне на конфигурацията на пътя за изграждане:

Eclipse меню на проекта с десен бутон, избирайки път за изграждане, след което „Конфигуриране на път за изграждане“

От горната екранна снимка:

  • Щракнете с десния бутон върху проект.
  • Изберете „Път за изграждане“.
  • Изберете Конфигуриране на път за изграждане.

След като щракнете върху „Конфигуриране на пътя за изграждане“, се отваря друг прозорец, показан на екранната снимка по-долу. Разделът „Библиотеки“ е мястото, където JAR файловете на HBase и Hadoop се добавят към проекта:

Eclipse Java Разделът „Библиотеки на пътищата за изграждане“ добавя външни HBase и Hadoop JAR файлове

В тази стъпка добавяме съответните HBase JAR файлове в Java проект, както е показано на екранната снимка.

  • Важни JAR файлове, които ще бъдат добавени: hbase-0.94.8.jar и hadoop-core-1.1.2.jar.
  • Отидете в раздела „Библиотеки“.
  • Натиснете опцията Добавяне на външни JAR файлове.
  • Изберете необходимите важни JAR файлове.
  • Натиснете бутона „Готово“, за да добавите тези файлове към „src“ на Java проект в секцията „Библиотеки“.

След добавянето на JAR файловете, те се появяват под местоположението на проекта „src“, както е показано по-долу:

Eclipse Разгледач на проекти, показващ добавените HBase и Hadoop JAR файлове под изходния код на проекта

Всички JAR файлове, които попадат в проекта, вече са готови за използване с екосистемата Hadoop.

Стъпка 3) Установете HBase връзка

В тази стъпка, използвайки HBaseConnection.java, HBase връзката се установява чрез Java кодиране.

От Eclipse горното меню, изпълнете Java програма, както е показано по-долу: Изпълни -> Изпълни като -> Java Приложение. Менюто по-долу показва стартираната програма:

Eclipse Стартирай като Java Меню на приложението, стартиращо програмата HBaseConnection

  • Изберете „Изпълнение“.
  • Изберете „Изпълни като“ Java Приложение.
  • Този код установява връзка с HBase чрез Java API.
  • След изпълнението на този код, таблицата „guru99“ се създава в HBase с две семейства колони, наречени „education“ и „projects“. В момента в HBase се създава само празната схема.

Откъсът от код по-долу подчертава HTableDescriptили и addFamily извиквания, които изграждат схемата на таблицата:

Java код, използващ HTableDescriptили и addFamily, за да дефинира таблицата guru99 със семейства колони за образование и проекти

От екранната снимка по-горе, ние изпълняваме следните функции:

  • Използване на HTableDescriptили можем да създадем таблицата „guru99“ в HBase.
  • Използвайки метода addFamily, добавяме „education“ и „projects“ като семейства колони към таблицата „guru99“.

Кодът по-долу ще установи връзка с HBase и ще създаде таблицата „guru99“ с две семейства колони. Поставете този код под документа 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......");
    }
}

Това е необходимият код, който трябва да поставите в HBaseConnection.java, преди да стартирате Java програма.

След като стартира тази програма, тя установява връзка с HBase и от своя страна създава таблица с имена на колони.

  • Името на таблицата е „guru99“.
  • Семействата от колони са „образование“ и „проекти“.

Стъпка 4) Проверете създадената таблица в HBase

Можем да проверим дали таблицата „guru99“ е създадена с две семейства колони в HBase, като използваме режима на обвивката на HBase с командата „list“. Командата „list“ дава информация за всички таблици, създадени в HBase.

Изпълнението на командата list в HBase shell потвърждава новата таблица, както е показано по-долу:

Изход от командата HBase shell list, показващ, че таблицата guru99 е създадена

  • Code проверка в HBase shell чрез изпълнение на командата „list“.
  • Ако изпълним командата „list“, тя показва таблицата, създадена в HBase. В нашия случай можем да видим, че е създадена таблицата „guru99“.

HBase Създаване на таблица с Shell

Освен Java API, можете да създадете таблица директно от обвивката на HBase, което е най-бързият начин за настройване на таблица за бързи тестове. Синтаксисът за създаване на таблица в HBase с помощта на обвивката е:

Syntax: create <tablename>, <columnfamilyname>

Пример:-

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

Горният пример обяснява как да се създаде таблица в HBase с посоченото име, дадено съгласно спецификациите за всяко семейство колони. В допълнение към това, можем да ѝ предадем и някои атрибути за обхват на таблицата.

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

Тук блокът {NAME=>'Edu', VERSIONS=>…} задава семейство колони с име „Edu“ и броя на версиите на клетките, които се съхраняват. Големият брой е само илюстративен; на практика VERSIONS е малка стойност, като например 3 или 5.

Изброяване, описание и проверка на HBase таблици

Създаването на таблица е само първата част от работата с таблици в HBase. След като таблицата „guru99“ съществува, няколко общи команди ви позволяват да я проверите и да потвърдите състоянието ѝ, преди да четете, пишете или променяте данни. Можете да ги изпълните всички от HBase обвивка.

Командата list връща всяка потребителска таблица в HBase:

hbase> list

Командата describe показва структурата на таблицата, включително нейните семейства колони и дали е активирана в момента:

hbase> describe 'guru99'

Командата exists проверява дали таблицата е налична, а is_enabled докладва дали таблицата може да приема записи:

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

Тези проверки само за четене са безопасни за изпълнение по всяко време. Те са най-бързият начин да се потвърди, че дадена таблица е създадена правилно и да се прегледат нейните семейства колони преди зареждане на данни.

Промяна на HBase таблица

Схемата на таблицата в HBase не се фиксира след създаването ѝ. Командата alter променя семействата колони на таблицата и атрибутите на обхвата на таблицата, без да я пресъздава. В зависимост от вашата версия на HBase, може да се наложи първо да деактивирате таблицата, след което да изпълните alter и да я активирате отново.

За да добавите ново семейство колони към таблицата „guru99“:

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

За да зададете колко версии да се съхраняват в едно семейство колони:

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

За да изтриете семейство колони от таблицата:

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

Можете също да промените атрибутите на обхвата на таблицата. Например, маркирайте таблицата само за четене или задайте максималния размер на регионален файл на 128 MB:

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

Тъй като alter пренаписва схемата, планирайте внимателно промените в производствена таблица и потвърдете резултата след това с describe.

Деактивиране, активиране и премахване на HBase таблици

За да премахнете таблица или да приложите определени промени, HBase изисква първо да я деактивирате. Деактивирането изключва таблицата от мрежата, така че никой клиент да не може да чете или пише в нея, което прави структурните промени безопасни.

Деактивирайте таблица и проверете състоянието ѝ с is_disabled:

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

Активирайте отново таблицата, за да възобновите четенето и записа:

hbase> enable 'guru99'

Таблицата трябва да бъде деактивирана, преди да може да бъде премахната. Премахванеping изтрива таблицата и всичките ѝ данни завинаги, така че използвайте я внимателно:

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

За да премахнете няколко таблици едновременно, drop_all изтрива всяка таблица, чието име съвпада с регулярен израз. Заедно, create, alter, disable, enable и drop покриват пълния жизнен цикъл на обработка на данни в HBase таблици.

Въпроси и Отговори

Най-добрата практика е да се поддържа нисък броят на семействата колони, в идеалния случай от едно до три. HBase обединява и компресира всички семейства от даден регион заедно, така че допълнителните семейства разпределят данните в повече файлове и забавят четенето и записа. Групирайте свързани колони в едно семейство, когато е възможно.

Не. При създаване дефинирате само семейства колони. Квалификаторите на колони са динамични и могат да се добавят към всеки ред, когато записвате данни. Този гъвкав по отношение на схемата дизайн позволява на всеки ред да съдържа различни колони, без първо да се променя таблицата.

Използвайте truncate 'guru99', което деактивира таблицата, премахва я и я пресъздава със същите семейства колони. Схемата остава непокътната, докато всеки ред се премахва. Това е по-бързо и по-чисто от изтриването на редове един по един.

Примерът използва HBaseAdmin и HTableDescriptили и двете са остарели от HBase 1.0 насам. Съвременният код получава обект Admin от Connection чрез ConnectionFactory и изгражда схемата с TableDescriptorBuilder и ColumnFamilyDescriptилиBuilder. Логиката за създаване на таблица остава същата.

VERSIONS задава колко версии с времеви отпечатък на всяка клетка се съхраняват от едно семейство колони. Стойността по подразбиране е 1. Заявката за по-стари версии с командата get или scan ги връща, докато не се надвиши запазеният брой, след което компресирането премахва най-старите клетки.

HBase е подходящ за много големи, разредени набори от данни, които се нуждаят от бързо произволно четене и записване върху Hadoop и HDFS. Типичните приложения включват данни от времеви серии, съобщения и анализи в реално време, където таблиците нарастват до милиарди редове в много възли.

Асистентите за кодиране с изкуствен интелект и моделите с големи езици изготвят команди за създаване, промяна и премахване от подкани на разбираем език, обясняват дизайна на семейства колони и маркират рискови операции като премахване.ping таблица. Машинното обучение може също да анализира моделите на достъп, за да препоръча по-добри оформления на редове и семейства, въпреки че инженер трябва да провери всяко предложение.

Да. Копилот на GitHub може да генерира HBase shell команди и Java клиентски код за създаване, промяна и премахванеping таблици от кратък коментар. RevПрегледайте резултата му за правилното име на таблицата, семействата колони и текущия администраторски API, преди да го стартирате.

Обобщете тази публикация с: