【发布时间】:2014-04-30 21:00:17
【问题描述】:
我需要处理分散在各个目录中的多个文件。我想将所有这些加载到一个 RDD 中,然后对其执行 map/reduce。我看到 SparkContext 能够使用通配符从单个目录加载多个文件。我不知道如何从多个文件夹加载文件。
以下代码sn-p失败:
for fileEntry in files:
fileName = basePath + "/" + fileEntry
lines = sc.textFile(fileName)
if retval == None:
retval = lines
else:
retval = sc.union(retval, lines)
这在第三个循环中失败并显示以下错误消息:
retval = sc.union(retval, lines)
TypeError: union() takes exactly 2 arguments (3 given)
这很奇怪,因为我只提供了 2 个参数。任何指针表示赞赏。
【问题讨论】:
-
..但第一个参数是
self。从docs,你需要sc.union([retval,lines]) -
让我试试。我很惊讶为什么这将适用于 2 个循环并在第三个循环中失败......
-
成功了。谢谢乔纳森!
-
我刚刚意识到您可以使用
sc.textFile(','.join(files))一口气阅读它们。
标签: python apache-spark