如果最终目标是使用 Spark 执行计算,那么首先将 Postgres 数据传输到 HDFS(使用 Sqoop)而不是直接使用带有 Postgres 的 Spark SQL(使用 JDBC?)的原因是什么?
这个问题的答案(引用 MongoDB,而不是 PostgreSQL ......但仍然适用)提到这是两个选项,但我想知道是什么促使选择一个而不是另一个。
如果最终目标是使用 Spark 执行计算,那么首先将 Postgres 数据传输到 HDFS(使用 Sqoop)而不是直接使用带有 Postgres 的 Spark SQL(使用 JDBC?)的原因是什么?
这个问题的答案(引用 MongoDB,而不是 PostgreSQL ......但仍然适用)提到这是两个选项,但我想知道是什么促使选择一个而不是另一个。
这可能是一个过于宽泛的问题,但与任何系统一样,您拥有的步骤和依赖项越少,只要它满足当前和未来(或足够未来)的业务目标,就越容易支持它。
在您的用例场景中,您似乎对 HDFS 和 SQOOP 没有任何用处。在很多环境中,他们可能会这样做。例如,他们可能希望将 HDFS 用作文件存储,并且即使在使用 Spark 处理这些记录之后也可以将其保存在手边。例如,它们可能是客户记录,并且是汇总在一起的,这样您就可以将原件放在手边,这样您就可以在每个客户需要时为他们提供自己的记录。
通过直接进入 Spark 并根据您的工作,您将改变数据并且您可能无法取回原始数据。通过在 HDFS 中保留一个副本,您还可以始终重新创建最终结果,因为您拥有制作它的副本。
如果您不需要数据以拉取时的形式保留,或者不需要通过您可能不需要的相同过程来重新创建输出。另一个项目可能是您想要一个实时的开发/质量保证环境。通过首先将其放入 HDFS,您可以对使用最新数据的所有环境执行相同的过程。如果数据得到处理但未维护/存储,您可能无法重新创建问题或场景。
这些是许多可能的原因中的一些。这真的取决于。