このトピックでは、EMR Serverless Spark に関するよくある質問に回答します。
DLF との互換性
データの読み取り時に "java.net.UnknownHostException" エラーが発生した場合はどうすればよいですか?
症状
[データ開発] で SQL クエリを実行して Data Lake Formation (DLF) 1.0 のデータテーブルからデータを読み取ると、
UnknownHostExceptionエラーが発生します。
原因
このエラーは通常、システムが指定されたホストを見つけられず、データテーブルのクエリに失敗するために発生します。
解決策
OSS との互換性
アカウント間で OSS リソースにアクセスするにはどうすればよいですか?
EMR Serverless Spark で Spark ジョブを実行する場合、2 つのメソッドを使用して、別の Alibaba Cloud アカウントに属する Object Storage Service (OSS) リソースにアクセスできます。ワークスペースレベルで権限を付与するか、タスクまたはセッションレベルで設定を構成できます。
ワークスペースレベル
ターゲット OSS バケットのバケットポリシーを構成して、Serverless Spark ワークスペースの実行ロールに読み取りおよび書き込み権限を付与します。次のステップに従ってください:
OSS コンソールのバケットポリシーページに移動します。
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、 を選択します。
[バケットポリシー] ページで、[GUI でルールを追加] タブで、[承認] をクリックします。
[承認] パネルでパラメーターを構成し、[OK] をクリックします。
パラメーター
説明
リソース
[バケット全体] を選択します。
被承認者
[他のアカウント] を選択します。プリンシパルを
arn:sts::<uid>:assumed-role/<role-name>/*に設定します。この値では:<uid>を Alibaba Cloud アカウント ID に置き換えます。<role-name>を Serverless Spark ワークスペースの実行ロールの名前に置き換えます。名前は大文字と小文字を区別します。実行ロールを表示するには、EMR Serverless Spark ワークスペースリストページに移動し、ターゲットワークスペースの [アクション] 列にある [詳細] をクリックします。デフォルトのロールは AliyunEMRSparkJobRunDefaultRole です。
必要に応じて他のパラメーターを構成します。詳細については、「GUI を使用したバケットポリシーの構成」をご参照ください。
タスクおよびセッションレベル
タスクまたはセッションを作成するときに、Spark 構成セクションに次の構成を追加して、ターゲット OSS バケットにアクセスします。
spark.hadoop.fs.oss.bucket.<bucketName>.endpoint <endpoint> spark.hadoop.fs.oss.bucket.<bucketName>.credentials.provider com.aliyun.jindodata.oss.auth.SimpleCredentialsProvider spark.hadoop.fs.oss.bucket.<bucketName>.accessKeyId <accessID> spark.hadoop.fs.oss.bucket.<bucketName>.accessKeySecret <accessKey>必要に応じて、次の情報を置き換えます。
<bucketName>: アクセスする OSS バケットの名前。<endpoint>: OSS のエンドポイント。<accessID>: OSS データへのアクセスに使用される Alibaba Cloud アカウントの AccessKey ID。<accessKey>: OSS データへのアクセスに使用される Alibaba Cloud アカウントの AccessKey Secret。
タスク実行エラー:OSS ファイルが存在しないか、アクセス権がありません
S3 との互換性
S3 にアクセスするにはどうすればよいですか?
タスクまたはセッションを作成するときに、Spark 構成セクションに次の構成を追加して S3 にアクセスします。
spark.hadoop.fs.s3.impl com.aliyun.jindodata.s3.JindoS3FileSystem
spark.hadoop.fs.AbstractFileSystem.s3.impl com.aliyun.jindodata.s3.S3
spark.hadoop.fs.s3.bucket.<bucketName>.accessKeyId <accessID>
spark.hadoop.fs.s3.bucket.<bucketName>.accessKeySecret <accessKey>
spark.hadoop.fs.s3.bucket.<bucketName>.endpoint <endpoint>
spark.hadoop.fs.s3.credentials.provider com.aliyun.jindodata.s3.auth.SimpleCredentialsProvider必要に応じて、次の情報を置き換えます。
<bucketName>: アクセスする S3 バケットの名前。<endpoint>: S3 のエンドポイント。<accessID>: S3 データへのアクセスに使用されるアカウントの AccessKey ID。<accessKey>: S3 データへのアクセスに使用されるアカウントの AccessKey Secret。
OBS との互換性
OBS にアクセスするにはどうすればよいですか?
タスクまたはセッションを作成するときに、Spark 構成セクションに次の構成を追加して OBS にアクセスします。
spark.hadoop.fs.obs.impl com.aliyun.jindodata.obs.JindoObsFileSystem
spark.hadoop.fs.AbstractFileSystem.obs.impl com.aliyun.jindodata.obs.OBS
spark.hadoop.fs.obs.bucket.<bucketName>.accessKeyId <accessID>
spark.hadoop.fs.obs.bucket.<bucketName>.accessKeySecret <accessKey>
spark.hadoop.fs.obs.bucket.<bucketName>.endpoint <endpoint>
spark.hadoop.fs.obs.credentials.provider com.aliyun.jindodata.obs.auth.SimpleCredentialsProvider必要に応じて、次の情報を置き換えます。
<bucketName>: アクセスする OBS バケットの名前。<endpoint>: OBS のエンドポイント。<accessID>: OBS データへのアクセスに使用されるアカウントの AccessKey ID。<accessKey>: OBS データへのアクセスに使用されるアカウントの AccessKey Secret。