Scala 如何从数据帧中提取文件和过滤条件?

Scala 如何从数据帧中提取文件和过滤条件?,scala,apache-spark,Scala,Apache Spark,我有一个数据框,其中包含要处理的CSV文件的名称 数据框的第一列文件名为FileName,FilterData为第二列,还有一些额外的列(将每列视为字符串),如下所示: FileName FilterData col3 col4 testFile.txt XF value1 value2 testFile1.txt XM value3 value4 testFile.txt 1,XF,data1 2,XM,data2 testFi

我有一个数据框,其中包含要处理的CSV文件的名称

数据框的第一列文件名为
FileName
FilterData
为第二列,还有一些额外的列(将每列视为
字符串
),如下所示:

FileName     FilterData   col3     col4
testFile.txt   XF        value1   value2
testFile1.txt  XM        value3   value4
testFile.txt
1,XF,data1
2,XM,data2

testFile.txt
1,XF,data3
2,XM,data4
CSV文件(在
FileName
列下)在上可用,总大小为5 TB

我想读取第一列(即文件名),然后打开/读取文件,并获取与
FilterData
中的模式匹配的记录

testFile.txt
testFile1.txt
如下所示:

FileName     FilterData   col3     col4
testFile.txt   XF        value1   value2
testFile1.txt  XM        value3   value4
testFile.txt
1,XF,data1
2,XM,data2

testFile.txt
1,XF,data3
2,XM,data4
我想获取文件的数据(从dataframe读取第一列),然后根据FilterData列过滤记录,即,如果记录包含FilterData字符串,请选择此记录(它将始终仅为1条记录),然后将此数据与dataframe的col3和col4合并。以下是我的预期产出:

1  XF  data1  value1  value2
2  XM  data3  value3  value4

您确定要使用Spark来处理大型数据集(而不是代替读取小型配置文件)


我要做的是
yourFileNameDataset.collect
(请参阅),并让行在本地对行进行模式匹配,以访问要筛选的文件名和值。这相当于Scala(实际上不太像Spark)

然后,我将
spark.read.csv
(请参阅和API)并
根据源数据框中给定的字段和值过滤
。这是Scala与一些Spark开发的混合

示例代码 (不是很有效,当然也没有利用并行处理等Spark功能,但考虑到标准,它确实可以工作)


你是对的,我不是在处理海量数据集,而是在处理小文件;但是文件的数量非常巨大,这使得我的组合数据集非常庞大。我会和托洛卡一起试试。谢谢。我不太明白你的问题。这就是我想做的。小型csv文件的名称位于数据框中。因此,我应该读取数据帧的第一列(这是一个文件名),然后打开(读取)这个文件,并从数据帧中获取与FilterData模式匹配的记录。谢谢。这正是我想要的。创建数据帧的初始文件有多大?我的初始文件有几千条记录,但我的初始文件也是多个文件。一旦我有了逻辑,循环就不应该是一个问题。我已经让它几乎工作了。我遇到了一些无法使用您的代码的问题。稍后我会发布我的解决方案。谢谢你的帮助!!