sc.TextFile() 函数提交多个File

在写 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( filename1 + "," + filename2 + "," + filename3)

修改后程序就可以正常运行了,截图如下所示:

调整后,成功运行结束

可见 sc.TextFile( ) 的参数接收的一个 file,或者一个 list_str 的格式,进去该函数以后首先应该会有 split 操作重新转换成 list,然后再寻找所有的 File 数据,有兴趣的同学可以找源码看下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容