HBase テーブルの作成 Java API とシェルの例

⚡ スマートサマリー

HBaseはデータをテーブルに格納し、それらのテーブルは2つの方法で作成および操作できます。 Java HTableを使用したAPIDescriptまたは、HBaseAdmin を使用するか、HBase シェルで直接 create コマンドを使用します。

  • Java API: HTableを使用してコードでテーブルを作成するDescriptまたは、HColumnDescriptまたは、HBaseAdmin。
  • 🐚 シェル作成: createコマンドは、名前と1つ以上のカラムファミリーからテーブルを作成します。
  • 🧬 列ファミリー: すべてのテーブルには、テーブル作成時に定義される少なくとも1つのカラムファミリーが必要です。
  • 🔧 テーブルの変更: alterコマンドは、列ファミリーの追加、VERSIONの設定、またはテーブルスコープ属性の変更を行います。
  • 🗑️ テーブルのライフサイクル: テーブルを変更または削除する前に無効化し、書き込みを再開するには再度有効化してください。
  • 🤖 AIアシスト: AIアシスタントは、作成、変更、削除コマンドの草案を作成し、列ファミリーの設計をレビューします。

HBaseでテーブルを作成する Java APIとシェルコマンドの例

HBaseでテーブルを作成する方法 Java API

HBaseでは、テーブルは2つの方法で作成できます。 Java API および HBase シェルを介して。このセクションでは、 Java APIとは、アプリケーションがより大きなジョブの一部として、プログラムによってテーブルを作成したり、データをロードしたりできるようにするものです。

介して Java APIを使用すると、HBaseにテーブルを作成し、テーブルにデータをロードすることもできます。 Java コーディング。ここで設定するのは次の2点です。

  • HBaseとの接続を確立する Java APIです。
  • 使い方 Eclipse の Java コーディング、デバッグ、テスト。

HBaseでテーブルを作成する手順は次のとおりです。 Java APIです。

ステップ 1) Java プロジェクトイン Eclipse

このステップでは、 Java プロジェクトイン Eclipse HBase接続の場合は、「HbaseConnection」という名前になります。

新 Java 以下のプロジェクトダイアログには、「HbaseConnection」プロジェクトがセットアップされている様子が表示されています。

Eclipse New Java プロジェクトダイアログでHbaseConnectionプロジェクトを作成しています JavaSE-1.7環境

上記のスクリーンショットを見ると、次のようになります。

  • この欄にプロジェクト名を入力してください。この例では、プロジェクト名は「HbaseConnection」です。
  • デフォルトの保存場所を指定するには、このチェックボックスをオンにしてください。ここでは、/home/hduser/work/HbaseConnection が保存先パスです。
  • チェックボックスをオンにします Java ここの環境。この場合 JavaSE-1.7は Java 版。
  • ファイルの保存場所を選択してください。今回の場合は、2番目のオプション「ソースファイルと授業ファイル用の別フォルダを作成する」を選択しました。
  • 「完了」ボタンをクリックすると、「HbaseConnection」プロジェクトが作成されます。 Eclipse そして開く Eclipse ホームページ。

ステップ2)ビルドパスを設定します Eclipse

ソフトウェア設定ページで、下図のように Eclipse ホームページから、以下の手順に従ってビルドパス構成を開きます。

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

以下のスクリーンショットは、ビルドパス設定を開くために使用する右クリックメニューを示しています。

Eclipse プロジェクトを右クリックしてメニューから「ビルドパス」を選択し、「ビルドパスの構成」を選択します。

上記のスクリーンショットから:

  • プロジェクトを右クリックします。
  • ビルドパスを選択してください。
  • 「ビルドパスの設定」を選択します。

「ビルドパスの設定」をクリックすると、下のスクリーンショットに示すような別のウィンドウが開きます。「ライブラリ」タブでは、HBaseとHadoopのJARファイルをプロジェクトに追加します。

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です。
  • このコードを実行すると、HBaseに「education」と「projects」という2つのカラムファミリーを持つ「guru99」テーブルが作成されます。現時点では、HBaseには空のスキーマのみが作成されます。

以下のコード抜粋は HTable を強調表示していますDescriptまたは、テーブルスキーマを構築する addFamily 呼び出し:

Java HTable を使用したコードDescriptまたは、addFamily を使用して、教育とプロジェクトの列ファミリーを持つ guru99 テーブルを定義します。

上記のスクリーンショットから、以下の機能を実行していることがわかります。

  • HTableの使用Descriptまたは、HBaseに「guru99」テーブルを作成することもできます。
  • addFamily メソッドを使用して、「education」と「projects」を列ファミリーとして「guru99」テーブルに追加します。

以下のコードは、HBaseとの接続を確立し、2つのカラムファミリーを持つ「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 で作成されたテーブルを確認する

HBaseシェルモードで「list」コマンドを使用すると、「guru99」テーブルが2つのカラムファミリーで作成されているかどうかを確認できます。「list」コマンドは、HBaseで作成されたすべてのテーブルに関する情報を提供します。

HBaseシェルでlistコマンドを実行すると、以下に示すように新しいテーブルが作成されていることが確認できます。

guru99テーブルが作成されたことを示すHBaseシェルリストコマンドの出力

  • Code HBaseシェルで「list」コマンドを実行して確認します。
  • 「list」コマンドを実行すると、HBaseに作成されたテーブルが表示されます。この例では、「guru99」テーブルが作成されていることが確認できます。

HBase シェルを使用したテーブルの作成

ほかに 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'}

テーブルスコープの属性を変更することもできます。たとえば、テーブルを読み取り専用に設定したり、リージョンファイルの最大サイズを128MBに設定したりできます。

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テーブル内。

よくあるご質問

ベストプラクティスとしては、カラムファミリーの数を少なく抑え、理想的には1~3個にすることをお勧めします。HBaseはリージョン内のすべてのファミリーをまとめてフラッシュおよび圧縮するため、ファミリー数が多いとデータが複数のファイルに分散され、読み書き速度が低下します。関連するカラムは可能な限り1つのファミリーにまとめてください。

いいえ。作成時に定義するのは列ファミリーのみです。列修飾子は動的であり、データ書き込み時に任意の行に追加できます。このスキーマに柔軟な設計により、テーブルを事前に変更することなく、各行に異なる列を持たせることができます。

テーブルを無効化し、削除してから、同じ列ファミリーで再作成する `truncate 'guru99'` コマンドを使用してください。すべての行が削除されますが、スキーマはそのまま維持されます。これは、行を 1 つずつ削除するよりも高速でクリーンな方法です。

この例では、HBaseAdminとHTableを使用しています。Descriptまたは、どちらも HBase 1.0 以降非推奨です。最新のコードでは、ConnectionFactory を介して Connection から Admin オブジェクトを取得し、Table を使用してスキーマを構築します。DescriptorBuilderとColumnFamilyDescriptorBuilder。テーブル作成ロジックは変更ありません。

VERSIONS は、列ファミリーが保持する各セルのタイムスタンプ付きバージョンの数を設定します。デフォルト値は 1 です。get または scan を使用して古いバージョンを要求すると、保持される数を超えるまでそれらのバージョンが返され、その後、圧縮処理によって最も古いセルが削除されます。

HBaseは、HadoopやHDFS上で高速なランダム読み書きを必要とする、非常に大規模で疎なデータセットに適しています。典型的な用途としては、時系列データ、メッセージング、リアルタイム分析などがあり、これらの用途では、テーブルが多数のノードにまたがり、数十億行にまで拡大します。

AIコーディングアシスタントと大規模言語モデルは、平易な言語プロンプトから作成、変更、削除コマンドをドラフトし、カラムファミリー設計を説明し、削除などの危険な操作を警告します。ping テーブル。機械学習はアクセスパターンを分析して、より適切な行キーとファミリーのレイアウトを推奨することもできますが、エンジニアは各提案を検証する必要があります。

Yes. GitHubコパイロット HBaseシェルコマンドを生成し、 Java 作成、変更、削除のためのクライアントコードping 短いコメントから表を作成する。 Rev実行する前に、出力結果を確認して、正しいテーブル名、カラムファミリー、および現在の管理APIを確認してください。