AnalyticDB for MySQL Data Lakehouse Edition (V3.0) Sparkを使用すると、OSS-HDFSにアクセスできます。 このトピックでは、Sparkを使用してOSS-HDFSにアクセスする方法について説明します。
前提条件
AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターは、Object Storage Service (OSS) バケットと同じリージョンに作成されます。
ジョブのリソースグループがAnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターに作成されます。 詳細については、「リソースグループの作成」をご参照ください。
AnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスター用にデータベースアカウントが作成されます。
Alibaba Cloudアカウントを使用する場合は、特権アカウントを作成する必要があります。 詳細については、「データベースアカウントの作成」トピックの「特権アカウントの作成」セクションをご参照ください。
RAM (Resource Access Management) ユーザーを使用する場合は、特権アカウントと標準アカウントの両方を作成し、標準アカウントをRAMユーザーに関連付ける必要があります。 詳細については、「データベースアカウントの作成」および「データベースアカウントの関連付けまたは関連付けの解除」をご参照ください。
AnalyticDB for MySQLは、AliyunADBSparkProcessingDataRoleロールを引き受けて他のクラウドリソースにアクセスする権限があります。 詳細については、「権限付与の実行」をご参照ください。
OSS-HDFSは有効です。 詳細については、「OSS-HDFSの有効化とアクセス許可の付与」をご参照ください。
Spark JARモードでのOSS-HDFSデータの読み書き
OSS-HDFSへのアクセスに使用するプログラムを作成します。 次に、Sparkジョブに必要なJARパッケージにプログラムをコンパイルします。 この例では、JARパッケージの名前は
oss_hdfs_demo.jar
です。 サンプルコード:パッケージcom.aliyun.spark org.apache.spark.sql.SparkSessionをインポートする オブジェクトSparkHDFS { def main(args: Array[String]): Unit = { val sparkSession = SparkSession .builder() . appName("Spark HDFS TEST") .getOrCreate() val welcome = "hello, adb-spark" // 必要なデータを格納するHadoop分散ファイルシステム (HDFS) ディレクトリを指定します。 val hdfsPath = args(0); // 指定されたHDFSディレクトリにウェルカムストリングを格納します。 sparkSession.sparkContext.parallelize(Seq (ようこそ)).saveAsTextFile(hdfsPath) // 指定されたHDFSディレクトリからデータを読み取り、データを表示します。 sparkSession.sparkContext.textFile(hdfsPath).collect.foreach(println) } }
oss_hdfs_demo.jar
パッケージをOSS-HDFSにアップロードします。 詳細については、「Hadoop Shellコマンドを使用したOSS-HDFSへのアクセス」をご参照ください。AnalyticDB for MySQLコンソールにログインします。 ホームページの左上でリージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 Lake Warehouse Edition(3.0) タブで、管理するクラスターを見つけ、クラスターIDをクリックします。
左側のナビゲーションウィンドウで、
を選択します。エディターの上部で、ジョブリソースグループとSparkアプリケーションタイプを選択します。 この例では、バッチタイプが選択されています。
エディタで次のSparkコードを実行します。 テキストファイルの行の総数と最初の行の内容を表示します。
{ "args": ["oss:// testBucketName/data/oss_hdfs"] 、 "file": "oss:// testBucketName/data/oss_hdfs_demo.jar" 、 "name": "spark-on-hdfs" 、 "className": "com.aliyun.spark.SparkHDFS" 、 "conf": { "spark.driver.resourceSpec": "medium" 、 "spark.exe cutor.instances": 1、 "spark.exe cutor.resourceSpec": "medium" 、 "spark.adb.connectors": "jindo" } }
下表に、各パラメーターを説明します。
パラメーター
説明
args
Spark JARジョブの実行に必要な引数。 この例では、argsパラメーターでOSS-HDFSパスを指定する必要があります。
例:
oss:// testBucketName/data/oss_hdfs
file
JARパッケージのOSS-HDFSパス。
例:
oss:// testBucketName/data/oss_hdfs_demo.jar
name
Sparkアプリケーションの名前。
spark.adb.connectors
OSS-HDFSデータの読み取りに使用されるコネクタ。 この例では、
jindo
が使用されます。conf
Sparkアプリケーションに必要な設定パラメーター。Apache Sparkの設定パラメーターに似ています。 パラメーターは
key: value
形式である必要があります。 複数のパラメーターはコンマ (,) で区切ります。 Apache Sparkの設定パラメーターとは異なる設定パラメーター、またはAnalyticDB For MySQLに固有の設定パラメーターについては、「Sparkアプリケーション設定パラメーター」をご参照ください。実行 をクリックします。 Sparkコードを実行した後、Spark JAR開発ページの [アプリケーション] タブの [操作] 列で [ログ] をクリックしてログ情報を表示できます。 詳細については、「Sparkエディター」をご参照ください。
Spark SQLモードでのOSS-HDFSデータの読み書き
OSS-HDFS上にデータベースパスとテーブルパスを作成します。 詳細については、「Hadoop Shellコマンドを使用したOSS-HDFSへのアクセス」をご参照ください。 この例では、次のパスが作成されます。
データベースパス:
oss://{bucket}/jindo_test
テーブルパス:oss://{bucket}/jindo_test/tbl
OSS-HDFSへのアクセスに使用されるSpark SQL文を記述します。
SET spark.driver.resourceSpec=small; SET spark.exe cutor.instances=1; SET spark.exe cutor.resourceSpec=small; SET spark.adb.connectors=jindo; 存在しない場合はデータベースを作成しますjindo_test LOCATION 'oss://{bucket}/jindo_test '; jindo_testを使用します。CREATE TABLE IF NOT EXISTS tbl(id int, name string) LOCATION 'oss://{bucket}/jindo_test/tbl'; INSERT INTO tbl値 (1、'aaa'); SELECT * からtbl;
[今すぐ実行] をクリックします。
関連ドキュメント
Hudi外部テーブルの読み書き方法については、「Spark SQLを使用したHudi外部テーブルの読み書き」をご参照ください。
Delta外部テーブルの読み書き方法については、「Spark SQLを使用したDelta外部テーブルの読み書き」をご参照ください。