如何解决通过 URL 从 Sagemaker 访问存储在 S3 上的大型 BDF 和 EDF 文件,并使用 mne 库读取它们
我在 S3 上有一个存储桶和一个 SageMaker 笔记本。我尝试访问存储在 S3 存储桶中的相当大的 BDF 和 EDF 文件(1-2 GB),而不将它们上传到SageMaker 音量。
我还需要通过 URL 访问这些文件,因为 EDF 处理函数 mne.io.read_raw_edf
接收文件的绝对路径作为输入。
S3 存储桶与 Sagemaker 笔记本实例 位于同一区域。与笔记本实例关联的 IAM 角色被授予访问 S3 存储桶的权限。
首先,我尝试使用 this question 中的方法,该方法描述了如何读取 .csv
文件。虽然在我的例子中它适用于 .csv
个文件,但它在 .edf
个文件中失败了。
import pandas as pd
from sagemaker import get_execution_role
role = get_execution_role()
bucket='my-bucket'
key = 'train.edf'
data_location = 's3://{}/{}'.format(bucket,key)
mne.io.read_raw_edf(data_location)
FileNotFoundError: [Errno 2] No such file or directory: '/home/ec2-user/SageMaker/s3:/my-bucket/train.edf'
在这里,我面临一个不是我完成的路径堆叠。我不太明白为什么 pd.read_csv
正常读取路径,不像 mne.io.read_raw_edf
,它似乎堆叠本地路径和服务器路径。
然后我发现 an answer 是一个非常相似的问题,但遇到了与堆叠路径非常相似的问题。
import boto3
bucket_location = boto3.client('s3').get_bucket_location(Bucket=bucket)
object_url = "https://s3-{0}.amazonaws.com/{1}/{2}".format(
bucket_location['LocationConstraint'],bucket,key)
object_url
'https://s3-us-west-2.amazonaws.com/my-bucket/train.edf'
这里可以看到路径存储正常。
mne.io.read_raw_edf(object_url)
FileNotFoundError: [Errno 2] No such file or directory: '/home/ec2-user/SageMaker/https:/s3-us-west-2.amazonaws.com/my-bucket/train.edf'
mne.io.read_raw_edf
再次执行奇怪的堆叠。
最后,我尝试遵循this article中描述的方法。
s3 = boto3.client("s3",region_name='us-west-2',aws_access_key_id='access_key_id',aws_secret_access_key='secret_access_key')
share_url = s3.generate_presigned_url(ClientMethod="get_object",ExpiresIn=3600,Params={"Bucket": bucket,"Key": key})
share_url
'https://my-bucket.s3.amazonaws.com/train.edf?AWSAccessKeyId=access_key_id&Signature=signature&Expires=1616777253'
路径似乎又正常了。
mne.io.read_raw_edf(share_url)
NotImplementedError: Only EDF files are supported by read_raw_edf,got edf?awsaccesskeyid=access_key_id&
signature=signature&expires=1616777253
但在这里我又遇到了另一个奇怪的 mne.io.read_raw_edf
行为。不再堆叠,但路径被裁剪。
我认为这可能是 mne.io.read_raw_edf
本身的问题,但我从未在 Amazon 产品之外遇到过这样的事情。
通过 URL 访问 BDF 和 EDF 文件是否有意义,还是将文件上传到 SageMaker 更好体积?如果这个问题看起来很幼稚,我深表歉意。我已经花了几天时间解决这个问题,但我需要尽快解决它,因为 Amazon 在笔记本处于活动状态时每小时收取费用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。