有人可以就 HBase 架构点击流数据提供建议吗

Posted

技术标签:

【中文标题】有人可以就 HBase 架构点击流数据提供建议吗【英文标题】:Can someone advise on an HBase schema click stream data 【发布时间】:2015-07-02 16:50:48 【问题描述】:

我想使用 HBase 创建一个点击流应用程序,在 sql 中这将是一项非常简单的任务,但在 Hbase 中我没有第一个线索。有人可以建议我在 HBase 中使用的架构设计和键。

我提供了一个粗略的数据模型和几个我想询问数据的问题。

关于访问数据我想问的问题

哪些事件导致了转化? 最后一页是什么/浏览了多少页? 客户放弃了哪些页面? 20-30岁的男性顾客喜欢买什么产品? 客户购买了产品 x 也可能购买产品 y? 第一页的转化量?



    PageViews: [
         
            date: "19700101 00:00",
            domain: "http://foobar.com", 
            path: "pageOne.html", 
            timeOnPage: "10", 
            pageViewNumber: 1,
            events: [
                 name: "slideClicked", value: 0, time: "00:00",
                 name: "conversion", value: 100, time: "00:05"
                ],
            pageData: 
                category: "home",
                pageTitle: "Home Page"
            
        ,
         
            date: "19700101 00:01",
            domain: "http://foobar.com", 
            path: "pageTwo.html", 
            timeOnPage: "20", 
            pageViewNumber: 2,
            events: [
                 name: "addToCart", value: 50.00, time: "00:02"
                ],
            pageData: 
                category: "product",
                pageTitle: "Mans Shirt",
                itemValue: 50.00
            
        ,
         
            date: "19700101 00:03",
            domain: "http://foobar.com", 
            path: "pageThree.html", 
            timeOnPage: "30", 
            pageViewNumber: 3,
            events: [],
            pageData: 
                category: "basket",
                pageTitle: "Checkout"
            
        
    ],
    Customer: 
        IPAddress: 127.0.0.1,
        Browser: "Chrome",
        FirstName: "John",
        LastName: "Doe",
        Email: "john.doe@email.com",
        isMobile: 1,
        returning: 1,
        age: 25,
        sex: "Male"
    

【问题讨论】:

【参考方案1】:

嗯,你的数据主要是一对多的关系。一个客户和一组页面视图实体。而且由于您的所有查询都是以客户为中心的,因此将每个客户存储为 Hbase 中的一行并将 customerid(在您的情况下可能是电子邮件)作为行键的一部分是有意义的。

如果您决定为一位客户存储一行,则每个页面查看详细信息都将以嵌套形式存储。有关 hbase 设计的视频链接将帮助您理解这一点。因此,对于您上面的示例,您会得到一行和三个嵌套实体

另一种方法是非规范化形式,让 hbase 执行良好的查找。这里每一行都是页面视图,并且每一行都附加了客户数据。所以对于上面的例子,你最终得到了三行。数据将被复制。该视频再次提供了有关该信息的信息(压缩的东西)。

您在每个页面视图中都有更多嵌套级别 - 实时事件和页面数据。因此,就非规范化而言,它只会变得更糟。由于 Hbase 中的一切都是键值对,因此很难查询和匹配这些嵌套级别。希望这可以帮助您开始

好视频链接here

【讨论】:

您好,感谢您的回复。考虑到该示例,是否建议按照您的建议将数据采用一种格式,然后在询问不同的数据问题时使用另一种格式以便更快地访问? 因为您已经有多个嵌套级别,可能会采用第二种方法,非规范化的方法会更好,因为您将 pageview id 和 cust id 作为行键,其余详细信息平放在一个级别.这样可以减少嵌套级别。我希望你已经看过视频并且对我所说的有所了解

以上是关于有人可以就 HBase 架构点击流数据提供建议吗的主要内容,如果未能解决你的问题,请参考以下文章

2021年大数据HBase:Hbase的架构!建议收藏

万字了解HBase架构(建议收藏)

有人可以建议使用火花流进行日志分析的最佳方法吗

HBase 架构分析

Hbase原理架构与安装部署教程

HBase的系统架构全视角解读