通过 URL 从 Sagemaker 访问存储在 S3 上的大型 BDF 和 EDF 文件,并使用 mne 库读取它们

问题描述

我在 S3 上有一个存储桶和一个 SageMaker 笔记本。我尝试访问存储在 S3 存储桶中的相当大的 BDFEDF 文件(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 访问 BDFEDF 文件是否有意义,还是将文件上传SageMaker 更好体积?如果这个问题看起来很幼稚,我深表歉意。我已经花了几天时间解决这个问题,但我需要尽快解决它,因为 Amazon 在笔记本处于活动状态时每小时收取费用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)