2020-08-08:有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive 中。但是气象局只提供了 api 查询,
【摘要】 2020-08-08:有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive 中。但是气象局只提供了 api 查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?福哥答案2020-08-08:参考答案:A.通过shell 或python 等调用api,结果先暂存本地,最后将本地文件上传到 Hive 中。B.通过 datax 的 httpReader 和 ...
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;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)