从PigLatin调用API

时间:2017-01-05 13:44:07

标签: apache-pig

为PigLatin完成新手,但希望从MetOffice DataPoint API中提取数据,例如:

http://datapoint.metoffice.gov.uk/public/data/val/wxfcs/all/xml/350509?res=3hourly&key=abc123 ....

...进入Hadoop。

我的问题是“这可以使用PigLatin(在Ambari的Pig View中进行)”吗?

我已经开始寻找如何将GET请求格式化为代码,但没有运气。

我是在叫错树吗?我是否应该在Hadoop框架中使用不同的服务来实现这一目标?

2 个答案:

答案 0 :(得分:1)

从map-reduce作业内部调用外部服务是非常糟糕的。原因是当在群集上运行时,您的作业可以扩展,而外部系统可能不是这样。像YARN这样的现代资源管理器使这种情况更加糟糕,当您使用请求淹没外部系统时,群集上的任务将大部分处于休眠状态,等待服务器的回复。资源管理器将看到任务没有使用CPU,并且会安排更多的任务运行,这将对外部系统产生更多的请求,甚至更多地淹没它们。我看到适度的100机器群每秒发出100K请求。

您真正想要做的是以某种方式从Web服务获取批量数据,或者设置一个具有队列的系统,以及几个受控制的工作人员数量,这些工作人员将以固定费率从外部系统提取。

至于你原来的问题,我不认为PigLatin提供这样的服务,但可以用Python或Java UDF轻松完成。使用Python,您可以使用优秀的requests库,这将使您的UDF大约有6行代码。 Java UDF会更加冗长,但Java标准并不可怕。

答案 1 :(得分:0)

  

“这可以使用PigLatin进行(来自Pig View,in   Ambari)“?

不,默认情况下,从HDFS存储中加载Pig,除非您编写自己的加载程序。

我与@Vlad分享同样的观点,这不是一个好主意,你还有许多其他用于数据摄取的组件,但这不是Pig的用例!