介绍
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
访问- 控制- 允许- 原点