drill apache_使用Apache Drill REST API通过Node构建ASCII仪表盘

drill apache

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

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

ASCII仪表盘如下所示:

dashboard_demo

先决条件

  • 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钻取剩余博客Img1

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

Apache钻取其余博客Img2

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

Apache钻取其余博客Img3

使用REST API

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

Apache-Drill-Rest-Blog-Img4

返回的JSON文档如下所示:

Apache钻取其余博客Img5

如您所见,它非常简单:

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

使用Node.js和Blessed Contrib创建图

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

首先,您必须包括:

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

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

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

Apache钻取其余博客Img6

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

Apache钻取其余博客Img7

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

Apache钻取其余博客Img8

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

运行“仪表板”

Apache钻取剩余博客Img9

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

完整的仪表板

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

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

Apache钻取其余博客Img10

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

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

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

drill apache

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 8.0用doc修改密码_MYSQL8.0修改密码流程

MYSQL8.0修改密码流程1.以管理员身份打开cmd2.找到mysql 的安装路径bin文件的路径,3.输入net start mysql4.输入mysql -u root -p5.找到my.ini文件6.在my.ini里面的[mysqld]这一行后面添加 skip -grant-tables,保存文件,注意不是[mysql]7.输入mysqld --s…

颜色空间缩减color space reduction

颜色空间缩减公式 //---------------------------------【头文件、命名空间包含部分】-------------------------- // 描述:包含程序所使用的头文件和命名空间 //---------------------------------------------------------------------------------------…

运动基元_发现大量Java基元集合处理

运动基元在阅读博客文章5减少Java垃圾收集开销的技巧时 ,我想起了一个名为Trove的小型Java收集库,该库“为Java提供了高速的常规和原始收集”。 我对将Trove应用到允许原语的集合而不是要求集合中的元素成为完整的引用对象的能力特别感兴趣。 我在这篇文…

python判断奇偶数字符串的拼接_Python字符串拼接方法总结

这篇文章主要介绍了Python字符串拼接的几种方法整理的相关资料,这里提供了五种方法及实现,需要的朋友可以参考下Python字符串拼接的几种方法整理第一种 通过加号()的形式print(第一种方式通过加号形式连接 : lovePython \n)第二种 通过逗号(,)的形式pr…

Split分离通道

#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2\opencv.hpp> using namespace cv; using namespace std;int main() {vector<Mat>cha;Mat b, g, r,dst;//1.加载两幅图片…

上下文异常中的上下文属性_在没有适当上下文的情况下引发异常是一种不良习惯...

上下文异常中的上下文属性Allison Anders等人的《四个房间》&#xff08;1995&#xff09;。 我不断重复同样的错误。 因此&#xff0c;该停止并制定规则以防止这种情况了。 错误不是致命的&#xff0c;但很烦人。 当查看生产日志时&#xff0c;经常会看到类似"File does…

最大公约数简便算法_求最大公约数的4种算法

for(z0; z<10000000; z) 循环只是为了增加程序的运行时间&#xff0c;让我们体会算法的时间复杂度。算法一&#xff1a;短除法想法&#xff0c;采用短除法找出2个数的所有公约数&#xff0c;将这些公因子相乘&#xff0c;结果就是2个数的最大公约数。【找公因子&#xff0c;…

java 编写代码_如果您在2015年编写过Java代码-这是您不容错过的趋势

java 编写代码去年我们有机会遇到的最有趣趋势的实用概述 在这篇文章中&#xff0c;我们回顾了构成我们2015年对话的5个主题和新发展。与其他许多年终总结保持较高水平的不同&#xff0c;我们将做一个更实际的操作不用流行语 。 好吧&#xff0c;没有太多*流行语。 与往常一样…

java自动生成合同_Java 7和Java 8之间的细微自动关闭合同更改

java自动生成合同Java 7的try-with-resources语句和与该语句一起使用的AutoCloseable类型的一个不错的功能是&#xff0c;静态代码分析工具可以检测到资源泄漏。 例如&#xff0c;Eclipse&#xff1a; 当您具有上述配置并尝试运行以下程序时&#xff0c;您将收到三个警告&…

Python学习(1)

1.str字符串操作 len(str) 计算字符串长度 str.replace(xxx,xxxx) 替换指定字符 str.upper()字符串转大写 str.lower()字符串转小写 str.strip()删除左右多余的空格 str.lstrip()删除左边多余的空格 str.rstrip()删除右边的空格 format(a,b,c) 传参显示 2.索引 out hello wo…

opencv求两张图像光流_光流(optical flow)和openCV中实现

转载请注明出处&#xff01;&#xff01;&#xff01;光流(optical flow)和openCV中实现光流的概念&#xff1a;是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度。是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一…

storm apache_Apache Storm的实时情绪分析示例

storm apache实时情感分析是指处理自然语言文本&#xff08;或语音&#xff09;流以提取主观信息。 琐碎的用例用于构建推荐引擎或查找社交媒体趋势。 我选择了Apache Storm作为实时处理引擎。 Storm非常强大&#xff08;我们正在生产中使用它&#xff09;&#xff0c;并且非常…

怎么用python画圆的公式_怎么用python画圆

python中内置了许多第三方库&#xff0c;来帮助它完成各种功能。Turtle库就是Python语言中一个很流行的绘制图像的函数库(推荐学习&#xff1a;Python视频教程)Turtl库用于绘制线、圆、其他形状或者文本这个库被介绍为一个最常用的用来给孩子们介绍编程知识的方法库&#xff0c…

嵌入式java基准测试_Java正则表达式库基准测试– 2015年

嵌入式java基准测试在尝试使Java在计算机语言基准游戏的regexdna挑战中排名第一时&#xff0c;我正在研究Java正则表达式库的性能。 我可以找到的最新网站是2010年的tusker.org 。因此&#xff0c;我决定使用Java Microbenchmarking Harness重做测试并发布结果&#xff08;破坏…

libgdx和unity_libgdx和Kotlin –类[2D平台原型]

libgdx和unity这篇文章是libgdx和Kotlin文章的后续文章。 我已经决定开发一个简单的2D平台程序的原型&#xff08;沿着我的早期文章中的Star Assault进行介绍&#xff09;&#xff0c;但是我一直在使用和学习Kotlin&#xff0c;而不是Java。 对于本教程&#xff0c;该项目应处…

java1.7开发环境_在Windows平台搭建Java 1.7开发环境

OS&#xff1a;Windows 7 or laterJava Version: 1.7.x本文具体的演示环境是&#xff1a;Windows 8.1&#xff0c;Java 1.7.0_45。一、安装JDK需要注意的是安装路径中不要出现非西文符号。实际上我一般喜欢在安装路径中也尽可能不出现空格。比如&#xff1a;在我的PC上&#xf…

gluon_带有Gluon Ignite和Dagger的JavaFX中的依赖注入

gluon依赖注入抽象框架Gluon Ignite在几个流行的依赖注入框架&#xff08;例如Spring&#xff0c;Dagger和Guice&#xff09;上创建了一个通用抽象。 目前&#xff0c;Gluon 页面仅包含一个示例&#xff0c;该示例使用Gluon Ignite和Google Guice作为依赖注入框架&#xff0c;…

couchbase_具有Couchbase,Java EE和WildFly的CRUD Java应用程序

couchbaseCouchbase是一个开源的NoSQL文档数据库。 它允许访问&#xff0c;索引和查询JSON文档&#xff0c;同时利用集成的分布式缓存来实现高性能数据访问。 开发人员可以使用不同的语言&#xff08;Java&#xff0c;Go&#xff0c;.NET&#xff0c;Node&#xff0c;PHP&…

java 对象的态_Java面向对象-------多态总结

1.多态&#xff1a;是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口&#xff0c;使用不同的实例而执行不同操作&#xff0c;如图所示&#xff1a;多态性是对象多种表现形式的体现。2.多态作用&#xff1a;1. 消除类型之间的耦合关系2. 可替换性3. 可扩充性4…

netbeans连接数据库_NetBeans Java EE技巧#1 –数据库中的实体类

netbeans连接数据库NetBeans IDE是开发各种应用程序的绝佳选择。 具体来说&#xff0c;我每天都使用它来开发和维护Java EE应用程序。 在过去的几个发行版中&#xff0c;不仅Java EE的生产力提高了&#xff0c;而且NetBeans IDE还减少了开发应用程序的时间……使Java EE和NetBe…