Pilosa文檔翻譯(二)入門指南

Pilosa支持默認使用JSONHTTP接口。
任何HTTP工具均可用於與Pilosa服務器進行交互。 本文檔中的示例將使用curl,默認狀況下可用於許多類UNIX系統,包括Linux和MacOS。 Windows用戶能夠在這裏下載curlnode

請注意,Pilosa服務器對打開文件的上限有要求。 檢查系統文檔,瞭解如何在達到該限制時增長它。 有關詳細信息,請參閱Open File Limitsgit

開始 Pilosa

按照安裝文檔中的步驟安裝Pilosa。 在終端中執行如下命令,以使用默認配置運行Pilosa(Pilosa將在localhost:10101中可用):github

pilosa server

若是您使用的是Docker鏡像,則可使用如下命令在默認地址上運行短暫的Pilosa容器:docker

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者(已經爲項目加星標的人)。json

儘管Pilosa沒有以表格形式保存數據,但在描述數據模型時咱們仍然使用術語。咱們將主對象放在列中,並將這些對象的屬性放在行中
例如,Star Trace項目將包含一個名爲repository的索引,其中包含表示Github存儲庫的,以及表示編程語言標籤等屬性的行。咱們能夠經過將行分組爲名爲Fields的集合來更好地組織行。所以,repository(存儲庫)索引可能具備languages(語言)字段以及tags(標籤)字段。您能夠在文檔的Data Model(數據模型)部分中瞭解有關索引和字段的更多信息。bash

建立架構(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有沒有你喜歡的編程語言版本。

相關文章
相關標籤/搜索