Alibaba Cloud E-MapReduce(EMR)Serverless Spark でノートブックを使用する場合、Hadoop コマンドを実行して Object Storage Service(OSS)または OSS-HDFS にアクセスできます。このトピックでは、EMR Serverless Spark ノートブックで Hadoop コマンドを実行して、OSS または OSS-HDFS 関連の操作を実行する方法について説明します。
前提条件
EMR Serverless Spark:
ノートブックセッションが作成されます。この例では、エンジンバージョンが esr-4.1.1 のノートブックを使用します。詳細については、「ノートブックセッションの管理」をご参照ください。
ノートブックが開発されます。詳細については、「ノートブックの開発」をご参照ください。
OSS:
OSS がアクティブ化され、バケットが作成されます。詳細については、「OSS のアクティブ化」および「バケットの作成」をご参照ください。
OSS-HDFS がアクティブ化されます。詳細については、「OSS-HDFS の有効化」をご参照ください。
権限構成:
アカウント間で OSS または OSS-HDFS リソースにアクセスするために必要な権限が構成されています。詳細については、「OSS リソースへのクロスアカウントアクセスを実装するにはどうすればよいですか?」をご参照ください。
説明この例では、OSS コンソールで OSS の [読み取りと書き込み] 権限が構成されています。ビジネス要件に基づいて権限を構成できます。
制限事項
このトピックで説明されている操作は、次のエンジンバージョンでのみサポートされています。
esr-4.x: esr-4.1.1 以降。
esr-3.x: esr-3.1.1 以降。
esr-2.x: esr-2.5.1 以降。
サポートされている操作
エンジンバージョン esr-4.1.1 のノートブックで実行できる操作の一部を次に示します。
ls: 特定の OSS または OSS-HDFS パス内のファイルとディレクトリを一覧表示します。mv: ファイルまたはディレクトリを移動します。cp: ファイルまたはディレクトリをコピーします。stat: 特定のファイルまたはディレクトリのメタデータを取得します。
!hadoop fs -help コマンドを実行して、ヘルプ情報を表示できます。
現在、Jindo CLI でサポートされているすべての FS コマンドをノートブックで使用できます。詳細なコマンド、例、および適用可能なシナリオについては、「Jindo CLI ユーザーガイド」をご参照ください。ノートブックで例を使用する場合は、jindo を !hadoop に置き換えてください。
アクセスパス形式
このセクションでは、OSS または OSS-HDFS のアクセスパス形式について説明します。
OSS:
oss://<bucketName>/<object-path>OSS-HDFS:
oss://<bucketName>.<region>.oss-dls.aliyuncs.com/<object-path>
パス内のパラメータ:
<bucketName>: OSS バケットの名前。例:my-bucket。region: OSS バケットが存在するリージョンの ID。例:cn-hangzhou。<object-path>: OSS バケット内のオブジェクトのパス。例:spark/file.txtまたはlogs/。
コマンドの使用法
ノートブックを開発するときは、!hadoop fs コマンドを実行して、次の操作を実行します。
特定のパス内のファイルとディレクトリを一覧表示する (ls)
次のコマンドを実行して、特定のパス内のファイルとディレクトリを一覧表示します。
!hadoop fs -ls oss://<bucketName>/<object-path>例 1: spark パスのファイルとディレクトリを一覧表示します。
!hadoop fs -ls oss://my-bucket/spark/次の図は出力を示しています。

例 2:
-lsコマンドとgrepコマンドを一緒に実行して、名前に user が含まれるファイルとディレクトリをクエリします。!hadoop fs -ls oss://my-bucket/spark/ | grep user次の図は出力を示しています。

ファイルまたはディレクトリを移動する (mv)
次のコマンドを実行して、ファイルまたはディレクトリを特定のパスに移動します。
!hadoop fs -mv oss://<bucketName>/<object-path>/source oss://<bucketName>/<object-path>/destinationたとえば、次のコマンドを実行して、file.txt ファイルを sr パスから user パスに移動します。 file.txt ファイルが宛先パスにすでに存在する場合、ファイルは上書きされます。
!hadoop fs -mv oss://my-bucket/sr/file.txt oss://my-bucket/user/file.txtファイルまたはディレクトリをコピーする (cp)
次のコマンドを実行して、ファイルまたはディレクトリをソースパスから宛先パスにコピーします。
!hadoop fs -cp oss://<bucketName>/<object-path>/source oss://<bucketName>/<object-path>/destinationたとえば、次のコマンドを実行して、file.txt ファイルを spark パスから spark2 パスにコピーします。 file.txt ファイルが宛先パスにすでに存在する場合、ファイルは上書きされます。
!hadoop fs -cp oss://my-bucket/spark/file.txt oss://my-bucket/spark2/file.txtファイルまたはディレクトリのメタデータを表示する (stat)
次のコマンドを実行して、特定のファイルまたはディレクトリの詳細を表示します。
!hadoop fs -stat oss://<bucketName>/<object-path>/to/fileたとえば、次のコマンドを実行して、file.txt ファイルのメタデータを表示します。
!hadoop fs -stat oss://my-bucket/spark/file.txt