【问题标题】:Apache Spark comparing files with SQL dataApache Spark 将文件与 SQL 数据进行比较
【发布时间】:2015-03-06 22:38:01
【问题描述】:

我将使用Apache Spark 处理大文本文件,其中处理周期中的一部分是将文本部分与大 SQL 表中的数据进行比较。

任务是:

1) Process files and break text into pieces
2) Compare pieces with database ones

毫无疑问,瓶颈将是 SQL。我对Apache Spark 完全陌生,虽然我确定Subtask #1 是“他的人”,但我不完全确定Subtask #2 可以由Spark 处理(我的意思是,以有效的方式)。

问题是Spark 如何在并行和分布式环境中处理来自大 SQL 的可迭代选择(也许,尽可能多地缓存?)?

【问题讨论】:

  • 您是否可以/值得将表中的数据sqoop到HDFS中?然后您的处理就可以完全处理 HDFS 数据了。
  • @DPM 是的,也许,好记。 Spark SQL 及其方法cacheTable() 怎么样?
  • Spark SQL 用于让您使用 SQL 语法查询 RDD。如果您想将 SQL 数据读入 Spark,您似乎更需要 JdbcRDD,如 this answer 中所述
  • @DPM 希望您发表评论作为答案,我会批准它:)

标签: hadoop parallel-processing apache-spark


【解决方案1】:

根据请求作为答案发布:

如果您需要重复处理来自 SQL 数据源的数据,我通常发现值得使用 Sqoop 将数据拉入 HDFS,以便我的处理可以更轻松地运行。这在我开发数据流时特别有用,因为我经常会在短时间内对数据样本多次运行相同的作业,如果它已被sqooped,我不必访问数据库服务器每次。

如果您的工作是定期/批量样式(每日数据清理或报告之类的),这可能是一个足够的实现,并且在 HDFS 中收集历史数据最终可多次用于其他目的。

如果您需要实时的最新数据,那么您需要使用JdbcRDD,如this other answer 中所述,它允许您将 SQL 数据源视为 Spark 数据中的 RDD流。

祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多