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

    福哥答案2020-08-08:

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

    [知乎答案:](https://www.zhihu.com/question/412788310)
    那感觉最好用 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;
    ***
    [评论](https://user.qzone.qq.com/3182319461/blog/1596842877)

  • 相关阅读:
    Linux用户组管理及用户权限3
    MySQL预处理和事务
    MySQL-子查询和多表联查
    Mysql-分组和聚合函数
    LNMP搭建
    apache-虚拟主机配置
    Apache-重写
    apache配置文件详解
    vim使用
    php-curl_init函数
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13460222.html
Copyright © 2011-2022 走看看