在写 Spark 程序时,如果数据源分散在不同位置,则需要在 sc.TextFile 的时候指定多个数据源
我们可能会想到的一种错误写法是:
错误写法:sc.TextFile( filename1, filename2, filename3)
经过试验发现,如果按照这种写法,在运行 Spark 的时候会报错退出,通过 applicationId 从 yarn logs 下载日志后,Traceback 找到 sc.textFile( ) 报错,错误提示没有这种方法,如下所示:
Log 中显示 sc.TextFile( ) 方法异常
Apache 上有一个关于这个的讨论:"How to read multiple text files into a single RDD?"
链接是:Apache 讨论链接
主要提出的方法有三种:1、将多个文件变成一个 list 作为参数,准确的说是list_str,后面会详细解释,2、使用 union 连接,3、使用 repartition,我们这里采用最简单直接的第一种方法,修改后的写法是:
正确写法:sc.TextFile