小编And*_*aul的帖子

将数据从 S3 加载到 dask 数据帧

只有在将文件公开后将“anon”参数更改为 True 时,我才能加载数据。

df = dd.read_csv('s3://mybucket/some-big.csv',  storage_options = {'anon':False})
Run Code Online (Sandbox Code Playgroud)

出于明显的原因,不建议这样做。如何安全地从 S3 加载数据?

python dask dask-distributed

3
推荐指数
1
解决办法
4226
查看次数

将整个文件夹从本地移动到 S3

我必须将文件夹从本地移动到 s3。我想知道是否有办法做到这一点。

我的文件夹包含嵌套子文件夹,其中包含文件(通常为 .pdf 或 .doc 或 docx)。

s3fs我知道我可以使用(https://s3fs.readthedocs.io/en/latest/api.html )将单个文件从本地移动到 s3 :

S3FileSystem.put(filename, path, **kwargs)  Stream data from local filename to file at path
Run Code Online (Sandbox Code Playgroud)

我的代码看起来像

def upload_data(filepath, file_name):
    s3 = s3fs.S3FileSystem()
    s3_path = f"name-of-my-bucket/{file_name}"
    s3.put(filepath, s3_path)
Run Code Online (Sandbox Code Playgroud)

然而,这允许我上传单个文件。我想发送整个文件夹。

我可以递归地执行此操作,将每个文件一一添加,但是:

1)我认为如果我可以发送文件夹会更容易。

2)维护文件夹的结构会更困难。这意味着我的本地文件folders/subfolders/myfile.pdf将保存在 s3 中,而mypdf.pdf不是folders/subfolders/myfile.pdf

python amazon-s3

3
推荐指数
1
解决办法
6475
查看次数

xattr/扩展属性对于 /tmp 中的文件不可设置,而在同一安装上的 $home 中工作正常

我正在 Linux/Fedora 下使用扩展文件属性,目前我遇到了一些困难,因为我无法添加/更改文件的属性,而在/tmp我家里它工作正常 - 虽然两个路径都在同一个挂载点上,即,

/dev/mapper/fedora-root on / type ext4 (rw,relatime,seclabel,data=ordered)
Run Code Online (Sandbox Code Playgroud)

例如,我可以成功添加和检索主目录中文件的属性,例如

> setfattr -n user.test.md5 -v 58d8e4cd0e60facf386838cbe8b11767 ~/foo.bar
> getfattr -n user.test.md5 ~/foo.bar 
  # file: foo.bar
  user.test.md5="58d8e4cd0e60facf386838cbe8b11767"
Run Code Online (Sandbox Code Playgroud)

但是,对于 中的同一文件,同样会失败/tmp

> cp ~/foo.bar /tmp/foo.bar
> setfattr -n user.test.md5 -v 58d8e4cd0e60facf386838cbe8b11767 /tmp/foo.bar 
  setfattr: /tmp/foo.bar: Operation not supported
Run Code Online (Sandbox Code Playgroud)

我假设,对扩展属性的支持仅取决于使用 xattr 支持“正确”安装的文件系统。但是,它似乎也依赖于目录(??),我想知道,是什么阻止我在 /tmp 中设置扩展属性以及如何更改它?(这似乎与 SELinux 无关——至少我在审核日志中没有找到任何内容。)

linux file-attributes tmpfs xattr

2
推荐指数
1
解决办法
3220
查看次数

将数据中心的单个分区上的数十亿个文件迁移到s3的最佳方法?

我们有一个数据中心,带有一个到AWS的10G直接连接电路.在数据中心,我们有一个IBM XIV存储基础架构,其GPFS文件系统在单个顶级目录中包含1.5亿个图像(每个约50k).我们可以整天争论这是多么愚蠢,但我宁愿为我的任务寻求建议,将所有这些文件转移到s3桶中.

我不能使用任何物理传输解决方案,因为数据中心被物理锁定并且获得本地物理清除是一个为期6个月的过程.

执行此文件迁移的最佳方法是什么?

我到目前为止最好的想法是在AWS中构建EC2 linux服务器,使用s3fs-fuse安装s3目标存储桶(https://github.com/s3fs-fuse/s3fs-fuse/wiki/Fuse-Over-Amazon)作为EC2服务器上的文件系统,然后在持有GPFS挂载的数据中心服务器和EC2服务器之间运行一些netcat + tar命令.我在另一篇文章中找到了这个建议:目标框:nc -l -p 2342 | tar -C/target/dir -xzf - 源框:tar -cz/source/dir | nc Target_Box 2342

在我踏上这可能需要一个月的任务,我想看看是否有人在这里有一个更好的方式来做到这一点?

copy file amazon-s3 s3fs

2
推荐指数
1
解决办法
406
查看次数

上传的文件夹不会显示

我在将文件夹上传到我的 google-cloud-storage 存储桶时遇到问题:它们不会显示在已安装的驱动器 /mnt/willferbucket 中(使用 gcsfuse)

我是否通过 webfrontend 或使用 gsutil 上传它们并不重要,唯一显示的文件夹是我创建的文件夹(不是上传!,通过 webfrontend 或直接在安装的驱动器上上传并不重要,在下面的示例中:“canvas ”和“打印”,所以这是有效的)

所以..安装的驱动器上的“ls”看起来像这样:

root@ubuntu-2:/mnt/willferbucket# ls
canvas  helloWorld.py  helloWorldSimple.py  prints  test.txt
Run Code Online (Sandbox Code Playgroud)

但正如您所看到的,使用 gsutil 时:

我上传的文件夹显示出来,我可以下载(在网络前端中相同:它们显示):

root@ubuntu-2:/mnt/w# gsutil ls gs://willferbucket
gs://willferbucket/helloWorld.py
gs://willferbucket/helloWorldSimple.py
gs://willferbucket/test.txt
gs://willferbucket/canvas/
gs://willferbucket/prints/
gs://willferbucket/test/
gs://willferbucket/testfolder/
gs://willferbucket/tst/
Run Code Online (Sandbox Code Playgroud)

我无法找出这种行为的原因是什么:(也许有人可以提供帮助或面临同样的问题

感谢您的回复

cloud-storage google-cloud-storage google-cloud-platform gcsfuse

2
推荐指数
1
解决办法
1558
查看次数

使用 python 库 s3fs 写入 AWS S3 因 EntityTooLarge 失败

我知道 AWS S3 API 对上传大于 5 GB 的文件有限制。在boto3我应该使用multipart

我正在尝试配置S3File对象s3fs以执行相同的操作,但我无法弄清楚。

我正在使用(作为错误示例)一个非常基本的代码:

import s3fs

s3 = s3fs.S3FileSystem()

with s3.open("s3://bucket/huge_file.csv", "w") as s3_obj:
   with open("huge_file.csv") as local_file
       s3_obj.write(local_file.read())
Run Code Online (Sandbox Code Playgroud)

哪里huge_file.csv有尺寸 > 5Gb

我得到的错误是

...
botocore.exceptions.ClientError: An error occurred (EntityTooLarge) when calling  the PutObject operation: Your proposed upload exceeds the maximum allowed size

...

File ... /s3fs/core.py" line 1487, in __exit__

self.close()

File ... /s3fs/core.py" line 1454, in close
Run Code Online (Sandbox Code Playgroud)

所以,问题是如何(如果可能)我可以设置s3fs上传大于5Gb(How shoud …

python boto3

2
推荐指数
1
解决办法
2117
查看次数

新手/芭蕾舞女演员在运行构建时遇到 gson 问题

我是芭蕾舞女演员的新手。我将平台库作为可执行 jar 导入,这是使用 jclouds 的 openstack swift api 在 java 中的互操作方法调用。

JCLOUDS 存在一个已知问题,即在Spring Boot 应用程序中使用 Rackspace 时,由于高于 2.5 的 gson 版本问题与 jclouds Apache jclouds java.lang.NoSuchMethodError不兼容而无法构建 。

尝试从我的 bal 文件中执行这个 inter op 方法调用时,我遇到了同样的错误,该文件是在芭蕾舞演员构建期间构建的。检查芭蕾舞女演员在项目构建期间创建的 jar 后,发现该 jar 是使用一组预构建的 gson 2.7 依赖项创建的。

有什么办法可以改变这种依赖关系,我也不太清楚芭蕾舞女演员如何在 bal 文件的构建阶段打包所有这些 jar。

这将有助于详细了解调用 ballerina build 时会发生什么。

jclouds ballerina

2
推荐指数
1
解决办法
98
查看次数

将s3fs挂载为Docker卷

因此,我只想将来自亚马逊的s3存储桶添加到我的docker群中。我在互联网上看到了许多“可能的”解决方案,但是我无法连接它们以将存储桶中的内容添加为卷。

所以我最后尝试过的命令是statet命令(s3fs 无法安装在docker容器内吗?):

docker run --rm -t -i --privileged -e AWS_ACCESS_KEY_ID=XXXX -e AWS_SECRET_ACCESS_KEY=XXXX -e AWS_STORAGE_BUCKET_NAME=XXXX docker.io/panubo/s3fs bash
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是如果我现在退出bash,容器将停止,并且我无法执行任何操作。是否可以保留此东西并将其添加为卷?

还是将存储桶安装在Docker实例上,然后将其添加为本地卷,将是更好的解决方案?这会是个更好的主意吗?

amazon-s3 amazon-web-services s3fs docker

1
推荐指数
1
解决办法
2560
查看次数

无法在 goofys 安装的文件夹中创建 zip 文件

我尝试使用goofys在安装目录中创建一个 zip 文件,但失败并显示以下错误消息:

$ su - foo-user
$ zip hoge.zip hoge
updating: hoge
zip I/O error: Operation not supported
zip error: Input file read failure (was zipping hoge)
Run Code Online (Sandbox Code Playgroud)

有什么线索可以解决这个问题吗?

我尝试过的

在其他目录中制作 zip 文件并将其复制到挂载点会成功。所以这看起来不像许可/授权问题。

$ zip /tmp/hoge.zip hoge
  adding: hoge (stored 0%)
$ ll /tmp/hoge.zip
-rw-rw-r-- 1 foo-user foo-user   163 Apr  4 17:52 hoge.zip
$ cp /tmp/hoge.zip (path of the mount-point)
$ ll
total 5
-rw-r--r-- 1 foo-user foo-user    5 Mar 26 10:56 hoge
-rw-r--r-- 1 foo-user foo-user  163 Apr …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-linux goofys

1
推荐指数
1
解决办法
1690
查看次数

Python:s3中的递归glob

我正在尝试从 s3 中获取子目录和子目录的子目录(等等)内的镶木地板文件路径列表。

如果是我的本地文件系统,我会这样做:

import glob 

glob.glob('C:/Users/user/info/**/*.parquet', recursive=True)
Run Code Online (Sandbox Code Playgroud)

我试过使用glob方法,s3fs但是它没有递归 kwarg。

是否有我可以使用的功能或我需要自己实现它?

python recursion glob amazon-s3 boto3

1
推荐指数
3
解决办法
6579
查看次数