开发者社区> 问答> 正文

Spark的数据本地性有哪几种?

Spark的数据本地性有哪几种?

展开
收起
茶什i 2019-10-28 16:07:57 2977 0
2 条回答
写回答
取消 提交回答
  • PROCESS_LOCAL 进程本地化,表示 task 要计算的数据在同一个 Executor 中。

    NODE_LOCAL 节点本地化,速度稍慢,因为数据需要在不同的进程之间传递或从文件中读取。分为两种情况,第一种:task 要计算的数据是在同一个 worker 的不同 Executor 进程中。第二种:task 要计算的数据是在同一个 worker 的磁盘上,或在 HDFS 上恰好有 block 在同一个节点上。如果 Spark 要计算的数据来源于 HDFSD 上,那么最好的本地化级别就是 NODE_LOCAL。

    NO_PREF 没有最佳位置,数据从哪访问都一样快,不需要位置优先。比如 Spark SQL 从 Mysql 中读取数据。

    RACK_LOCAL 机架本地化,数据在同一机架的不同节点上。需要通过网络传输数据以及文件 IO,比 NODE_LOCAL 慢。情况一:task 计算的数据在 worker2 的 EXecutor 中。情况二:task 计算的数据在 work2 的磁盘上。

    ANY 跨机架,数据在非同一机架的网络上,速度最慢。

    2020-03-19 19:58:01
    赞同 展开评论 打赏
  • 答:Spark中的数据本地性有三种: a.PROCESS_LOCAL是指读取缓存在本地节点的数据 b.NODE_LOCAL是指读取本地节点硬盘数据 c.ANY是指读取非本地节点数据 通常读取数据PROCESS_LOCAL>NODE_LOCAL>ANY,尽量使数据以PROCESS_LOCAL或NODE_LOCAL方式读取。其中PROCESS_LOCAL还和cache有关,如果RDD经常用的话将该RDD cache到内存中,注意,由于cache是lazy的,所以必须通过一个action的触发,才能真正的将该RDD cache到内存中。

    2019-10-28 16:30:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载