Apache-tajo-table-management
Apache Tajo-テーブル管理
テーブルは、1つのデータソースの論理ビューです。 論理スキーマ、パーティション、URL、およびさまざまなプロパティで構成されます。 Tajoテーブルは、HDFSのディレクトリ、単一のファイル、1つのHBaseテーブル、またはRDBMSテーブルにすることができます。
Tajoは、次の2種類のテーブルをサポートしています-
- 外部テーブル
- 内部テーブル
外部テーブル
外部テーブルには、テーブルの作成時に場所プロパティが必要です。 たとえば、データが既にText/JSONファイルまたはHBaseテーブルとして存在する場合、Tajo外部テーブルとして登録できます。
次のクエリは、外部テーブル作成の例です。
ここに、
- 外部キーワード-これは外部テーブルを作成するために使用されます。 これは、指定された場所にテーブルを作成するのに役立ちます。
- サンプルはテーブル名を参照します。
- 場所-HDFS、Amazon S3、HBase、またはローカルファイルシステムのディレクトリです。 ディレクトリの場所のプロパティを割り当てるには、以下のURIの例を使用してください-
- HDFS -hdfs://localhost:port/path/to/table
- Amazon S3 -s3://bucket-name/table
- ローカルファイルシステム-file:///path/to/table
- Openstack Swift -swift://bucket-name/table
テーブルのプロパティ
外部テーブルには、次のプロパティがあります-
- TimeZone -ユーザーは、テーブルの読み取りまたは書き込みのタイムゾーンを指定できます。
- 圧縮形式-データサイズをコンパクトにするために使用されます。 たとえば、text/jsonファイルは compression.codec プロパティを使用します。
内部テーブル
内部テーブルは、*管理テーブル*とも呼ばれます。 テーブルスペースと呼ばれる定義済みの物理的な場所に作成されます。
構文
デフォルトでは、Tajoは「conf/tajo-site.xml」にある「tajo.warehouse.directory」を使用します。 テーブルに新しい場所を割り当てるには、テーブルスペース構成を使用できます。
テーブルスペース
表領域は、ストレージシステム内の場所を定義するために使用されます。 内部テーブルのみでサポートされています。 名前で表領域にアクセスできます。 各テーブルスペースは異なるストレージタイプを使用できます。 テーブルスペースを指定しない場合、Tajoはルートディレクトリのデフォルトのテーブルスペースを使用します。
表領域の構成
Tajoには*「conf/tajo-site.xml.template」があります。 ファイルをコピーし、名前を“ storagesite.json” *に変更します。 このファイルは、表領域の構成として機能します。 Tajoデータ形式は次の構成を使用します-
HDFS設定
HBaseの構成
テキストファイルの構成
テーブルスペースの作成
Tajoの内部テーブルレコードには、別のテーブルからのみアクセスできます。 表領域を使用して構成できます。
構文
ここに、
- IF NOT EXISTS -同じテーブルがまだ作成されていない場合のエラーを回避します。
- TABLESPACE -この句は、テーブルスペース名を割り当てるために使用されます。
- ストレージタイプ-Tajoデータは、text、JSON、HBase、Parquet、Sequencefile、ORCなどの形式をサポートしています。
- * AS selectステートメント*-別のテーブルからレコードを選択します。
表領域の構成
Hadoopサービスを開始し、ファイル「“ conf/storage-site.json” *」を開き、次の変更を追加します-
ここで、TajoはHDFSロケーションからのデータを参照し、 space1 はテーブルスペース名です。 Hadoopサービスを開始しないと、テーブルスペースを登録できません。
問い合わせ
上記のクエリは、「table1」という名前のテーブルを作成し、「space1」はテーブルスペース名を参照します。
データ形式
Tajoはデータ形式をサポートしています。 それぞれの形式について詳しく見ていきましょう。
Text
文字区切り値のプレーンテキストファイルは、行と列で構成される表形式のデータセットを表します。 各行はプレーンテキストの行です。
テーブルを作成する
ここで、*“ customers.csv” *ファイルは、Tajoインストールディレクトリにあるコンマ区切り値ファイルを指します。
テキスト形式を使用して内部テーブルを作成するには、次のクエリを使用します-
上記のクエリでは、テーブルスペースが割り当てられていないため、Tajoのデフォルトのテーブルスペースが使用されます。
プロパティ
テキストファイル形式には、次のプロパティがあります-
- text.delimiter -これは区切り文字です。 デフォルトは「|」です。
- compression.codec -これは圧縮形式です。 デフォルトでは無効になっています。 指定したアルゴリズムを使用して設定を変更できます。
- timezone -読み取りまたは書き込みに使用されるテーブル。
- text.error-tolerance.max-num -許容レベルの最大数。
- text.skip.headerlines -スキップされるヘッダー行の数。
- text.serde -これはシリアル化プロパティです。
JSON
Apache Tajoは、データのクエリ用にJSON形式をサポートしています。 TajoはJSONオブジェクトをSQLレコードとして扱います。 1つのオブジェクトは、Tajoテーブルの1行に相当します。 次のように「array.json」を考えてみましょう-
このファイルを作成したら、Tajoシェルに切り替えて次のクエリを入力し、JSON形式を使用してテーブルを作成します。
問い合わせ
ファイルデータはテーブルスキーマと一致する必要があることを常に覚えておいてください。 それ以外の場合は、列名を省略して、列リストを必要としない*を使用できます。
内部テーブルを作成するには、次のクエリを使用します-
寄木細工
寄木細工は円柱状のストレージ形式です。 TajoはParquet形式を使用して、簡単、高速、効率的なアクセスを実現しています。
テーブル作成
次のクエリは、テーブル作成の例です-
寄木細工のファイル形式には、次のプロパティがあります-
- parquet.block.size -メモリにバッファされる行グループのサイズ。
- parquet.page.size -ページサイズは圧縮用です。
- parquet.compression -ページの圧縮に使用される圧縮アルゴリズム。
- parquet.enable.dictionary -ブール値は、辞書のエンコードを有効/無効にすることです。
RCFile
RCFileはRecord Columnar Fileです。 バイナリキー/値のペアで構成されます。
テーブル作成
次のクエリは、テーブル作成の例です-
RCFileには次のプロパティがあります-
- rcfile.serde -カスタムデシリアライザークラス。
- compression.codec -圧縮アルゴリズム。
- rcfile.null -NULL文字。
SequenceFile
SequenceFileは、キーと値のペアで構成されるHadoopの基本的なファイル形式です。
テーブル作成
次のクエリは、テーブル作成の例です-
このシーケンスファイルには、Hiveとの互換性があります。 これは、Hiveで次のように記述できます。
ORC
ORC(最適化された行の列)は、Hiveの列ストレージ形式です。
テーブル作成
次のクエリは、テーブル作成の例です-
ORC形式には次のプロパティがあります-
- orc.max.merge.distance -ORCファイルが読み込まれ、距離が短くなるとマージされます。
- orc.stripe.size -これは各ストライプのサイズです。
- orc.buffer.size -デフォルトは256KBです。
- orc.rowindex.stride -これは、行数のORCインデックスストライドです。