使用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/BTC/${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.com/cdn-cgi/beacon/expect-ct”
过期
周五,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”
    }
  }


猜你喜欢

转载自blog.51cto.com/14009535/2348235
今日推荐