关键词:
【中文标题】从 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存储桶,也可以保存... 查看详情