我将使用 Apache Spark
处理大文本文件,其中处理周期是将文本部分与大 SQL 表中的数据进行比较的一部分。
任务是:
1) Process files and break text into pieces
2) Compare pieces with database ones
瓶颈肯定是SQL。我是 Apache Spark
的新手,虽然我确定 Subtask #1
是“他的人”,但我不完全确定 子任务 #2
可以由 Spark 处理(我的意思是,以高效的方式)。
问题是 Spark
如何在并行和分布式环境中处理来自大 SQL 的可迭代选择(也许,尽可能多地缓存?)?
最佳答案
作为每个请求的答案发布:
如果您需要重复处理来自 SQL 数据源的数据,我通常觉得值得使用 Sqoop将数据拉入 HDFS,以便我的处理可以更轻松地运行。这在我开发数据流时特别有用,因为我经常会在短时间内多次对一个数据样本运行相同的作业,如果它已被 sqooped,我就不必访问数据库每次服务器。
如果您的工作是周期性/批处理方式(每日数据清理或报告等),这可能是一个足够的实现,并且在 HDFS 中收集历史数据最终可多次用于其他目的。
如果您需要实时的最新数据,那么您将需要使用 JdbcRDD ,如 this other answer 中所述,它允许您将 SQL 数据源视为 Spark 数据流中的 RDD。
祝你好运。
关于hadoop - Apache Spark 将文件与 SQL 数据进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28887484/