【问题标题】:Consuming External Webservices data in Hadoop在 Hadoop 中使用外部 Web 服务数据
【发布时间】:2015-05-09 11:20:39
【问题描述】:

我计划通过 Hadoop 框架满足以下要求。

  • 我有 40% 的数据位于 SQL Server 数据库中
  • 我有 20% 的数据可通过 Web 服务获得
  • 我可以通过另一个数据库获得剩余的 40%。

需要将来自三个来源的数据连接在一起以形成第四个数据集,我需要将其发送到 2 个系统 - 一个通过 Web 服务调用,另一个通过直接数据库导入。

为了实现上述功能,我打算使用我们已有的 Hadoop 平台。数据库拉取和推送可以通过 Sqoop 进行管理。转换通过 Hive 编写的 SQL 查询进行管理。所有这一切都是通过 Oozie 工作流程精心编排的。

在整个范围内,我想获得帮助的是 -

一个。直接调用 Web 服务从 hadoop 获取数据是一种好方法吗?或者,如果涉及从外部 Web 服务获取数据,我不应该使用 hadoop 吗?我不相信有办法让它发挥作用,但我想听听你的意见。

b.如果这种方法很好,我该如何实现呢?一种选择是提供一个 oozie 操作,该操作可以调用 Web 服务并将响应写入 HDFS 位置。还有其他更好的选择吗?

【问题讨论】:

  • 通过 Web 服务获得的数据是否始终相同,还是随时间变化?
  • 来自网络服务的数据每次都会改变。这是一项与目标系统同步的日常工作。

标签: hadoop cloudera oozie hortonworks-data-platform


【解决方案1】:

为webservice自定义一个InputFormat和record reader,这样hadoop就只是把它当作普通输入了。您首先要做的是找到一种将来自 web 服务的输入拆分为小的好方法,因为 mapreduce 会启动与您的输入拆分一样多的任务。

同时,可能已经有 jdbc inputformat 给你 DB

【讨论】:

  • 正如我之前提到的,我不想在 MR 工作中处理。我只是想让这些数据在 HDFS 中可用,以便 Hive 可以进行完整的转换。这会有什么不同还是我弄错了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-08
  • 2012-06-06
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多