このトピックでは、Data Lake Analytics (DLA) を使用して Lindorm の LindormDFS にアクセスし、SQL ステートメントを実行して LindormDFS のデータに対してクエリを実行する方法について説明します。
前提条件
Lindorm インスタンスで LindormDFS がアクティブ化されていること。 LindormDFS をアクティブ化する方法の詳細については、LindormDFS サービスのアクティブ化 をご参照ください。
仮想プライベートクラウド (VPC) の IP アドレスが Lindorm インスタンスの許可リストに追加されていること。許可リストに IP アドレスを追加する方法の詳細については、許可リストの設定 をご参照ください。
DLA Serverless SQL の DLA CU Edition がアクティブ化されています。詳細については、「DLA Presto 互換の Presto CU Edition の使用」をご参照ください。
説明DLA仮想クラスターのデータソースネットワークを構成する場合は、データソースネットワークとLindormインスタンスのネットワークに同じVPC IDを使用してください。
アクセス方法
DLA では、DLA Serverless SQL と DLA Serverless Spark を使用して LindormDFS にアクセスできます。
開始する前に
ローカルマシンに
example.txt
という名前の新しいファイルを作成します。次のコードは、テキストコンテンツの例を示しています。7,8,9
次のコマンドを実行して、テキストファイルを LindormDFS にアップロードします。
hadoop fs -mkdir -p hdfs://${Instance ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1 hadoop fs -copyFromLocal example.txt hdfs://${Instance ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1/example.txt
説明DLA Serverless SQL を使用して LindormDFS にアクセスする場合、高可用性モードはサポートされていません。そのため、上記のコマンドの各アドレスを、LindormDFS のプライマリノードが実行されているホストのアドレスに置き換える必要があります。プライマリノードとセカンダリノードに関する情報は、hdfs-site ファイルにあります。 hdfs-site ファイルの設定情報の確認方法の詳細については、アクセス設定の生成 をご参照ください。
次のコマンドを実行して、ファイルが想定どおりにアップロードされたかどうかを確認します。
hadoop fs -ls hdfs://${Instance ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1
次の図に示す結果は、アップロードが成功したことを示しています。
手順
DLA コンソール にログオンします。
左側のナビゲーションペインで、[Serverless Presto] > [実行] を選択します。
次の SQL ステートメントを実行してデータベースを作成します。右上隅にある DMS にログインして SQL 操作を実行する をクリックします。
CREATE DATABASE `my_lindorm_store_db` WITH DBPROPERTIES ( catalog = 'hive', location = 'hdfs://${Instance ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/' )
説明MySQL クライアントまたはプログラムコードを使用して DLA に接続し、上記の SQL ステートメントを実行してデータベースを作成することもできます。次のリストは、SQL ステートメントのパラメーターについて説明しています。
catalog: 値 hive は、Hive スキーマが作成されることを示します。
location: HDFS データベースファイルを格納するディレクトリを指定します。
次のコマンドを実行してテーブルを作成します。
USE `my_lindorm_store_db`; CREATE EXTERNAL TABLE p ( `a` int, `b` int, `c` int ) partitioned by (d int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS `TEXTFILE` LOCATION 'hdfs://${Instance ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/';
説明HDFS テーブルのパラメーターと属性は、オブジェクトストレージサービス (OSS) テーブルのパラメーターと属性に似ています。違いは次のとおりです。
ネットワーク接続の問題により、データベースまたはテーブルの作成時にディレクトリ情報はチェックされません。ディレクトリが有効であることを確認する必要があります。
同じ理由で、HDFS テーブルは auto.create.location 属性をサポートしていません。
データのクエリ。LindormDFS のテーブルにアクセスするために実行される SQL ステートメントに
hint: /*+pool-selector=your-vc-name*/
を追加します。 LindormDFS がデプロイされているネットワークにアクセスできるのは DLA Serverless SQL CU の CU のみであるため、この手順が必要です。このヒントを追加すると、SQL ステートメントは DLA Serverless SQL CU で適切に実行できます。/*+ pool-selector=test-vc */ alter table p add partition (d=1) location 'hdfs://${Instance ID}-master1-001.lindorm.rds.aliyuncs.com:8020/test/p/d=1'; Query OK, 0 rows affected (8.63 sec) /*+ pool-selector=test-vc */ select * from p; +------+------+------+------+ | a | b | c | d | +------+------+------+------+ | 7 | 8 | 9 | 1 | +------+------+------+------+ 1 row in set (4.74 sec)
説明DLA の一般的な SQL タイプと構文の詳細については、一般的な SQL ステートメント をご参照ください。