• 用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


  • 相关阅读:
    windows 10 上源码编译opengv | compile opengv on windows 10 from source
    ubuntu 16.04上源码编译libjpeg-turbo和使用教程 | compile and use libjpeg-turbo on ubuntu 16.04
    c 时间 学习
    cap文件的格式说明
    C#调用C++
    c/c++基础 const
    tomcat 简单安装配置说明
    言论
    近期任务
    解决mysql从windows迁移到centos出现乱码问题
  • 原文地址:https://www.cnblogs.com/fengwenit/p/5589397.html
Copyright © 2020-2023  润新知