Spark 中如何从外部数据源并行读取数据?

问题描述 投票:0回答:1

我是 Spark 新手,正在阅读学习 Spark 日志。对数据获取/读取的概念有疑问。

如果我有一个外部数据源(未分区)并且我想在 Spark 中处理它。

  1. 在下面的示例的基础上,我们创建 10 个步幅/分区,因此每个分区都会读取整个外部数据源并获取过滤后的数据??

因此第一个分区将扫描整个数据源并存储 1000 到 2000 之间的数据

然后第二个分区将再次扫描整个数据源并存储 2000 到 3000 之间的日期?

  1. 还会有 10 个单独的 Spark 会话来并行处理它们吗?如果不是,那么单个会话如何并行读取它们?

  2. 每个分区都存储在单独的执行器中?

尝试在网上搜索,但未能得到满意的解释来解决我的疑问。

apache-spark partitioning external-data-source
1个回答
0
投票
  1. 每个分区都会要求外部数据源在源端过滤数据,并根据条件只发送需要的数据,源端如何实现不是spark关心的。在你的情况下,如果它没有分区,那么源将必须扫描所有数据才能到达所需的行
  2. 将有单个 Spark 会话,多个线程将使用此查询打开与外部源的连接,所有这些都将转换为 rdd 分区
  3. 也许/也许不是,无论哪个执行者有可用的CPU,它都会去那里
© www.soinside.com 2019 - 2024. All rights reserved.