使用sc.textfile时,读取文本文件的是驱动程序还是工人?

px9o7tmv  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(405)

我想知道sc.textfile在spark中是如何使用的。我的猜测是,驱动程序一次读取一部分文件,并将读取的文本分发给工人进行处理。或者是工人自己直接从文件中阅读文本而没有司机的参与?

rpppsulh

rpppsulh1#

驱动程序查看文件元数据-检查它是否存在,如果是目录,检查目录中有哪些文件,并检查它们的大小。然后它将任务发送给工人,由工人实际读取文件内容。通信本质上是“从这个偏移量开始,以这个长度读取这个文件。”
hdfs将大文件分割成块,spark将(通常/经常)根据块分割任务,因此跳转到该偏移量的过程将是高效的。
其他文件系统的操作方式也类似,但并不总是如此。如果编解码器是不可拆分的,压缩也会扰乱这个过程。

bqjvbblv

bqjvbblv2#

textfile 创建rdd,如ref中所述:
可以使用sparkcontext的textfile方法创建文本文件rdd。
还有一个注解:
如果使用本地文件系统上的路径,则还必须在工作节点上的同一路径上访问该文件。将文件复制到所有worker或使用网络装载的共享文件系统。
这意味着您对驱动程序解析文件然后将数据分发给从属程序的猜测是错误的。

相关问题