zoukankan      html  css  js  c++  java
  • Pilosa文档翻译(二)入门指南

    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有没有你喜欢的编程语言版本。

  • 相关阅读:
    HDU 5608
    win10 UWP 九幽数据分析
    win10 UWP 九幽数据分析
    win10 UWP 九幽数据分析
    博客发在win10.me
    博客发在win10.me
    博客发在win10.me
    win10 UWP 圆形等待
    win10 UWP 圆形等待
    win10 UWP 圆形等待
  • 原文地址:https://www.cnblogs.com/oloroso/p/10027502.html
Copyright © 2011-2022 走看看