AnalyticDB for MySQLでは、Spark SQLを使用してLindormデータにアクセスできます。 このトピックでは、Spark SQLを使用してLindormのHiveテーブルとwideテーブルのデータにアクセスする方法について説明します。
前提条件
単一ゾーンのLindormインスタンスが作成されます。 詳細は、インスタンスの作成をご参照ください。
重要Lindormインスタンスに対して、LindormTable、Lindorm分散処理システム (LDPS) 、およびLindormDFSを有効化する必要があります。 LDPSの有効化方法については、「LDPSの有効化と設定の変更」をご参照ください。
OSSが有効化されています。 バケットとディレクトリがOSSに作成されます。 詳細については、「OSSの有効化」、「バケットの作成」、「ディレクトリの作成」をご参照ください。
AnalyticDB for MySQL Data Lakehouse Editionクラスターが作成されます。
AnalyticDB for MySQLのジョブリソースグループが作成されます。 Data Lakehouse Editionクラスター。 詳細については、「リソースグループの作成」をご参照ください。
AnalyticDB for MySQLのデータベースアカウントが作成されました Data Lakehouse Editionクラスター。
準備
Lindormコンソールにログインし、インスタンスの詳細ページに移動して、LindormインスタンスのvSwitch IDを表示します。
Lindormコンソールにログインし、アクセス制御ページに移動します。 [セキュリティグループ] タブをクリックして、Lindormインスタンスが属するセキュリティグループのIDを表示します。 セキュリティグループの追加方法については、「セキュリティグループの追加」をご参照ください。
LindormのHiveテーブルのデータにアクセスする
Hadoop分散ファイルシステム (hdfs) クライアントのHDFS-site構成情報を取得します。
説明hdfsサイトの設定情報を取得するには、Lindormテクニカルサポート (DingTalk ID: s0s3eg3) にお問い合わせください。
AnalyticDB for MySQL コンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 [Data Lakehouse Edition] タブで、管理するクラスターを見つけ、クラスターIDをクリックします。
左側のナビゲーションウィンドウで、[ジョブの開発]> [SQLの開発] を選択します。
[SQLConsole] タブで、Sparkエンジンとジョブリソースグループを選択します。
SQLConsoleタブで、次のコードを入力します。
SET spark.adb.connectors = oss,external_hive; SET spark.adb.eni.enabled=true; SET spark.adb.eni.vswitchId=vsw-bp14pj8h0k5p0kwu3****; SET spark.adb.eni.securityGroupId=sg-bp11m93k021tp4ca****; SET spark.sql.catalog.lindorm_catalog = org.apache.spark.sql.hive.V2HiveExternalCatalog; SET spark.adb.eni.adbHostAlias.enabled=true; SET spark.sql.catalogImplementation = hive; -- Configure HDFS-related parameters. SET spark.sql.catalog.lindorm_catalog.spark.hadoop.hive.metastore.uris=thrift://ld-bp1ttz8833x9c****-proxy-ldps-hms.lindorm.aliyuncs.com:9083; SET spark.hadoop.dfs.nameservices=ld-bp1ttz8833x9c****; SET spark.hadoop.dfs.client.failover.proxy.provider.ld-bp1ttz8833x9c****=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider; SET spark.hadoop.dfs.ha.automatic-failover.enabled=true; SET spark.hadoop.dfs.ha.namenodes.ld-bp1ttz8833x9c****=nn1,nn2; SET spark.hadoop.dfs.namenode.rpc-address.ld-bp1ttz8833x9c****.nn1=ld-bp1ttz8833x9c-master1-001.lindorm.rds.aliyuncs.com:8020; SET spark.hadoop.dfs.namenode.rpc-address.ld-bp1ttz8833x9c****.nn2=ld-bp1ttz8833x9c****-master2-001.lindorm.rds.aliyuncs.com:8020; SET spark.hadoop.dfs.namenode.http-address.ld-bp1ttz8833x9c****.nn1=ld-bp1ttz8833x9c****-master1-001.lindorm.rds.aliyuncs.com:50071; SET spark.hadoop.dfs.namenode.http-address.ld-bp1ttz8833x9c****.nn2=ld-bp1ttz8833x9c****-master2-001.lindorm.rds.aliyuncs.com:50071; -- Create an external database and an external table in OSS. CREATE DATABASE external_oss_db location 'oss://testBucketName/warehouse/db'; CREATE TABLE external_oss_db.test(id int, name string) using parquet location 'oss://testBucketName/warehouse/db/test'; -- Insert the data of a Hive table into the OSS external table. INSERT INTO external_oss_db.test SELECT * FROM lindorm_catalog.spark_test.test; -- Read the data of the OSS external table. SELECT * FROM external_oss_db.test;
パラメーター
必須
説明
spark.adb.connectors
あり
有効にするAnalyticDB for MySQL Sparkの組み込みコネクタの名前。 複数の名前はコンマ (,) で区切ります。 有効な値: oss、hudi、delta、adb、odps、external_hive、jindo。
この例では、
ossとexternal_hive
が使用されています。spark.adb.eni.enabled
あり
Elastic Network Interface (ENI) を有効にするかどうかを指定します。
外部テーブルを使用して他の外部データソースにアクセスする場合は、ENIを有効にする必要があります。 有効な値:
true
false
この例では、このパラメーターを
true
に設定します。spark.adb.eni.vswitchId
あり
準備中に取得されるLindormインスタンスのvSwitch ID。
spark.adb.eni.securityGroupId
あり
準備中に取得したLindormインスタンスのセキュリティグループID。
spark.sql.ca talog.lindorm_catalog
あり
Spark SQLがデータソースを構成するために使用するメソッド。
このパラメーターは自動的に
org.apache.spark.sql.hive.V2HiveExternalCatalog
に設定されます。説明talog_nameパラメーターのカスタム
catalog_name
値を設定できe spark.sql.catalog.ca。 この例では、lindorm_catalog
が使用されています。spark.adb.eni.adbHostAlias.enabled
あり
AnalyticDB for MySQLが必要とするドメイン名解決情報をドメイン名とIPアドレスのマッピングテーブルに自動的に書き込むかどうかを指定します。 有効な値:
true
false
ENIを使用してEMR Hiveからデータを読み書きする場合は、このパラメーターをtrueに設定する必要があります。
HDFS関連のパラメータ
あり
手順1で取得したhdfs-site構成情報。 形式:
set spark.hadoop.<name >=< value>
説明<name> および <value> パラメーターを設定情報の実際の値に置き換えます。
場所
あり
外部テーブルのOSSパス。 形式:
oss://<bucketname/database/table>
この例では、oss:// testBucketName/warehouse/db/test
が使用されています。説明<bucketname/database/table>
パラメーターを実際のOSSパスに置き換えます。[実行] をクリックします。
Sparkジョブを実行したら、スパークJAR開発ページをクリックし、ログのアクション列にアプリケーションタブでテーブルデータを表示します。 詳細については、「Sparkエディター」をご参照ください。
Lindormのワイドテーブルのデータにアクセスする
HBase Java APIを使用したアクセス用のLindormTableのVPC (Virtual Private Cloud) エンドポイントを取得します。 詳細については、「エンドポイントの表示」トピックの「LindormTableのエンドポイントの表示」をご参照ください。
AnalyticDB for MySQL コンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 [Data Lakehouse Edition] タブで、管理するクラスターを見つけ、クラスターIDをクリックします。
左側のナビゲーションウィンドウで、[ジョブの開発]> [SQLの開発] を選択します。
[SQLConsole] タブで、Sparkエンジンとジョブリソースグループを選択します。
SQLConsoleタブで、次のコードを入力します。
SET spark.adb.eni.enabled=true; SET spark.adb.eni.vswitchId=vsw-bp14pj8h0k5p0kwu3****; SET spark.adb.eni.securityGroupId=sg-bp11m93k021tp4ca****; SET spark.sql.catalog.lindorm_table = com.alibaba.lindorm.ldspark.datasources.v2.LindormCatalog; SET spark.sql.catalog.lindorm_table.url=ld-bp1ttz8833x9c****-proxy-lindorm.lindorm.rds.aliyuncs.com:30020; SET spark.sql.catalog.lindorm_table.username=test; SET spark.sql.catalog.lindorm_table.password=password; add jar "oss://<bucketname>/hbase_jars/*"; -- Create an external database and an external table in OSS. CREATE DATABASE IF NOT exists external_oss_db location 'oss://testBucketName/warehouse/db'; CREATE TABLE IF NOT exists external_oss_db.lindorm_table_2(id string, name string) using parquet location 'oss://testBucketName/warehouse/db/lindorm_table_2'; -- Insert the data of a wide table into the OSS external table. INSERT INTO external_oss_db.lindorm_table_2 SELECT * FROM lindorm_table.spark_test.tb; -- Read the data of the OSS external table. SELECT * FROM external_oss_db.lindorm_table_2;
下表に、各パラメーターを説明します。
パラメーター
必須
説明
spark.adb.eni.enabled
あり
Elastic Network Interface (ENI) を有効にするかどうかを指定します。
外部テーブルを使用して他の外部データソースにアクセスする場合は、ENIを有効にする必要があります。 有効な値:
true
false
この例では、このパラメーターを
true
に設定します。spark.adb.eni.vswitchId
あり
準備中に取得されるLindormインスタンスのvSwitch ID。
spark.adb.eni.securityGroupId
あり
準備中に取得したLindormインスタンスのセキュリティグループID。
spark.sql.ca talog.lindorm_table
あり
Spark SQLがデータソースを構成するために使用するメソッド。
このパラメーターは自動的に
com.alibaba.lindorm.ldspark.datasources.v2.LindormCatalog
に設定されます。説明talog_nameパラメーターのカスタム
catalog_name
値を設定できe spark.sql.catalog.ca。 この例では、lindorm_table
が使用されています。spark.sql.ca talog.lindorm_table.url
あり
手順1で取得したHBase Java APIによるアクセス用のVPCエンドポイント。
spark.sql.ca talog.lindorm_table.username
あり
LindormTableのユーザー名とパスワード。
パスワードを忘れた場合は、LindormTableのクラスター管理システムでパスワードを変更できます。
spark.sql.ca talog.lindorm_table.password
あり
瓶
あり
ステップ2でダウンロードされたパッケージのOSSパス。 この例では、
oss:// testBucketName/hbase_jars/*
が使用されています。場所
あり
外部テーブルのOSSパス。 形式:
oss://<bucketname/database/table>
この例では、oss:// testBucketName/warehouse/db/lindorm_table_2
が使用されています。説明<bucketname/database/table>
パラメーターを実際のOSSパスに置き換えます。[実行] をクリックします。
Sparkジョブを実行したら、スパークJAR開発ページをクリックし、ログのアクション列にアプリケーションタブでテーブルデータを表示します。 詳細については、「Sparkエディター」をご参照ください。