使用Apache NiFi的SoChain BitCoin,DogeCoin和LiteCoin数据R

介绍

SoChain提供了一组快速公开,免费提供的API(不要滥用它们)来访问各种网络上的信息。

如果您需要这项工作,请捐赠。

您将在这个简单的流程中看到的一件事是NiFi擅长于摄取REST并使用JSON。正如您所看到的,NiFi非常适合拆分,切碎,过滤,操作和从中提取。使用生成的可用对象,我们可以构建一个模式,我们也可以进行记录处理。

我刚刚 在新泽西州伍德布里奇举办了一次Future of Data Princeton Meetup,其中有一些由ChainNinja赞助的精彩演讲者。虽然这完全是关于Blockchain for Enterprise并且没有涉及加密货币,但它让我们想要研究一些加密货币数据。正如您所看到的,在Apache NiFi中操纵复杂的JSON数据,过滤,修改,路由和使用其值编写脚本是微不足道的。

在我的下一篇文章中,我正在调查Hyperledger和Ethereum,以便与Apache NiFi,Impala,Hive,Kudu,HBase,Spark,Kafka和其他企业技术集成企业解决方案。

脚步
我们从URL中读取。

我将原始文件发送到不可变的HDFS存储。

在另一个分支中,我将使用EvaluateJSONPath提取一个属性来用于获取详细记录。

$.data.blocks

我使用该属性构建更深入的REST调用以获取最新块的详细信息。

https://chain.so/api/v2/block...${block_no}

这是 invokeHTTP一个可编写脚本的HTTP(S)调用。这通常会派上用场。

接下来 EvaluateJSONPath, 我将提取JSON文件的所有高级属性。我希望这些记录作为主要字段。这些都是重复的。

之后,我将其下面的两个数据分组分成两个独立的分支。我会将这些内容分解为单个记录以进行解析。我也可以应用一个模式并处理这些记录组。

这是一个读取REST API并为每个调用创建唯一名称的示例。另外,请注意,处理HTTPS和HTTP都很容易。

我们可以编写的唯一文件名示例:

$ {文件名:追加( 'BTC'。):追加($ {NOW():格式( 'YYYYMMDDHHMMSS'):追加($ {} MD5):追加()} 'JSON。')}

REST URL示例:https : //chain.so/api/v2/get_info/LTC

Apache NiFi源的价值示例。 (这些是为一个流文件获取的属性)。

属性 值
访问- 控制- 允许- 标题
Origin,Accept,Content - Type,X - Requested - With,X - CSRF - Token
访问- 控制- 允许- 方法
GET,POST
访问- 控制- 允许- 原点
*
CF - RAY
49e564 b17e23923c - EWR
缓存- 控制
no - cache,no - store,max - age = 0,必须- 重新验证
连接
保持- 活着
内容- 类型
application / json ; charset = utf - 8
日期
周四,24 年1月 2019年 20:54:07 GMT
期待- CT
max - age = 604800,report - uri = “https://report-uri.cloudflare...
过期
周五,01 年1月 1990年的 00:00:00 GMT
附注
没有- 缓存
服务器
CloudFlare的
设置- Cookie
__cfduid = d6f52ee1552c73223442296ff7230e9fd1548363246 ; 期满= 周五,24 - 扬- 20 20:54:06 GMT ; path = / ; domain =。链。所以 ; HttpOnly,_mkra_ctxt = 1 a7dafd219c4972a7562f232dc63f524 - 200 ; path = / ; 最大- 年龄= 5
状态
200 好的
严格- 运输- 安全
max - 年龄= 31536000 ; includeSubDomains
转移- 编码
分块
X - 内容- 类型- 选项
nosniff
X - 下载- 选项
noopen
X - 框架- 选项
SAMEORIGIN
X - 请求- Id
20 d3f592 - 50 b6 - 40 cf - a496 - a6f915eb463b
X - 运行时
1.018401
X - XSS - 保护
1 ; mode = block

172f d633
block_no
559950
blockhash
0000000000000000001 c68f61ddcc30568536a583c843a7d0c9606b9582fd7e5
费用
0.05142179
文件名
btc。201949241501759. JSON
片段。计数
1
片段。识别码
cec10691 - 82e9 - 402 b - 84 a9 - 7901 b084f10a
片段。指数
0
gethttp。遥远的。资源
链。所以
invokehttp。遥远的。DN
CN = ssl371663。cloudflaressl。COM,OU = PositiveSSL 多- 域,OU = 域 控制 验证
invokehttp。要求。网址
HTTPS://chain.so/api/v2/block/BTC/559950
invokehttp。地位。码
200
invokehttp。地位。信息

invokehttp。tx。ID
bc8a0a18 - 0685 - 4 A2C - 器97f 一- 34541 b9ea929
merkleroot
41 eb6f68477e96c9239ae1bbe4e5d4d02529c6f7faebc4ad801730d09609a0ef
哑剧。类型
application / json ; charset = utf - 8
mining_difficulty
5883988430955.408
网络
BTC
next_blockhash
空 字符串 集
现时
1358814296
路径
。/
previous_blockhash
0000000000000000001 b2b3d3b5741462fe31981a6c0ae9335ed8851e936664b
模式
chainsotxinputinfo
架构。名称
chainsotxinputinfo
细分。原来的。文件名
btc。201949241501759. JSON
sent_value
3977.10078351
尺寸
470242
时间
1548362873
UUID
3 c1d72b4 - e993 - 4 b32 - a679 - 0741 a44aeefb
输入记录示例:

{
“input_no”:0,
“地址”:“3N7Vid17hE1ofGcWR6bWEmtQBQ8kKQ7iKW”,
“价值”:“0.20993260”,
“received_from”:{

“txid”:“4e0f00cddb8e3d98de7f645684dc7526468d1dc33efbbf0bc173ed19c6556896”,
“output_no”:4

}
}
LiteCoin记录示例

{
“地位”:“成功”,

“数据”:{
  “名字”:“Litecoin”,
  “首字母缩略词”:“LTC”,
  “网络”:“LTC”,
  “symbol_htmlcode”:“Ł”,
  “url”:“http://www.litecoin.com/”,
  “mining_difficulty”:“6399667.35869154”,
  “unconfirmed_txs”:8,
  “blocks”:1567929,
  “价格”:“0.00000000”,
  “price_base”:“BTC”,
  “price_update_time”:1548451214,
  “hashrate”:“178582229079753”
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值