介绍
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调用以获取最新块的详细信息。
${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 - RAY49e564 b17e23923c - EWR缓存- 控制no - cache,no - store,max - age = 0,必须- 重新验证连接保持- 活着内容- 类型application / json ; charset = utf - 8日期周四,24 年1月 2019年 20:54:07 GMT期待- CTmax - age = 604800,report - uri = “”过期周五,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 - 内容- 类型- 选项nosniffX - 下载- 选项noopenX - 框架- 选项SAMEORIGINX - 请求- Id20 d3f592 - 50 b6 - 40 cf - a496 - a6f915eb463bX - 运行时1.018401X - XSS - 保护1 ; mode = block位172f d633block_no559950blockhash0000000000000000001 c68f61ddcc30568536a583c843a7d0c9606b9582fd7e5费用0.05142179文件名btc。201949241501759. JSON片段。计数1片段。识别码cec10691 - 82e9 - 402 b - 84 a9 - 7901 b084f10a片段。指数0gethttp。遥远的。资源链。所以invokehttp。遥远的。DNCN = ssl371663。cloudflaressl。COM,OU = PositiveSSL 多- 域,OU = 域 控制 验证invokehttp。要求。网址HTTPS://chain.so/api/v2/block/BTC/559950invokehttp。地位。码200invokehttp。地位。信息好invokehttp。tx。IDbc8a0a18 - 0685 - 4 A2C - 器97f 一- 34541 b9ea929merkleroot41 eb6f68477e96c9239ae1bbe4e5d4d02529c6f7faebc4ad801730d09609a0ef哑剧。类型application / json ; charset = utf - 8mining_difficulty5883988430955.408网络BTCnext_blockhash空 字符串 集现时1358814296路径。/previous_blockhash0000000000000000001 b2b3d3b5741462fe31981a6c0ae9335ed8851e936664b模式chainsotxinputinfo架构。名称chainsotxinputinfo细分。原来的。文件名btc。201949241501759. JSONsent_value3977.10078351尺寸470242时间1548362873UUID3 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”}
}