2020-08-08:有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive 中。但是气象局只提供了 ...

2020-08-08:有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive 中。但是气象局只提供了 api 查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?
福哥答案2020-08-08:

参考答案:
A.通过shell 或python 等调用api,结果先暂存本地,最后将本地文件上传到 Hive 中。
B.通过 datax 的 httpReader 和 hdfsWriter 插件,从而获取所需的数据。
C.比较理想的回答,是在计算引擎的 UDF 中调用查询 api,执行UDF 的查询结果存储到对应的表中。一方面,不需要同步任务的导出导入;另一方面,计算引擎的分布式框架天生提供了分布式、容错、并发等特性。

知乎答案:
那感觉最好用 Hive 的 UDF(User Define Function)功能,将调用api写入UDF的逻辑中。这样能利用Hive的分布式能力。例如:
定义UDF:

package test;
public class GetWeatherDataUDF extends UDF {
    public String evaluate(String param) {
        return getFromApi(param);//调用api
    }
}

之后打包发布到Hive,定义这个UDF:
CREATE TEMPORARY FUNCTION GetWeather AS 'test.GetWeatherDataUDF';
最后就可以使用这个函数了,例如某个表的一列就是所有的参数:
select GetWeather(param) from one_table;

福大大架构师每日一题 文章被收录于专栏

最新面试题,针对高级开发人员和架构师。内容是后端、大数据和人工智能。

全部评论

相关推荐

半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务