有人能就hbase模式提供建议吗

mzsu5hc0  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(276)

我想使用hbase创建一个click stream应用程序,在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"
    }
}
pkbketx9

pkbketx91#

你的数据主要是一对多关系。一个客户和一组页面视图实体。由于您的所有查询都是以客户为中心的,因此在hbase中将每个客户存储为一行并将customerid(在您的情况下可能是email)作为row key的一部分是有意义的。
如果您决定为一个客户存储一行,则每个页面视图详细信息都将以嵌套方式存储。有关hbase设计的视频链接将帮助您理解这一点。因此,对于上面的示例,您将得到一行和三个嵌套实体
另一种方法是使用非规范化形式,让hbase执行良好的查找。在这里,每一行都是页面视图,每一行都会附加客户数据。数据将被复制。同样,视频也提供了关于这方面的信息(压缩的东西)。
在每个页面视图中有更多的嵌套级别—实时事件和页面数据。所以它只会变得更糟,关于反规范化。由于hbase中的所有内容都是一个键值对,因此很难查询和匹配这些嵌套级别。希望这能帮你开球
这里有很好的视频链接

相关问题