使用Apache Drill REST API通过Node构建ASCII仪表板

Apache Drill有一个隐藏的瑰宝:易于使用的REST接口。 该API可用于查询,分析和配置Drill引擎。

在此博客文章中,我将说明如何使用Brilled Contrib使用Drill REST API创建ascii仪表板。

ASCII仪表盘如下所示:

使用Apache Drill REST API通过Node构建ASCII仪表板

先决条件

  • Node.js
  • Apache Drill 1.2
  • 对于此帖子,您将在此处使用SFO Passengers CSV文件。
      在本地下载此文件,解压缩文件,然后将CSV放入一个文件夹中,该文件夹可使用Drill中的以下路径访问: dfs.data.`/airport/*.csv`

注意:我仍在使用Apache 1.2来允许在MapR集群的上下文中执行此示例。

查询和查看

在Drill 1.2中,不会自动分析CSV标头。 (这是1.3的新功能之一:在文档中查找extractHeader )。

为简单起见,请删除CSV的第一行。

基本查询如下所示:

使用Apache Drill REST API通过Node构建ASCII仪表板

现在让我们用以下列创建一个视图:( 不要设置任何限制!

使用Apache Drill REST API通过Node构建ASCII仪表板

因此,您现在可以在查询中使用该视图:

使用Apache Drill REST API通过Node构建ASCII仪表板

使用REST API

现在您有了查询,您可以使用REST API通过HTTP将数据作为JSON文档检索。 打开一个终端并运行以下curl命令:

使用Apache Drill REST API通过Node构建ASCII仪表板

返回的JSON文档如下所示:

使用Apache Drill REST API通过Node构建ASCII仪表板

如您所见,它非常简单:

  • 列出列的第一个JSON属性
  • 行列表,作为数组中的JSON文档。

使用Node.js和Blessed Contrib创建图

让我们创建一个节点应用程序。

首先,您必须包括:

  • request :调用REST API
  • blessed :获得丰富的Terminal API
  • blessed-contrib :用于仪表板

然后创建一个screen和一个bar从甜菜的Contrib。

因此,您的Javascript文件的标题如下所示:

使用Apache Drill REST API通过Node构建ASCII仪表板

因此,在这里我们定义了一个bar char,它将填充列和行。 为此,我们需要一个查询,让我们使用每年的乘客数量,如下所示:

使用Apache Drill REST API通过Node构建ASCII仪表板

完整的Bar Chat应用程序如下所示:

使用Apache Drill REST API通过Node构建ASCII仪表板

  • 第15-17行包含Drill REST API使用的查询对象
  • 第26-38行包含来自HTTP调用的回调,结果值存储在数据对象中(第33-34行),然后在条形图中设置(第36行)

运行“仪表板”

使用Apache Drill REST API通过Node构建ASCII仪表板

该应用程序在您的终端中显示一个简单的条形图。 现在让我们创建一个更丰富的仪表板。

完整的仪表板

Bless-Contrib节点程序包允许开发人员创建丰富的仪表板,这些仪表板可以聚合多个图形,并且可以自动刷新,如本文顶部的截屏所示。

您可以在此Github存储库中找到一个简单的仪表板,将其克隆后,只需运行:(确保您的视图名为“ airport_data_view'

使用Apache Drill REST API通过Node构建ASCII仪表板

您甚至可以更改CSV文件,例如添加新的月份,右侧的折线图将自动刷新。

注意:此仪表板示例非常基础,只是一个简单的示例,说明了如何在node.js应用程序中使用Drill REST API

翻译自: https://www.javacodegeeks.com/2015/12/using-apache-drill-rest-api-build-ascii-dashboard-node.html