博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Nifi 从web api 取数据到HDFS
阅读量:5786 次
发布时间:2019-06-18

本文共 1155 字,大约阅读时间需要 3 分钟。

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()) + "\n" );
 }

//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

转载地址:http://sztyx.baihongyu.com/

你可能感兴趣的文章
链表基本操作的实现(转)
查看>>
邮件发送1
查看>>
[转] libcurl异步方式使用总结(附流程图)
查看>>
编译安装LNMP
查看>>
[转]基于display:table的CSS布局
查看>>
crm 02--->讲师页面及逻辑
查看>>
AS3.0 Bitmap类实现图片3D旋转效果
查看>>
Eigen ,MKL和 matlab 矩阵乘法速度比较
查看>>
带三角的面包屑导航栏(新增递增数字)
查看>>
Web应用程序安全与风险
查看>>
codeforces 984 A. Game
查看>>
CSS居中
查看>>
One Person Game(概率+数学)
查看>>
CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs...
查看>>
MAP
查看>>
手把手教你测——上网快鸟
查看>>
用javascript获取地址栏参数
查看>>
一起谈.NET技术,你应该知道的15个Silverlight诀窍
查看>>
商教助手!解析夏普液晶高清宽屏投影机系列
查看>>
云南去年有望实现151万贫困人口净脱贫
查看>>