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

标签 hadoop schema hbase bigdata

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

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

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

哪些事件导致了转化? 最后一页是什么/浏览了多少页? 客户离开了哪些页面? 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"
    }
}

最佳答案

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

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

另一种方法是非规范化形式,以便 hbase 执行良好的查找。这里每一行都是页面 View ,每一行都会附加客户数据。所以对于上面的例子,你最终得到三行。数据会重复。同样,视频也提供了相关信息(压缩的东西)。

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

好的视频链接 here

关于hadoop - 有人可以建议 HBase 架构点击流数据吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31190391/

相关文章:

hadoop - Hadoop 1.0.3 的 HBase 配置

配置单元中的 java.sql.SQLException : org. apache.thrift.transport.TTransportException?

hadoop - 如何从 HIVE 中的日期中减去月份

java - hadoop mapreduce 无序元组作为映射键

hadoop - 如何在没有标题和非表格形式的情况下打印配置单元直线输出

sql-server - TSQL 定义临时表(或表变量)而不定义架构?

ruby-on-rails - 在我的 Rails DB 上运行迁移,安静地添加一列并随机删除一个表,而不会出现控制台错误

hadoop - 从本地计算机连接配置单元时,HA群集上的java.net.UnknownHostException:<CLUSTER_NAME>

node.js - Mongoose Schema 中数据分组的正确结构

hadoop - 使用 HBase-Hive 集成删除值