ユーザーはデータレイクコンピューティング DLC コンソールまたは API を使用して、DDL ステートメントを実行しデータベースを作成できます。
データテーブルを作成
方法1:データ探索で作成する
1. データレイクコンピューティング DLC コンソールにログインし、サービスが所在するリージョンを選択してください。ログインユーザーにはデータテーブルを作成する権限が必要です。
2. データ探索モジュールに入り、左側のリストで既存のデータベースをクリックし、テーブル行にマウスをホバーしてからアイコンをクリックし、ネイティブテーブルを作成または外部テーブルを作成をクリックします。 説明:
ネイティブテーブルとは、DLCが管理するストレージ上のテーブルを指し、ネイティブテーブルでは基盤となるIcebergストレージ形式を気にする必要がなく、データ最適化などの機能を備えています。ネイティブテーブルを使用するには、まず管理ストレージを有効にする必要があります。詳細は管理ストレージ設定を参照してください。 外部テーブルの基盤データは自身のオブジェクトストレージ上にあり、外部テーブルを作成するにはデータパスを指定する必要があります。
3. ネイティブテーブル/外部テーブルを作成をクリックすると、システムは自動的にデータテーブル作成用のSQLテンプレートを生成します。ユーザーはこのSQLテンプレートを修正してデータテーブルを作成できます。実行ボタンをクリックすると、データテーブル作成のSQL文が実行され、作成が完了します。
方法2:データ管理で作成する
データ管理モジュールは、DLCに管理されるネイティブテーブルおよび外部テーブルの管理をサポートしています。
1. データレイクコンピューティング DLC コンソールにログインし、サービスが所在するリージョンを選択してください。ログインユーザーにはデータテーブルを作成する権限が必要です。
2. 左側メニューからメタデータ管理に入り、データベースに移動し、データテーブルがあるデータベース名をクリックして、データベース管理ページに進みます。 3. ネイティブテーブルを作成または外部テーブルを作成ボタンをクリックすると、データテーブル設定ページに進みます。
4. ネイティブテーブルのデータソースは、空のテーブル、ローカルアップロード、オブジェクトストレージCOSの3種類をサポートしており、異なるデータソースを選択すると対応する作成プロセスが異なります。ネイティブテーブルはデータ最適化などの機能をサポートしており、ライブラリのガバナンスルールを継承するか個別に有効/無効にするかを選択できます。
4.1 空のテーブルを作成:レコードがない空のテーブルを作成します。
データテーブル名:数字で始まらず、大文字小文字のアルファベット、数字、アンダースコア(_)が使用可能で、最大128文字までです。
データテーブルの説明情報を記入することができます。
列名とフィールドタイプを手動で追加および入力できます。array/map/structの3種類の複雑なタイプのフィールドの設定をサポートしています。
4.2 ローカルアップロード:ローカルのフォームファイルをDLCにアップロードしてデータテーブルを形成します。100MB以内のファイルがサポートされています。
CSV:CSVルールの視覚的な設定解析をサポートし、圧縮形式、列区切り記号、フィールド区切り文字を含みます。データファイルのスキーマを自動推測し、最初の行を列名として解析することをサポートします。
Json:DLCはJsonの第一階層のみを列として認識し、JsonファイルのShemaを自動推論することをサポートしています。システムはJsonの第一階層フィールドを列名として認識します。
Parquet、ORC、AVROなどの一般的なビッグデータ形式のデータファイルをサポートしています。
手動で列名とフィールドタイプを追加および入力できます。
自動推論構造を選択した場合、DLCは自動的に認識された列、列名、フィールドタイプを入力します。正しくない場合は手動で修正してください。
4.3 オブジェクトストレージ COS を使用してデータテーブルを作成します。
現在のアカウントのCOSデータバケットを読み取ってデータテーブルを作成します。
CSV:CSVルールの視覚的な設定解析をサポートし、圧縮形式、列区切り記号、フィールド区切り文字を含みます。データファイルのスキーマを自動推測し、最初の行を列名として解析することをサポートします。
Json:DLCはJsonの第一階層のみを列として認識し、JsonファイルのShemaを自動推論することをサポートしています。システムはJsonの第一階層フィールドを列名として認識します。
Parquet、ORC、AVROなどの一般的なビッグデータ形式のデータファイルをサポートしています。
手動で列名とフィールドタイプを追加および入力できます。
自動推論構造を選択した場合、DLCは自動的に認識された列、列名、フィールドタイプを入力します。正しくない場合は手動で修正してください。
5. データパーティションは通常、大量のデータを含むテーブルのクエリパフォーマンスを向上させるために使用されます。DLCはデータパーティションに基づいたデータクエリをサポートしており、ユーザーはこのステップでパーティション情報を追加する必要があります。データをパーティション化することで、各クエリでスキャンするデータ量を制限し、クエリパフォーマンスを向上させるとともに使用コストを削減できます。DLCはApache Hiveのパーティションルールに準拠しています。
パーティション列は、テーブルのCOSパス下のサブディレクトリに対応し、ディレクトリの命名規則はパーティション列名=パーティション列値です。
例:
説明:
サンプルコードはあくまで参考用であり、実際の業務シナリオに応じて変更する必要があります。例えば、「bucket_name」を実際のバケット名に置き換えてください。
cosn://nanjin-bucket/CSV/year=2021/month=10/day=10/demo1.csv
cosn://nanjin-bucket/CSV/year=2021/month=10/day=11/demo2.csv
複数のパーティション列がある場合、テーブル作成文で指定されたパーティション列の順序に従ってネストする必要があります。
CREATE EXTERNAL TABLE IF NOT EXISTS `COSDataCatalog`.`dlc_demo`.`table_demo` (
`_c0` string,
`_c1` string,
`_c2` string,
`_c3` string
) PARTITIONED BY (`year` string, `month` string, `day` string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES ('separatorChar' = ',', 'quoteChar' = '"')
STORED AS TEXTFILE
LOCATION 'cosn://bucket_name/folder_name/';
データテーブルの基本情報を照会する
方法1:データ探索でクエリを実行する
データテーブルプロジェクトで、マウスをデータテーブル名行にホバーし、アイコンをクリックして、ドロップダウンメニューで基本情報をクリックすると、作成したデータテーブルの基本情報を確認できます。
方法二:データ管理で確認する
1. データレイクコンピューティング DLC コンソールにログインし、サービスが所在するリージョンを選択します。ログインユーザーはデータテーブルを確認する権限が必要です。 2. 左側メニューからメタデータ管理モジュールに入り、データベースページで、データテーブルが所在するデータベース名をクリックすると、データベース管理ページに入ります。データテーブルの行数、ストレージ容量、作成者、フィールド、パーティションなどの情報を確認できます。 データテーブルのパーティション情報をセルフサービスで照会する
説明:
以下の例は、実際の業務シナリオに応じてデータベース名とテーブル名を置き換える必要があります。
SuperSQL Spark SQL エンジン
select * from `DataLakeCatalog`.`db`.`tb$partitions`
SuperSQL ジョブエンジンと標準エンジン
select * from `DataLakeCatalog`.`db`.`tb`.`partitions`
データテーブルのパーティション情報を照会する
データテーブル管理では、データテーブルのパーティション関連情報を照会することができます。パーティション情報を通じて、ユーザーは各パーティションのレコード数、ファイル数、データストレージ量、および更新時間などの情報を確認できます。
1. データレイクコンピューティング DLC コンソール</1>にログインし、サービスが所在するリージョンを選択します。ログインユーザーはデータテーブルを閲覧する権限が必要です。
2. 左側メニューからメタデータ管理に入り、データベースに移動し、データテーブルがあるデータベース名をクリックして、データベース管理ページに進みます。 3. データベースを選択し、データテーブル管理ページに移動します。データテーブルをクリックし、パーティション情報を選択して、パーティション情報表示ページに進みます。
データパーティションページでは、テーブルのパーティション情報をページごとに表示して確認できます。ユーザーは名前、レコード数、ファイルデータ、ファイルストレージ量などのフィールドでソートし、パーティション情報の状況を照会できます。特定のパーティションを確認したい場合、名前またはパーティション名を入力して検索することができます。
説明:
1. パーティション情報の統計は、現在DLCネイティブテーブルのみをサポートしています。
2. パーティション情報統計は現在ベータテスト段階です。ユーザーがパーティション情報統計を有効にしたい場合は、お問い合わせください。
データテーブルのデータをプレビューする
データテーブルプロジェクトで、マウスをデータテーブル名行にホバーし、アイコンをクリックして、ドロップダウンメニューでデータをプレビューをクリックすると、DLCは自動的に10件のデータをプレビューするSQL文を生成し、SQL文を実行してデータテーブルの最初の10件のデータをクエリします。 データプレビュー機能はデフォルトで最初の100件のデータを表示します。
データテーブル情報の編集
データ管理モジュールでデータテーブルの説明情報を編集することができます。
1. データ湖計算 DLC コンソールにログインし、サービスが所在するリージョンを選択します。ログインユーザーはデータテーブルを編集する権限が必要です。 2. 左側メニューからメタデータ管理 > データベースページに入り、データテーブルがあるデータベース名をクリックして、データベース管理ページに進みます。 3. 編集が必要なデータを見つけ、右側の編集ボタンをクリックして編集します。
4. 変更後、確定ボタンをクリックすると編集が完了します。
データテーブルを削除する
方法1:データ探索で削除する
データテーブルプロジェクトで、マウスをデータテーブル名行にホバーし、アイコンをクリックします。ドロップダウンメニューでテーブルを削除をクリックすると、DLCがデータテーブルを削除するSQL文を自動生成し、SQL文を実行してデータテーブルを削除します。 外部テーブルを削除すると、データテーブルを削除するだけで、DLCに保存されているメタデータ情報が削除され、データソースファイルには影響しません。
DataLakeCatalogディレクトリ内のデータテーブルを削除すると、そのデータテーブルのすべてのデータが消去されますので、慎重に操作してください。
方法2:データ管理で削除する
現在、データ管理ではDLCにホストされているデータベーステーブルのみを管理することができ、外部テーブルは方法1を使用して削除してください。
2. 左側メニューからメタデータ管理 > データベースに入り、データテーブルがあるデータベース名をクリックして、データベース管理ページに進みます。 3. 削除したいデータテーブルの右側にある削除ボタンをクリックし、二次確認後に該当データテーブルを削除できます。同時にデータテーブルのデータも消去されます。
テーブル作成文を表示
データテーブルプロジェクトで、マウスをデータテーブル名行にホバーし、アイコンをクリックして、ドロップダウンメニューでテーブル作成文を表示をクリックすると、DLCは自動的にそのデータテーブルの作成文を表示するSQL文を生成し、SQL文を実行してテーブル作成文をクエリします。 システム制約
DLCでは、各データベースのデータテーブルの最大数は4096個、各データテーブルがサポートする最大パーティション数は100,000、各データテーブルの属性列の最大数は4096個です。
DLCは同じCOSパス下のデータファイルを同一テーブルのデータとして認識するため、個別のフォルダ階層で別々のテーブルのデータを保持するようにしてください。
DLCはCOSのマルチバージョンデータをサポートしておらず、COSストレージバケット内の最新バージョンのデータのみをクエリできます。
DLCで作成されるすべてのテーブルは外部テーブルであり、テーブル作成のSQL文にはEXTERNALキーワードを含める必要があります。
同じデータベース内のテーブル名は一意である必要があります。
テーブル名は大文字と小文字を区別せず、英字、数字、アンダースコア(_)のみサポートされ、最大128文字までです。
テーブルがパーティションテーブルの場合、そのパーティションデータをクエリするには、ADD PARTITION文またはMSCK文を手動で実行してパーティション情報を追加する必要があります。詳細はパーティションテーブルのクエリを参照してください。 CSVでテーブルを作成する場合、DLCはデフォルトですべてのフィールドタイプをstringに変換しますが、元のデータフィールドの計算とクエリには影響しません。