在使用阿里云EMR Serverless Spark的Notebook时,您可以通过Hadoop命令直接访问OSS或OSS-HDFS数据源。本文将详细介绍如何通过Hadoop命令操作OSS/OSS-HDFS。
前提条件
EMR Serverless Spark环境准备:
已创建Notebook会话,本文引擎版本以esr-4.1.1版本为例,详情请参见管理Notebook会话。
已创建Notebook开发,详情请参见Notebook开发。
OSS服务准备:
如需使用OSS-HDFS服务,需先开通此服务,具体操作请参见开通OSS-HDFS服务。
权限配置:
如需跨账号访问OSS/OSS-HDFS,必须配置相应的权限,具体操作请参见如何跨账号访问阿里云OSS。
说明本文示例中,在OSS控制台配置的授权操作为读/写,您可以根据实际情况进行相应的授权操作。
使用限制
仅以下引擎版本支持本文操作:
esr-4.x:esr-4.1.1及之后版本。
esr-3.x:esr-3.1.1及之后版本。
esr-2.x:esr-2.5.1及之后版本。
支持的操作类型
在当前版本中,您可以对OSS/OSS-HDFS进行以下操作,包括但不限于:
ls
:列出指定OSS/OSS-HDFS路径下的文件和目录。mv
:移动文件或目录。cp
:复制文件或目录。stat
:获取指定文件或目录的元数据。
您可以执行!hadoop fs -help
命令,查看相关帮助信息。
访问路径格式
OSS/OSS-HDFS的访问路径如下所示:
OSS路径格式:
oss://<bucketName>/<object-path>
OSS-HDFS路径格式:
oss://<bucketName>.<region>.oss-dls.aliyuncs.com/<object-path>
其中,涉及参数说明如下:
<bucketName>
:OSS Bucket名称。例如:my-bucket
。<region>
:OSS Bucket所在的地域,例如:cn-hangzhou
。<object-path>
:OSS Bucket中的文件路径。例如:spark/file.txt
或logs/
。
使用方法
在Notebook开发中,您可以通过 !hadoop fs
命令直接执行以下操作。
列出OSS路径内容(ls)
使用 -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)
使用 -mv
参数将文件或目录移动到目标路径。
!hadoop fs -mv oss://<bucketName>/<object-path>/source oss://<bucketName>/<object-path>/destination
例如,移动sr
路径下的file.txt
到user
路径下。如果目标路径已存在,文件将被覆盖。
!hadoop fs -mv oss://my-bucket/sr/file.txt oss://my-bucket/user/file.txt
复制文件或目录(cp)
使用 -cp
参数将文件或目录从源路径复制到目标路径。
!hadoop fs -cp oss://<bucketName>/<object-path>/source oss://<bucketName>/<object-path>/destination
例如,复制spark
路径下的file.txt
到spark2
路径下。如果目标路径已存在,文件将被覆盖。
!hadoop fs -cp oss://my-bucket/spark/file.txt oss://my-bucket/spark2/file.txt
查看文件或目录的元数据(stat)
使用 -stat
和合适的参数查看指定文件或目录的详细信息。
!hadoop fs -stat oss://<bucketName>/<object-path>/to/file
例如,查看file.txt
文件的基本元数据。
!hadoop fs -stat oss://my-bucket/spark/file.txt