当前位置: 首页 > 知识库问答 >
问题:

Spark读取多个CSV文件,每个文件一个分区

龙哲
2023-03-14

/tmp/data/myfile1.csv,/tmp/data/myfile2.csv,/tmp/data.myfile3.csv,/tmp/datamyfile4.csv

我希望将这些文件读入Spark DataFrame或RDD,并且希望每个文件都是DataFrame的一个解析。我怎么能这么做?

共有1个答案

史修明
2023-03-14

你有两个我能想到的选择:

1)使用输入文件名

与其尝试直接控制分区,不如将输入文件的名称添加到DataFrame中,并将其用于需要执行的任何分组/聚合操作。这可能是您最好的选择,因为它更符合spark的并行处理意图,您告诉它要做什么,并让它知道如何做。您可以使用如下代码执行此操作:

SELECT input_file_name() as fname FROM dataframe
from pyspark.sql.functions import input_file_name

newDf = df.withColumn("filename", input_file_name())
 类似资料:
  • 我在on文件夹的几个zip文件中有几个csv文件,例如: null zip中的一个csv是这样工作的: 你知道如何优化这个循环吗?

  • 如何在JMeter中将一个csv文件循环到另一个csv文件,其中第一个csv文件包含所有登录数据,另一个csv文件包含交易数据。我应该运行1个出纳员应该处理30笔交易的地方。

  • 我的问题是: > 如何使其与较大的文件一起工作? 有什么办法能让它快一点吗? 我的电脑有8GB的RAM,运行64位Windows 7,处理器是3.40GHz(不确定你需要什么信息)。

  • 问题内容: 我有一个文件,我想用Java读取并将其拆分为(用户输入)输出文件。这是我读取文件的方式: 如何将文件拆分为文件? 注意-由于文件中的条目数约为100k,因此我无法将文件内容存储到数组中,然后将其拆分并保存到多个文件中。 问题答案: 由于一个文件可能很大,因此每个拆分文件也可能很大。 例: 源文件大小:5GB 数字分割:5:目的地 档案大小:每个1GB(5个档案) 即使我们有这样的内存,

  • 我想让我的Jmeter从一个位置读取多个csv文件,比如C:\Jmeter\file。 当前,如果我在csv数据集配置下的'filename'中提供特定的csv文件名,Jmeter会识别该文件并执行我的脚本。 我不想对文件名进行硬编码,我想让jmeter从该位置自动读取。 我已经编写了BeenShell预处理器(因为我找不到任何简单的解决方案),这个程序从位置读取所有csv文件列表,并将它们存储在

  • 问题内容: 我对此进行了一些讨论,但还不太了解正确的解决方案:我想将S3中的数百个文件加载到RDD中。这是我现在的做法: 在不使用实际的阅读客户端: 我从在Scala中针对相同问题看到的答案中“翻译”了一下。我认为也可以将整个路径列表传递给,但是我不确定哪种是最佳做法。 问题答案: 根本的问题是,在s3中列出对象的速度确实很慢,并且每当执行树遍历时,看起来像目录树的方式都会降低性能(就像路径的通配