【问题标题】:How to use dask to load and process many (>20k) .tsv files directly from an s3 bucket?如何使用 dask 直接从 s3 存储桶加载和处理许多(> 20k).tsv 文件?
【发布时间】:2020-11-29 23:16:37
【问题描述】:

我已尝试访问位于 AWS s3 上的癌症基因组图谱 (TCGA) 中的数据。

此代码使用 dask 加载 TCGA 中的所有 .tsv 文件

from dask.distributed import Client
import numpy as np
import dask.dataframe as dd

client = Client() # to see access dast status UI
dfs = dd.read_csv('s3://tcga-2-open/*/*.tsv', sep='\t')
np.max(dfs.chromosome.values)

但是,它的输出是空的:

dfs.chromosome的内容是:

Dask Series Structure:
npartitions=21651
    object
       ...
     ...  
       ...
       ...
Name: chromosome, dtype: object
Dask Name: getitem, 43302 tasks

我是否正确使用 dask?


澄清一下,TCGA 数据集中有很多 .tsv 文件,例如这里是其中之一:

$ aws s3 ls s3://tcga-2-open/0000093b-2b25-4781-9c21-7401eeb3ef88/ --no-sign-request
2020-04-29 21:27:41 3483218   TCGA-READ.72029f21-a40c-42f9-80ea-4c3d9d971279.gene_level_copy_number.tsv

实际上有 21,651 个 .tsv 文件:

import s3fs
s3 = s3fs.S3FileSystem(anon=False)
l = s3.glob('s3://tcga-2-open/*/*.tsv')
print(len(l))

【问题讨论】:

    标签: python amazon-s3 dask


    【解决方案1】:

    我看到文件名为

    's3://tcga-2-open/0040de75-8b0b-4954-9050-58063996b02e/LEONE_p_TCGA_103_243_257_N_GenomeWideSNP_6_C07_1300632.nocnv_grch38.seg.txt'
    

    即,以“txt”结尾,而不是“tsv”。大概 dask 所花费的时间只是简单地列出一百万个数据目录的内容(这应该通过s3fs 的最新未发布版本来改进)。

    【讨论】:

    • 不太正确:aws s3 ls s3://tcga-2-open/0000093b-2b25-4781-9c21-7401eeb3ef88/ --no-sign-request 将输出 2020-04-29 21:27:41 3483218 TCGA-READ.72029f21-a40c-42f9-80ea-4c3d9d971279.gene_level_copy_number.tsv
    • 也许你被“1000键”错误击中了;看看s3.glob('s3://tcga-2-open/*/*.tsv') 带给你什么。
    • 你如何定义s3?当我做s3 = boto3.resource('s3') 时它不起作用。
    • s3 = s3fs.S3FileSystem()
    • 和你一样,但是对于来自 master 的 s3fs(pip install https://github.com/dask/s3fs,可能需要升级)。
    猜你喜欢
    • 2022-11-03
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2021-04-11
    • 2019-05-30
    • 2013-04-29
    • 2018-12-31
    • 1970-01-01
    相关资源
    最近更新 更多