【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]导语: MongoDB作为灵活高效易扩展的no-schema数据库,越来越受到互联网公司、游戏行业等开发者的青睐,但是MongoDB有着独特的语言接口,并不能很好满足数据分析师构建数据治理应用的需求…

【华为云技术分享】DLI跨源|当DLI遇见MongoDB

导语:

MongoDB作为灵活高效易扩展的no-schema数据库,越来越受到互联网公司、游戏行业等开发者的青睐,但是MongoDB有着独特的语言接口,并不能很好满足数据分析师构建数据治理应用的需求,而数据湖探索DLI恰好解决了这一痛点。搭配华为云上DDS服务提供的MongoDB,DLI无需数据搬迁,便可以直接使用SQL分析,并且将分析后的数据导入OBS,RDS,DWS等更多的云上数据存储。当DLI遇见MongoDB,让数据不再成为“孤岛”。

一、X游戏公司的数据分析场景

X游戏公司最近新上了一款爆款手游A,日活突破百万,每月都能为X公司贡献数千万的利润。随着游戏业务量的迅猛发展,游戏数据分析师小鑫遇到了前所未有的挑战。

当时为了游戏快速上线,架构师选用华为云DDS服务提供的MongoDB数据库,用于用户数据存储。MongoDB高性能,易扩展,no-schema等特性,很好的支撑了游戏爆发式数据增长以及游戏玩法的快速更新迭代。但是,现在存储在MongoDB里的海量数据,犹如隐藏在群山中的矿脉,如何才能挖掘其中更大价值?如何筛选出优质客户从而提供更好地服务?如何分析用户行为,为游戏开发提供切实可行的数据支持?。。。种种数据分析需求,让小鑫抓狂了,他急需一种易用高效的分析工具,协助他完成数据挖掘任务。

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

二、MongoDB的数据存储

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

在解决小鑫的问题之前,让我们来了解一下MongoDB。它是面向文档的数据库,介于关系型数据库和非关系型数据库之间,具有非常强大的扩展能力。其数据库里的一条记录就是一个文档,它由域和值对组成。MongoDB的文档是一个键值(key-value)对,类似于一个json对象。但MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这也是MongoDB的突出特点。

MongoDB的优势在于,其一:性能强。MongoDB拥有强大数据持久能力,减少对数据库系统的输入/输出操作;通过构建索引,支持更快的查询速度,并可以支持从嵌入式文档和数组中返回键值。其二:支持丰富的查询语言。MongoDB具有良好的开放性和兼容性,支持多种语言进行读写操作、文档搜索、数据聚合等操作,当然这些API是MongoDB特有的,存在一定学习成本。其三:便捷的复制能力。MongoDB提供一种叫副本集(replica set)的服务,将数据分布在多台机器上以实现数据冗余和自动故障转移。其四:扩展性强。MongoDB的核心功能之一就是良好的扩展能力。通过分片的方式将数据分布在一组计算机中,让每一个服务器里面存储的数据都是一样大小。

三、DLI崭露头角

小鑫找到了华为工程师Z,小Z向小鑫极力推荐华为云数据湖分析利器DLI,只要你会SQL,就能玩转云上各种数据源,包括了DDS。DLI提供跨源融合分析功能,兼容SQL,SPARK,FLINK编程API,只需轻松几步,便可分析DDS中的MongoDB数据,无需数据搬迁。“这么神奇?”小鑫跃跃欲试。小Z立刻祭出了,DLI分析MongoDB三版斧:

1. 建立跨源连接

DLI分析集群和用户的DDS集群分属不同的虚拟子网,存在网络隔离,而建立跨源连接,即可打通DLI集群与DDS集群的网络。具体步骤是

  • 先查看DDS集群网络信息,记录下集群所属VPC、子网、子网网段

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

  • 在DLI跨源连接管理界面,创建指向DDS的增强型跨源连接,在连接中指定DDS所属的VPC和子网

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

  • 最后在新建的跨源连接中绑定用户队列,增强型跨源连接绑定的队列需要是非按需队列

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

2. 创建跨源表

小鑫的样例数据包括了一个用户集合,一个装备集合。用户集合中存放着用户信息,装备集合中存放着用户游戏装备信息。

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

在DLI SQL编辑器中,执行创建MongoDB跨源表的SQL,创建关联的用户表和装备表,如下所示

 CREATE TABLE user(
  account string,
  phone string,
  age int,
  sex string,
  credit int,
  lastlogin int
) USING MONGO OPTIONS (
  "url" = "192.168.0.95:8635,192.168.0.98:8635/test?authSource=admin",
  "database" = "test",
  "collection" = "user",
  "user" = "rwuser",
  "password" = "***"
);
 
 CREATE TABLE equipment(
  account string,
  eq_id int,
  attack int,
  defence int,
  weight int,
  name string,
  value int
) USING MONGO OPTIONS (
  "url" = "192.168.0.95:8635,192.168.0.98:8635/test?authSource=admin",
  "database" = "test",
  "collection" = "equipment",
  "user" = "rwuser",
  "password" = "***"
);

代码100分

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

建表成功将在界面中返回成功。

3. 查询分析

建表完成后,在华为工程师的指导下,小鑫开始了再DLI中的数据探索,他先执行了一些简单的查询语句:

代码100分/*
  查询成年用户
*/
select * from user where age >= 18


/*
  查询装备id为666福星装备的记录
*/
SELECT * FROM equipment where eq_id = 666

之后,他又试了试两张表关联查询语句:

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

/*
  查询拥有福星装备的未成年用户信息
*/
select * from user as a join equipment as b where a.account=b.account and a.age < 18 and b.eq_id=666

【华为云技术分享】DLI跨源|当DLI遇见MongoDB[亲测有效]

结果如图所示:

看来这些基本的sql查询根本不在话下,小鑫着手开发游戏数据ETL,并很快搞定了业务部门的需求,收获了领导的认可。但需求总在变化,还有更加紧急的需求在等着小鑫,而DLI可以应付的了么?(未完待续…)

 

点击关注,第一时间了解华为云新鲜技术~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6950.html

(0)
上一篇 2023-03-30
下一篇 2023-03-30

相关推荐

  • Mysql中Sleep进程连接数过多问题解决「建议收藏」

    Mysql中Sleep进程连接数过多问题解决「建议收藏」连接数查看进入MySQL命令行,输入“showprocesslist;”命令后,Command列出现一大堆Sleep睡眠状态的连接进程。如下图:mysql连接进程Sleep睡眠状态过多将影响MySQ…

    2023-03-29
    151
  • Python实数类型:精确表示浮点数值

    Python实数类型:精确表示浮点数值在编程领域,浮点数一直是一个让人头疼的问题。由于浮点数由于精度问题,容易导致计算结果产生误差。因此,Python针对这个问题提供了精确类型Decimal,它可以用于表示任意长度和精度的十进制数。另外,Python的Fraction类型也可以用于精确表示分数类型数据。

    2023-12-12
    107
  • Python绘制圆形

    Python绘制圆形Python是一种常见的面向对象的编程语言,已经被广泛应用于各种应用程序、网站开发、数据分析等领域。Python的语法简洁、易于学习、功能强大,在开发过程中提高了开发的效率,同时在绘制图形方面,Python也具有很好的能力,例如绘制圆形。

    2024-05-18
    61
  • Python List 0 – 程序中的未赋值列表

    Python List 0 – 程序中的未赋值列表Python中的列表是非常强大的数据类型之一。不仅能存储多个值,还能够进行大量的操作和处理。在Python中,我们可以使用“[]”来表示一个列表并在里面添加元素。但是,当我们希望创建一个空列表时,我们需要使用未赋值列表。未赋值列表是Python的一个独特特性,它为我们提供了更好的灵活性,在程序中的应用非常广泛。

    2023-12-30
    96
  • Windows下安装postgresql-12版本

    Windows下安装postgresql-12版本(1)、 安装时,默认密码设置为sasa;pgadmin 4 启动时要输入的密码就是sasa (2)、取消远程ip限制 (a)、修改 C:Program FilesPostgreSQL12datap…

    2023-03-06
    150
  • Python注释的使用与规范

    Python注释的使用与规范Python作为目前最流行的编程语言之一,在各个领域都有广泛的应用。然而,当Python代码量越来越大,难以一下子理解代码的含义时,注释便显得尤为重要。注释不仅方便其他开发者了解代码逻辑,也可以帮助自己快速回忆代码的意图。在本文中,我们将讨论Python注释的使用与规范。

    2024-04-17
    67
  • 解决Python中name ‘os’ is not defined错误

    解决Python中name ‘os’ is not defined错误在Python中,我们可以使用import语句来导入其他的Python模块,通过导入模块来调用其中定义的方法和变量,这也是Python强大的面向对象编程的基础之一。然而,当我们在程序中出现name ‘os’ is not defined错误时,就表示Python找不到名为os的模块或者变量。这种错误通常在导入模块时出现,而且它还说明了一个很重要的问题,就是Python的模块机制。

    2024-03-25
    68
  • sql数据类型_8大基本数据类型

    sql数据类型_8大基本数据类型SQL列的数据类型分类: Unicode数据: 1.nchar 2.nvarchar 3.ntext 说明: Unicode支持的字符范围更大。存储 Unicode 字符所需要的空间更大。 傻瓜式教程

    2023-02-17
    133

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注