zoukankan      html  css  js  c++  java
  • 用Nifi 从web api 取数据到HDFS

    1. 全景图

    NewImage
     

    2. 用ExecuteScript生成动态日期参数

     
    为了只生成一个flowfile:
    NewImage
     
     
     
    Groovy 代码:

    import org.apache.commons.io.IOUtils
    import java.nio.charset.*
    import java.text.SimpleDateFormat;
    import java.lang.StringBuilder;
    import java.util.Calendar;

    def flowFile = session.create()

    def days = 10000

    flowFile = session.write(flowFile, {inputStream, outputStream ->
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
    Calendar cal = Calendar.getInstance();
    StringBuilder sb = new StringBuilder();

    cal.add(Calendar.DATE,1)

    for(int i = 0; i < days; i++) {
      cal.add(Calendar.DATE, -1);
      sb.append(sdf.format(cal.getTime()) + " " );
     }

    //println(sb);

    outputStream.write(sb.toString().getBytes(StandardCharsets.UTF_8))
    } as StreamCallback)

    //flowFile = session.putAttribute(flowFile, 'filename', 'get_date')
    session.transfer(flowFile, REL_SUCCESS)

     

    3. 用SplitText生成每行一个的日期

    Line Split Count    1

     

    4. 用ExtractText 取到日期参数

    NewImage

     

    5. 用UpdateAttribute生成url及filename

    NewImage

    这里一定要设置filename,不然,所有的文件名都一样,最后只能成功插入一个记录到HDFS。

     

    6.  用InvokeHttp获取数据

    NewImage

    NewImage

     

    7. 添加一个 RouteOnContent来过滤空数据

    NewImage

     

    8. 用PutHDFS把数据插入到HDFS

    NewImage

    注意这里的Directory 要加上/, 不然就插入到user/root/nifi下了,而不是files下在的nifi了。

     

    9. 每天更新数据

    NewImage

    每天20点更新数据

    代码小改下:

    def count = 1



     

     

    NIFI 中国社区 QQ群:595034369


  • 相关阅读:
    mvcAPI (入门 2)
    mvcAPI (入门 1)
    IMetadataAware接口的特性定制Model元数据
    MVC 中DropDownList 用法
    MVC 中使用EF
    EF中限制字段显示长度
    EF 存储过程
    sql通用分页自定义表条件存储过程
    fffffffffff
    游标分页
  • 原文地址:https://www.cnblogs.com/fengwenit/p/5589397.html
Copyright © 2011-2022 走看看