我想知道当Spark摄取数据时,数据是在驱动程序中被摄取并发送给工作者,Spark是否指示节点从文件系统中读取数据?
我知道在火花流中,使用kafka源,显然,工作节点从kafka读取。但是,当从文件系统中读取时,我不确定它是如何工作的。
案例1
A - 从文件系统读取时假定 文件系统是HDFS
A.1 - 驱动程序是否读取文件并将数据传输给工作人员 在旅途中或他是否有工人阅读文件
A.2 - 原始分区是否取决于HDFS的分区方式?
案例2
B - 从文件系统本地文件系统或S3
的文件系统B.1 - 分区发生了什么,我们从HDFS读取或从本地文件系统读取算法是否会改变? (在后一种情况下,在依赖HDFS分区时会使用特殊算法吗? B.2 - 即使数据没有被分区,工作人员是否参与读取数据?
如果有人可以帮助澄清一下,那会有所帮助。感谢
答案 0 :(得分:2)
对于文件来源,driver program
仅读取文件的元数据。
驱动程序查看文件元数据 - 检查它是否存在,检查一下 如果文件是目录,则文件位于目录中,并检查它们的大小。 然后它将任务发送给工作人员,他们实际读取文件 内容。通讯基本上是“你读这个文件, 从这个偏移开始,这个长度。“