有人可以建议HBase架构点击流数据

时间:2015-07-02 16:50:48

标签: hadoop schema hbase bigdata

我想使用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 个答案:

答案 0 :(得分:3)

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

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

另一种方法是非规范化形式,以便hbase执行良好的查找。这里的每一行都是页面视图,并且每行都会附加客户数据。因此,对于上面的示例,最终会有三行。数据将重复。视频再次给出了关于它的信息(压缩事物)。

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

良好的视频链接here