VR流NBA游戏

“一个快速发展的技术领域,新工具、技术和平台的推出非常频繁,而且很难跟上新趋势。我可以描述VR空间或数据工程,但事实上,这篇文章是关于两者交集。

虚拟现实 – 媒体的下一个前沿

我在 VR 领域的一家领先公司担任数据工程师,其使命是以完美的保真度捕捉和传输现实。我们的内容从点播体验到现场活动(如 NBA 游戏、喜剧表演和音乐会)不一而足。内容通过我们的应用程序、市场上的大多数 VR 耳机以及 Oculus 场地进行分发。

从内容流的角度来看,我们的用例与任何其他流式处理平台没有很大区别。我们通过互联网提供视频内容;用户可以打开我们的应用程序,浏览不同的频道,并选择他们想要观看的内容。

但这就是相似性结束的地方;从用户戴上耳机的那一刻起,我们就得到他们的全神贯注。在传统的流式处理应用程序中,内容可以在设备中流式传输,但无法知道用户是否确实在关注甚至查看设备。在VR中,我们确切地知道用户何时正在积极消费内容。

您可能还喜欢:实时分析:为商业智能流式传输大数据。

VR 事件数据流

我们身临其境的体验提供的一个组成部分是现场活动。与传统视频点播内容的主要区别在于,这些体验仅在活动期间进行实时流式传输。例如,我们将实时 NBA 游戏流式传输到市场上大多数 VR 耳机。实时事件在技术方面(摄像机、视频压缩、编码)和从用户行为生成的数据方面带来了一系列不同的挑战。

我们应用中的每个用户交互都会生成发送到我们的服务器的用户事件:应用打开、滚动浏览内容、选择特定内容以检查说明和标题、打开内容并开始观看、停止内容、快进,退出应用程序。即使在观看内容时,应用程序也会每隔几秒钟生成一个”信标”事件。在处理和分析之前,需要用内容元数据和地理位置信息来丰富来自设备的这些原始数据。

VR 是一个身临其境的平台,因此当特定内容对他们不感兴趣时,用户不能只是把目光移开;他们可以继续观看,切换到不同的内容,或者 – 在最坏的情况下 – 删除他们的耳机

例如,当用户进入我们的应用程序时,我们想知道是什么促使他们注意。他们是否对特定类型的内容感兴趣,还是只是浏览不同的体验?一旦他们决定要观看什么,他们是在整个时间停留在内容中,还是只看几秒钟?在观看了特定类型的内容(体育或喜剧)后,他们是否继续观看同一类型的内容?来自特定地理位置的用户对特定类型的内容更感兴趣吗?不同 VR 平台的市场渗透率如何?

从数据工程的角度来看,这是一个典型的场景,点击流数据,使用 VR 耳机而不是鼠标。来自用户行为的大量数据从 VR 设备生成,以 JSON 格式序列化并路由到我们的后端系统,其中数据被实时和批量丰富、预处理和分析。我们想知道此时此刻我们的平台上发生了什么。我们还想知道本周、上个月或本年度的不同趋势和统计数据。

运营分析的需求

Clickstream 数据方案具有一些定义良好的模式,具有经过验证的数据引入选项:流式处理和消息传递系统(如 Kafka 和 Pulsar)、使用 Apache NiFi 进行数据路由和转换、使用 Spark、Flink 或 Kafka Streams 进行数据处理。对于数据分析部分,情况完全不同。

存储和分析数据有几种不同的选项,但我们的用例有非常具体的要求:实时、低延迟分析,无需固定架构即可对数据进行快速查询,使用 SQL 作为查询语言。我们的传统数据仓库解决方案为报告分析提供了良好的结果,但它在实时分析方面却不能很好地扩展。

我们需要获取信息并实时做出决策:我们的用户发现哪些内容更吸引人,他们从世界哪些地方观看,他们在特定内容中停留多长时间,他们对广告、A/B 测试等有何反应?所有这些信息都可以帮助我们为 VR 用户推动一个更具吸引力的平台。

Dhruba Borthakur 在他的六个操作分析命题中给出了对用例的更好解释:

我们对实时仪表板和实时分析的查询非常复杂,涉及联接、子查询和聚合。由于我们需要实时信息,因此低数据延迟和低查询延迟至关重要。我们将此称为操作分析,此类系统必须支持所有这些要求。

人性化效率设计

可能大多数其他小公司面临的另一个挑战是数据工程和数据分析团队花费时间和资源的方式。数据管理市场有很多令人敬畏的开源项目,尤其是数据库和分析引擎,但作为数据工程师,我们希望处理数据,而不是花时间进行 DevOps、安装群集、设置 Zootoeand 和监控数十个 VM 和 Kubernetes 群集。内部开发和托管服务之间的适当平衡可帮助公司专注于创收任务,而不是维护基础设施。

对于小型数据工程团队,在选择正确的运营分析平台时,需要考虑以下几个方面:

  • SQL 支持是数据快速开发和民主化的关键因素
  • 大多数分析引擎要求数据在特定架构中格式化和结构化。我们的数据是非结构化的,有时不完整和混乱。引入另一层数据清理、构建和引入也会增加管道的复杂性。
  • 我们针对 VR 事件数据运营分析的理想架构

    数据和查询延迟

    我们的用户对特定内容的反应如何?此广告是否太具有侵入性,以至于用户无法停止观看内容?来自特定地理位置的用户现在正在消耗更多内容吗?现在哪些平台引领了内容消费?所有这些问题都可以通过操作分析来回答。良好的运营分析将使我们能够分析平台的当前趋势并相应地采取行动,例如以下情况:

    • 此内容是否在特定歌德区域中受到的牵引力降低?如果是这样,我们可以在我们的应用程序上添加针对该特定地理位置的促销横幅。
    • 此广告是否如此具有侵入性,导致用户停止观看我们的内容?我们可以限制外观速率或动态更改广告的大小。
    • 是否有大量旧设备访问我们的平台以获取特定内容?我们可以添加定义较低的内容,为这些用户提供更好的体验。
    • 这些用例有一些共同点:需要低延迟的操作分析引擎。所有这些问题必须在毫秒到几秒钟的范围内回答。

    并发

    此外,我们的使用模型需要多个并发查询。不同的战略和业务领域需要不同的答案。营销部门对每个平台或区域的用户数量更感兴趣;工程部门想知道特定编码如何影响实时事件的视频质量。

    高管希望了解在实时活动期间特定时间点有多少用户在我们的平台上,内容合作伙伴会有兴趣了解通过我们的平台使用其内容的用户份额。所有这些查询必须同时运行,以不同的格式查询数据,创建不同的聚合并支持多个不同的实时仪表板。每个基于角色的仪表板都会对同一组数据提供不同的观点:运营、战略、营销。

    实时决策和实时仪表板

    VR 事件的操作分析

    为了快速将数据运至运营分析系统,我们的理想架构将花费尽可能少的时间来挖掘和清理数据。数据来自 JSON 格式的设备,其中一些标识设备品牌和型号、正在监视的内容、事件时间戳、事件类型(信标事件、滚动、单击、应用退出)和原始 IP 的标识。

    所有数据都是匿名的,仅标识设备,而不是使用设备的人员。事件流在发布/订阅系统中(Kafka,Pulsar)中引入到我们的系统中,用于原始传入数据的特定主题我们运行一个快速的数据扩充过程,将地理位置数据附加到我们的事件,并发布到另一个主题,以获得丰富的数据。快速扩充阶段不会清除任何数据,因为我们希望这些数据能够快速引入到操作分析引擎中。

    这种扩充可以使用专用工具(如Apache NiFi)执行,甚至可以使用流处理框架(如 Spark、Flink 或 Kafka Streams)执行。在此阶段,还可以使用带有超时的窗口来会话事件数据,根据信标事件的频率(或缺失)确定特定用户是否仍在平台中。

    第二个引入路径来自内容元数据数据库。事件数据必须与内容元数据联接,才能将 ID 转换为有意义的信息:内容类型、标题和持续时间。在操作分析引擎中而不是在数据扩充过程中加入元数据的决定来自两个因素:需要尽可能快地处理事件,以及从所需的常量点查询卸载元数据数据库获取特定内容的元数据。

    通过使用原始内容元数据数据库的更改数据捕获并在操作分析引擎中复制数据,我们实现了两个目标:保持系统中操作操作和分析操作之间的分离,以及使用操作分析引擎作为 API 的查询终结点。

    将数据加载到操作分析引擎中后,我们使用可视化工具(如 Tableau、Superset 或 Redash)来创建交互式实时仪表板。这些仪表板通过使用 SQL 查询操作分析引擎进行更新,并每隔几秒钟刷新一次,以帮助可视化来自实时事件流数据的更改和趋势。

    从实时分析中获得的见解有助于做出如何为我们的用户提供更好的观看体验的决策。我们可以决定在特定时间点要推广哪些内容,这些内容将定向到特定区域的特定用户,使用特定的耳机型号。通过检查该内容的平均会话时间,我们可以确定哪些内容更具吸引力。我们可以在我们的应用程序中包括不同的可视化效果,执行 A/B 测试并实时获得结果。

    结论

    运营分析允许企业根据当前事件流实时做出决策。这种持续分析是了解全球范围的 VR 内容流等平台中用户行为的关键,通过这些平台可以实时根据用户地理位置、耳机制造商和模型、连接速度和内容等信息做出决策订婚。操作分析引擎提供对原始 JSON 数据的低延迟写入和查询,具有 SQL 接口和与我们的最终用户 API 交互的能力,提供了无限的可能性,有助于使我们的 VR 内容更加出色!

    进一步阅读

    Comments are closed.