从 S3 存储桶中读取大量 CSV 文件

     2023-04-15     158

关键词:

【中文标题】从 S3 存储桶中读取大量 CSV 文件【英文标题】:Read large number of CSV files from S3 bucket 【发布时间】:2020-09-08 23:16:42 【问题描述】:

我想从 S3 存储桶中读取大量 csv 文件。 CSV 文件位于不同的分区中。我正在使用 Boto3 列出所有到 csv 的路径。然后使用 for 循环在列表上迭代,将 csv 文件读入 spark 数据帧。我需要一种更好的优化方法来从 S3 路径读取大量文件,因为循环是一种线性方法,需要大量时间才能完成。 列出所有对象:

self.all_objects = [file_path['Key'] for resp_content in self.s3.get_paginator("list_objects_v2").paginate(Bucket='bucketName') for file_path in resp_content['Contents']]

循环读取每个 CSV 文件:

csv_df = self.spark.read.format("csv").option("header", "true").load(s3_path)

我还想将所有数据框合并在一起以创建一个镶木地板文件。

提前感谢,如果有人对此有好的解决方案,请提出建议。

【问题讨论】:

【参考方案1】:

读取包含多个文件夹的 csv 文件(Spark + Scala):

import org.apache.spark.sql.types.IntegerType, StringType, StructField, StructType

val sourcesFolders = List("/home/mykolavasyliv/tmp/source1/", "/home/mykolavasyliv/tmp/source2/", "/home/mykolavasyliv/tmp/source3/")

//  :~/tmp$ tree
//    .
//  ├── source1
//  │   └── person-data-1.csv
//  ├── source2
//  │   └── person-data-2.csv
//  └── source3
//      └── person-data-3.csv

//  person-data-1.csv:
//  source-1-1,Mykola ,23,100
//  source-1-2,Jon,34,76
//  source-1-3,Marry,25,123

//  person-data-2.csv
//  source-2-1,Mykola ,23,100
//  source-2-2,Jon,34,76
//  source-2-3,Marry,25,123

//  person-data-3.csv
//  source-3-1,Mykola ,23,100
//  source-3-2,Jon,34,76
//  source-3-3,Marry,25,123




// Read csv files not use schema

val sourceDF = spark.read.csv(sourcesFolders:_*)

sourceDF.show(false)
//  +----------+-------+---+---+
//  |_c0       |_c1    |_c2|_c3|
//  +----------+-------+---+---+
//  |source-1-1|Mykola |23 |100|
//  |source-1-2|Jon    |34 |76 |
//  |source-1-3|Marry  |25 |123|
//  |source-2-1|Mykola |23 |100|
//  |source-2-2|Jon    |34 |76 |
//  |source-2-3|Marry  |25 |123|
//  |source-3-1|Mykola |23 |100|
//  |source-3-2|Jon    |34 |76 |
//  |source-3-3|Marry  |25 |123|
//  +----------+-------+---+---+



// Read csv files use schema

val schema = StructType(
  List(
    StructField("id", StringType, true),
    StructField("name", StringType, true),
    StructField("age", IntegerType, true),
    StructField("NotKnow", IntegerType, true)
  )
)

val source2DF = spark.read.schema(schema).csv(sourcesFolders:_*)

source2DF.show(false)
//  +----------+-------+---+-------+
//  |id        |name   |age|NotKnow|
//  +----------+-------+---+-------+
//  |source-1-1|Mykola |23 |100    |
//  |source-1-2|Jon    |34 |76     |
//  |source-1-3|Marry  |25 |123    |
//  |source-2-1|Mykola |23 |100    |
//  |source-2-2|Jon    |34 |76     |
//  |source-2-3|Marry  |25 |123    |
//  |source-3-1|Mykola |23 |100    |
//  |source-3-2|Jon    |34 |76     |
//  |source-3-3|Marry  |25 |123    |
//  +----------+-------+---+-------+

【讨论】:

虽然只有代码的答案可能会回答这个问题,但您可以通过为您的代码提供上下文、此代码工作的原因以及一些文档参考以供进一步阅读,从而显着提高您的答案质量. @PranavHosangadi 对不起。谢谢你。固定。

如何从 S3 存储桶中仅读取最近 7 天的 csv 文件

】如何从S3存储桶中仅读取最近7天的csv文件【英文标题】:Howtoreadonlylatest7dayscsvfilesfromS3bucket【发布时间】:2022-01-2214:50:59【问题描述】:我正在尝试弄清楚,我们如何使用SparkScala从s3存储桶中的文件夹中仅读取最近7天的文件。... 查看详情

Pyspark 从 S3 存储桶读取 csv 文件:AnalysisException:路径不存在

】Pyspark从S3存储桶读取csv文件:AnalysisException:路径不存在【英文标题】:PysparkreadcsvfilefromS3bucket:AnalysisException:Pathdoesnotexist【发布时间】:2021-10-1500:10:45【问题描述】:在GoogleColab中,我试图让PySpark从S3存储桶中读取csv。这是我... 查看详情

使用 Node 从 s3 存储桶中读取 txt 文件的内容

】使用Node从s3存储桶中读取txt文件的内容【英文标题】:Readcontentoftxtfilefroms3bucketwithNode【发布时间】:2020-08-2916:18:48【问题描述】:我想读取存储在s3存储桶中的.txt文件的内容。我试过了:vars3=newAWS.S3(apiVersion:\'2006-03-01\');varpara... 查看详情

始终从 spark 的 s3 存储桶中读取最新文件夹

】始终从spark的s3存储桶中读取最新文件夹【英文标题】:Alwaysreadlatestfolderfroms3bucketinspark【发布时间】:2020-01-2722:02:59【问题描述】:下面是我的s3存储桶文件夹结构的样子,s3://s3bucket/folder1/morefolders/$folder_which_I_want_to_pick_latest/... 查看详情

使用 lambda 中的 pandas 从 s3 读取 excel 文件并转换为 csv

...0914:02:19【问题描述】:我正在尝试使用lambda中的python从s3存储桶中读取excel文件,使用pandas进行一些操作,将其转换为csv并放回同一个存储桶。importpandasaspdim 查看详情

如何将 s3 数据从一个 EMR 集群读取到另一个 EMR 集群?

...0407:07:17【问题描述】:我有两个EMR集群,一个EMR集群在S3存储桶中有CSV文件。现在,我有另一个EMR集群,必须从EMR(s3)存储桶中读取数据。请找到截图。如何从另一个EMRs3存储桶中读取数据?输入源是用于读取csv 查看详情

scala- 从 S3 存储桶读取文件

】scala-从S3存储桶读取文件【英文标题】:scala-ReadfilefromS3bucket【发布时间】:2018-10-1314:26:59【问题描述】:我想从S3存储桶中读取特定文件。在我的S3存储桶中,我将拥有如此多的对象(目录和子目录)。我想遍历所有对象并且... 查看详情

使用 aws.s3 包从 AWS S3 一次读取多个 CSV 文件对象

...9-08-2209:17:04【问题描述】:我需要使用R中的aws.s3包从AWSS3存储桶中读取多个csv文件,最后将这些文件合并到单个数据框中以进行进一步分析。假设我的S3存储桶中有几个文件,例如"variables_2 查看详情

从静态网页上传 csv 文件到 S3 存储桶

】从静态网页上传csv文件到S3存储桶【英文标题】:UploadcsvfiletoS3bucketfromstaticwebpage【发布时间】:2021-10-1419:15:13【问题描述】:我正在尝试创建一个上传网页以将csv文件放入S3存储桶中。我按照他们网站上的教程进行操作。https:/... 查看详情

我的 lambda 从 S3 存储桶中读取 JSON 文件,并将数据摄取到 Redshift 表中。但我遇到了“频谱扫描错误”[关闭]

】我的lambda从S3存储桶中读取JSON文件,并将数据摄取到Redshift表中。但我遇到了“频谱扫描错误”[关闭]【英文标题】:MylambdareadsJSONfilefromS3bucketanditwillingestdataintoRedshifttable.ButIhaveencountereda\'SpectrumScanError\'[closed]【发布时间】:202... 查看详情

将文件从私有 S3 存储桶读取到 pandas 数据帧

】将文件从私有S3存储桶读取到pandas数据帧【英文标题】:ReadingafilefromaprivateS3buckettoapandasdataframe【发布时间】:2016-06-1815:12:53【问题描述】:我正在尝试将CSV文件从私有S3存储桶读取到pandas数据帧:df=pandas.read_csv(\'s3://mybucket/file... 查看详情

从 s3 到 Redshift 的数据复制:清单与我需要下载的文件位于不同的存储桶中

...Redshift的数据复制:清单与我需要下载的文件位于不同的存储桶中【英文标题】:DataCopyfroms3toRedshift:ManifestisindifferentbucketthanfilesIneedtodownload【发布时间】:2017-11-1614:56:03【问题描述】:我正在尝试将数据从s3中的大量文件复制到R... 查看详情

当我们从 s3 中的 csv 文件读取数据并在 aws athena 中创建表时如何跳过标题。

...布时间】:2017-08-0315:37:21【问题描述】:我正在尝试从s3存储桶中读取csv数据并在AWSAthena中创建一个表。我的表在创建时无法跳过我的CSV文件的标题信 查看详情

从 pyspark 访问 S3 存储桶中的文件

】从pyspark访问S3存储桶中的文件【英文标题】:AccessingfilesinS3bucketfrompyspark【发布时间】:2017-10-2000:05:41【问题描述】:我正在尝试从pyspark代码访问存储在S3存储桶中的文件。它给了我附加的错误消息。该程序在处理本地存储的... 查看详情

定期轮询具有大量文件的 AWS S3 存储桶中的新文件?

】定期轮询具有大量文件的AWSS3存储桶中的新文件?【英文标题】:PollperiodicallyfornewfilesinAWSS3bucketshavingalotoffile?【发布时间】:2016-07-0508:12:59【问题描述】:我遇到需要轮询AWSS3存储桶以获取新文件的情况。此外,它不仅仅是一... 查看详情

从 S3 将 CSV 数据加载到 Jupyter Notebook

...时间】:2018-07-1121:17:38【问题描述】:我在AmazonCloud的S3存储桶中有多个CSV文件(50GB)。我正在尝试使用以下代码在JupyterNotebook(使用Python3内核)中读取这些文件:importboto3fromboto3importsessioni 查看详情

列出具有公共读取权限的 S3 对象(在私有存储桶中)

】列出具有公共读取权限的S3对象(在私有存储桶中)【英文标题】:ListS3objectswithpublicreadpermissions(inprivatebucket)【发布时间】:2019-02-0815:29:46【问题描述】:我想保护位于S3存储桶中的文件,并确保没有共享敏感文件。我知道有... 查看详情

如何从亚马逊 s3 存储桶中删除文件?

】如何从亚马逊s3存储桶中删除文件?【英文标题】:howtodeletefilesfromamazons3bucket?【发布时间】:2011-03-0914:53:01【问题描述】:我需要用python编写代码,从Amazons3存储桶中删除所需的文件。我可以连接到Amazons3存储桶,也可以保存... 查看详情