Java 如何将来自外部源(主要是Restful)的数据带到HDFS?

Java 如何将来自外部源(主要是Restful)的数据带到HDFS?,java,rest,hadoop,mapreduce,oozie,Java,Rest,Hadoop,Mapreduce,Oozie,这是一个与设计相关的问题。我是一名java开发人员,刚接触hadoop大数据世界;在我的Hortonworks HDP沙箱中学习hadoop它是Hortonworks作为VM提供的单节点伪集群 我设计了一个JavaRESTfulAPI,它与我创建的虚拟数据库交互。api/客户端将向uri发送一系列GET请求,并将结果体存储为本地hortonworks Unix服务器中的表格形式TSV文本文件。在那里,我将从本地复制到HDFS,以便进一步处理 是否有开源hadoop组件可以实现这一点,我是否可以将

这是一个与设计相关的问题。我是一名java开发人员,刚接触hadoop大数据世界;在我的Hortonworks HDP沙箱中学习hadoop它是Hortonworks作为VM提供的单节点伪集群

我设计了一个JavaRESTfulAPI,它与我创建的虚拟数据库交互。api/客户端将向uri发送一系列GET请求,并将结果体存储为本地hortonworks Unix服务器中的表格形式TSV文本文件。在那里,我将从本地复制到HDFS,以便进一步处理

是否有开源hadoop组件可以实现这一点,我是否可以将api设计为一个映射Reduce作业,并将reducer的数量设置为零?我正在寻找更好的选择

我可以在Hue/HDP中创建脚本动作或java动作作为oozie工作流吗


如果您的所有目标都是以TSV的形式将数据从数据库中带到HDFS,那么可以非常轻松地使用


Sqoop是一个Hadoop生态系统组件,它可以直接连接到rdbms数据库,并可以使用自定义分隔符导入表的记录。我希望这将简化您需求的实现。

感谢您的回复。我已经用带有CLI的sqoop进行了测试,但无法用色调配置oozie工作流,这很好。当您不能直接访问数据库时,就是这种情况。您只能通过web服务调用访问数据库。如果您不能直接与数据库交互,客户端如何知道要做什么?另一个返回主键列表的GET?@keegan,使用restful的主要原因是对用户进行身份验证,并且只显示他/她有权访问的数据。HTTP客户端能够根据登录的用户发送GET请求。有一个预定义的uri+queri参数myApp/usersId/events/year,响应返回json/xml格式的数据,数据存储为TSV:randomID+/t+xml/json+/t+timestamp+/n。这是开始的地方。不过,我要警告你,WebHDFS在我的实验中表现得比本机调用差。同样,对于你的1,是的,你绝对可以拥有一个没有reduce的映射,如果我正在构建一个任务来实现这一点,我也会这么做-Sqoop做同样的事情。只要确保不要触发太多的映射程序,你不想让DAO屈服。在我的业余时间里,经过六个月的研究和Hadoop的持续工作,我终于想出了执行map reduce jobs/oozie jobs的Restful请求的办法。如果您遇到类似情况,请与我联系,我可能会将详细信息和源代码放在github中。您可以添加gist或小github示例来说明您是如何解决的吗?