Pilosa支持默认使用JSONHTTP接口。

任何HTTP工具都可用于与Pilosa服务器进行交互。 本文档中的示例将使用curl,默认情况下可用于许多类UNIX系统,包括Linux和MacOS。 Windows用户可以在这里下载curl

请注意,Pilosa服务器对打开文件的上限有要求。 检查系统文档,了解如何在达到该限制时增加它。 有关详细信息,请参阅Open File Limits

开始 Pilosa

按照安装文档中的步骤安装Pilosa。 在终端中执行以下命令,以使用默认配置运行Pilosa(Pilosa将在localhost:10101中可用):

pilosa server

如果您使用的是Docker镜像,则可以使用以下命令在默认地址上运行短暂的Pilosa容器:

docker run -it --rm --name pilosa -p 10101:10101 pilosa/pilosa:latest

确保Pilosa正在运行:

curl localhost:10101/status
{"state":"NORMAL","nodes":[{"id":"91715a50-7d50-4c54-9a03-873801da1cd1","uri":{"scheme":"http","host":"localhost","port
":10101},"isCoordinator":true}],"localID":"91715a50-7d50-4c54-9a03-873801da1cd1"}

简单项目

为了更好地理解Pilosa的功能,我们将创建一个名为Star Trace的示例项目,其中包含有1000个流行的Github存储库的信息,这些存储库名称中包含goStar Trace索引将包括数据点,例如编程语言,标签和star者(已经为项目加星标的人)。

尽管Pilosa没有以表格形式保存数据,但在描述数据模型时我们仍然使用术语。我们将主对象放在列中,并将这些对象的属性放在行中

例如,Star Trace项目将包含一个名为repository的索引,其中包含表示Github存储库的,以及表示编程语言标签等属性的行。我们可以通过将行分组为名为Fields的集合来更好地组织行。因此,repository(存储库)索引可能具有languages(语言)字段以及tags(标签)字段。您可以在文档的Data Model(数据模型)部分中了解有关索引和字段的更多信息。

创建架构(Create the Schema)

注意:如果您想在任何时候验证数据结构,可以按如下方式请求架构:

curl localhost:10101/schema
{"indexes":null}

在我们在导入数据或运行查询之前,需要创建索引及其中的字段。 下面先创建存储库索引:

下面命令成功的创建一个名为repository的索引

curl localhost:10101/index/repository -X POST
{"success":true}

接下来创建一个stargazer字段,该字段的行内容(数据)为star者的用户ID

curl localhost:10101/index/repository/field/stargazer \
-X POST \
-d '{"options": {"type": "time", "timeQuantum": "YMD"}}'
{"success":true}

由于我们的数据包含时间戳,这些时间戳代表用户start的时间,因此我们将字段类型设置为timetimeQuantum(时间量)是我们想要使用的时间分辨率,我们将其设置为starYMD(年月日)。

接下来创建language字段,其行(数据)中包含编程语言的ID

curl localhost:10101/index/repository/field/language \
-X POST
{"success":true}

language是一个set(集合)字段,但由于默认字段类型是set,因此我们未在字段选项中指定它。

从CVS文件导入数据

下载stargazer.cvslanguage.cvs文件

curl -O https://raw.githubusercontent.com/pilosa/getting-started/master/stargazer.csv
curl -O https://raw.githubusercontent.com/pilosa/getting-started/master/language.csv

运行下面的命令将数据导入到Pilosa

pilosa import -i repository -f stargazer stargazer.csv
pilosa import -i repository -f language language.csv

如果您正在使用PilosaDocker容器(名为pilosa),则应将* .csv文件复制到容器中,然后导入它们

docker cp stargazer.csv pilosa:/stargazer.csv
docker exec -it pilosa /pilosa import -i repository -f stargazer /stargazer.csv
docker cp language.csv pilosa:/language.csv
docker exec -it pilosa /pilosa import -i repository -f language /language.csv

请注意,用户ID(user IDs)和存储库ID(repository IDs)都重新映射到顺序整数存在数据文件中,它们不再与实际的Github ID相对应。 您可以查看languages.txt以查看语言的映射。

做一些查询(Queries)

  • 用户14(用户ID的映射整数值)star了那些repository(存储库)
curl localhost:10101/index/repository/query \
-X POST \
-d 'Row(stargazer=14)'
{
"results":[
{
"attrs":{},
"columns":[1,2,3,362,368,391,396,409,416,430,436,450,454,460,461,464,466,469,470,483,484,486,490,491,503,504,514]
}
]
}
  • 样本数据中的前5种编程语言是什么
curl localhost:10101/index/repository/query \
-X POST \
-d 'TopN(language, n=5)'
{
"results":[
[
{"id":5,"count":119},
{"id":1,"count":50},
{"id":4,"count":48},
{"id":9,"count":31},
{"id":13,"count":25}
]
]
}
  • 用户14且19star了哪些repository(存储库)
curl localhost:10101/index/repository/query \
-X POST \
-d 'Intersect(
Row(stargazer=14),
Row(stargazer=19)
)'
{
"results":[
{
"attrs":{},
"columns":[2,3,362,396,416,461,464,466,470,486]
}
]
}
  • 用户14或19star了哪些repository(存储库)
curl localhost:10101/index/repository/query \
-X POST \
-d 'Union(
Row(stargazer=14),
Row(stargazer=19)
)'
{
"results":[
{
"attrs":{},
"columns":[1,2,3,361,362,368,376,377,378,382,386,388,391,396,398,400,409,411,412,416,426,428,430,435,436,450,452,453,454,456,460,461,464,465,466,469,470,483,484,486,487,489,490,491,500,503,504,505,512,514]
}
]
}
  • 哪些存储库由用户14且19加星标,并且还用语言1编写:
curl localhost:10101/index/repository/query \
-X POST \
-d 'Intersect(
Row(stargazer=14),
Row(stargazer=19),
Row(language=1)
)'
{
"results":[
{
"attrs":{},
"columns":[2,362,416,461]
}
]
}
  • 将用户99999设置为存储库77777star
curl localhost:10101/index/repository/query \
-X POST \
-d 'Set(77777, stargazer=99999)'
{"results":[true]}

请注意,虽然用户ID99999可能此列其它ID不连续,但它仍然是一个相对较小的数字。 不要尝试在Pilosa中使用任意64位整数作为列ID或行ID,这将导致诸如性能不佳和内存不足错误等问题。

接下来做什么?

您可以跳转到Data Model数据模型以深入了解Pilosa数据模型,或查询有关PQL(Pilosa的查询语言Query Language)的更多详细信息。

查看Examples示例页面,了解Pilosa的实际使用样例。看我们不断扩展的客户端库Client Libraries有没有你喜欢的编程语言版本。

Pilosa文档翻译(二)入门指南的更多相关文章

  1. Android(Lollipop/5.0) Material Design(二) 入门指南

    Material Design系列 Android(Lollipop/5.0)Material Design(一) 简介 Android(Lollipop/5.0)Material Design(二) ...

  2. 转 猫都能学会的Unity3D Shader入门指南(二)

    猫都能学会的Unity3D Shader入门指南(二) 关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己 ...

  3. Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器

    Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...

  4. 分布式消息系统Jafka入门指南之二

    分布式消息系统Jafka入门指南之二 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 三.Jafka的文件夹结构 1.安装tree命令 $ sudo yu ...

  5. 深入浅出 JMS(二) - ActiveMQ 入门指南

    深入浅出 JMS(二) - ActiveMQ 入门指南 上篇博文深入浅出 JMS(一) – JMS 基本概念,我们介绍了消息通信的规范JMS,这篇博文介绍一款开源的 JMS 具体实现-- Active ...

  6. Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  7. Redis入门指南之二(安装及配置)

    本节主要内容 1. 前言2. redis安装3. 启动和停止Redis 1. 前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么red ...

  8. 猫都能学会的Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  9. redis入门指南(二)—— 数据操作相关命令

    写在前面 以下绝大部分内容取材于<redis入门指南>,部分结合个人知识,实践后得出. 只记录重要,明确,属于新知的相关内容,杜绝冗余和重复. 字符串 1.字符串类型是redis中最常见的 ...

  10. 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍

    我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...

随机推荐

  1. day12 函数的使用方法:初识迭代器和生成器

    生成器和迭代器比装饰器简单多了... 这是老师的博客地址: http://www.cnblogs.com/Eva-J/articles/7213953.html 前情回顾: #装饰器: # 在不修改一 ...

  2. Codeforces gym 101291 M (最长交替子序列)【DP】

    <题目链接> 题目大意:给你一段序列,要求你求出该序列的最长交替子序列,所谓最长交替子序列就是,这段序列的相邻三项必须是先递增再递减或者先递减再递增这样交替下去. 解题分析: 这与一道dp ...

  3. Python语言说明

    第一章:Python入门一.语言什么是语言:人与人之间的沟通计算机语言:计算机语言,即人和计算机之间的沟通语言. 按照级别分类:机器语言:最底层,最低级的语言,只能识别0/1,电平信号汇编语言:计算机 ...

  4. PhantomJS在Selenium中被标记为过时的应对措施

    今天使用PhantomJS时,Selenium提示PhantomJS被标记不赞成,我就蒙了.PhantomJS可是Headless浏览器中相当知名的一款,标记为过时,代表着将在未来版本摒弃掉这个支持. ...

  5. 1613. 最高频率的IP

    Description Given a string[] lines, each line will have an ip address , find the ip address with the ...

  6. codeforces651----A. Joysticks

    //贪心,注意特判即可 #include <iostream> using namespace std; int main() { ; cin >> a >> b; ...

  7. DRF 权限 频率

    DRF的权限 权限是什么 大家之前都应该听过权限~那么我们权限到底是做什么用的呢~~ 大家都有博客~或者去一些论坛~一定知道管理员这个角色~ 比如我们申请博客的时候~一定要向管理员申请~也就是说管理员 ...

  8. 信息系统项目管理师EV、PV、AC、BAC、CV、SV、EAC、ETC、CPI、SPI概念说明

    挣值常用名词: AC [Actual Cost] 实际成本:完成工作的实际成本是多少? [96版的ACWP] PV [Planned Value] 计划值: 应该完成多少工作? [96版的BCWS] ...

  9. 校园网使用IPV6 tunnel免流量上网

    前段时间购买了一个vps,做梯子感觉不错,但是在校园网内,vps流量远超10块钱校园流量,眼看着上个月vps的流量被清零.但是校园网有免费的IPV6,而我的VPS也有个IPV6的地址,于是乎就想着如何 ...

  10. MySql主键不区分大小写问题、查询不区分大小写问题

    一.问题一:MySql默认主键不区分大小写 实例: -- 创建混合类型 create table PlainText( Content nvarchar(50) , primary key(Conte ...