Spark上下文文本文件:加载多个文件

发布于 2021-01-29 15:08:13

我需要处理分散在各个目录中的多个文件。我想将所有这些加载到单个RDD中,然后在其上执行map /
reduce。我看到SparkContext能够使用通配符从单个目录加载多个文件。我不确定如何从多个文件夹加载文件。

以下代码段失败:

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)

鉴于我仅提供了两个参数,所以这很奇怪。任何指针表示赞赏。

关注者
0
被浏览
69
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    措辞如何呢?

    sc.union([sc.textFile(basepath + "/" + f) for f in files])
    

    在Scala中,SparkContext.union()有两种变体,一种采用vararg参数,另一种采用列表。Python中仅存在第二个(因为Python不具有多态性)。

    更新

    您可以使用一个textFile调用来读取多个文件。

    sc.textFile(','.join(files))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看