导言

根据Gartner的数据,到2020年全球将有208亿个连接产品投入使用。Uber机器学习负责人Danny Lange的目标是将机器学习待到Uber业务的每个角落。连接事物的示例包括联网汽车和设备以及医疗保健、电信、制造、零售和金融的应用。利用来自这些设备的大量数据、实时处理事件,应用机器学习来增加价值,以及可扩展的快速存储。这些类型的应用程序的体系结构通常是事件驱动的微服务体系结构。

这是系列文章的最后一篇,该应用程序将流数据与机器学习相结合,对Uber汽车聚集的地点和时间进行实时分析和可视化,从而预测和可视化最受欢迎的Uber地点。

  1. 本系列的第一部分讨论如何创建机器学习模型,使用Apache Spark K-means算法按位置对Uber数据进行聚类。

  2. 在第二篇文章讨论了使用保存的K-mean与数据流模型做的时候尤伯杯车都聚集在那里,并实时分析。

  3. 在第三后讨论建立一个实时仪表板直观显示谷歌地图上的集群数据。下图描绘了数据管道:

本文将在Spark Streaming写入到MAPR-DB使用Spark HBase和MAPR-DB二进制接口以及使用SQL Spark和DataFrames从MAPR-DB解读。下图描绘了数据管道:

  • Uber旅行数据使用Kafka API发布到MapR Streams主题;

  • 订阅第一个主题的Spark Streaming应用程序使用群集位置丰富事件,并将结果以JSON格式发布到另一个主题;

  • 订阅第二个主题的Vert.x Web应用程序在热图中显示Uber旅行群集;

  • 订阅第二个主题的Spark Streaming应用程序使用Spark HBase和MapR-DB二进制连接器将数据存储在MapR-DB中;

  • Spark批处理应用程序使用Spark HBase和MapR-DB二进制连接器使用Spark SQL查询MapR-DB;

Spark和MapR-DB

处理大量流数据时遇到的挑战之一是确定要存储它的位置。使用MapR-DB(HBase API或JSON API),表按键范围自动按群集分区,提供按行键可扩展和快速读写。

Spark HBase和MapR-DB二进制连接器利用Spark DataSource API。连接器体系结构再每个Spark Executor中都有一个HConnection对象,允许使用MapR-DB进行分布式并行写入、读取或扫描。

Spark Streaming写入MapR-DB

在第二篇文章中你可以阅读有关MapR Streams Spark Streaming代码的信息。本文专注于MapR-DB部分。来自MapR-DB主题的消息采用JSON格式,并且每个Uber行程包含以下内容:群集ID、行程日期时间、纬度和经度等。示例如下:

1{"cid":18, "dt":"2014-08-01 08:51:00", "lat":40.6858, "lon":-73.9923, "base":"B02682", "clat":40.67462874550765, "clon":-73.98667466026531}"cid":18, "dt":"2014-08-01 08:51:00", "lat":40.6858, "lon":-73.9923, "base":"B02682", "clat":40.67462874550765, "clon":-73.98667466026531}

在下面的代码中,使用HBaseContext对象创建了一个HBaseConfiguration 对象。将HBaseContext 配置广播信息携带到HConnections 执行器中。

在下面的代码中:

  • 从消息键值对中获取消息值;

  • 调用HBaseContext streamBulkPut 方法,传递消息值DStream,  TableName 写入,以及将Dstream值转换为HBase put记录的函数;

    convertToPut 函数解析JSON字符串并创建HBase PUT 对象。

Spark Streaming允许大量并行发送存入HBase。

Spark SQL和DataFrames

Spark HBase和MapR-DB二进制连接器使用户能够使用Spark DataFrame在MapR-DB之上执行复杂的SQL查询,同时应用分区修建、列修建、谓词下推和数据局部性等关键技术。

要使用Spark HBase和MapR-DB二进制连接器,需要为HBase和Spark表之间的模式映射定义Catalog。以下是存储Uber数据的模式:

  • 复合行键包含集群ID,基数,数据和时间,由下划线分隔。

  • 存在用于存储所有数据的列族数据和用于统计汇总的列族统计数据。

  • 有两列,一列用于纬度,一列用于每次旅行的经度。

Catalog定义了HBase和Spark表之间的映射。该目录有两个关键部分。一个是行键定义;另一个是Spark中的表列与HBase中的咧族和列名之间的映射。以下示例为MapR-DB表定义Catalog模式,其名称为/ user / user01 / db / uber,行和列分别为lat和lon。

将数据从MapR-DB加载到Spark DataFrame

withCatalog 下面的功能中:

  • SQLContext 读返回一个DataFrameReader 可用于在数据帧读取数据;

  • options函数将基础数据源的输入选项添加到DataFrameReader

  • format函数指定的输入数据源格式DataFrameReader

  • load() 函数将输入加载为DataFrame。 函数df 返回的前20行数据帧  withCatalog随输出df.show

输出 df.show 如下所示:

在下面的示例中, df.filter 使用给定的SQL表达式过滤器的行来过滤簇ID(行密钥的开始)>=9. select选择一组列:key 、lat 和lon 。

结果 df.show 如下所示:

以上讨论的用例体系结构的所有组件都可以与MapR融合数据平台在同一个集群上运行。

长按订阅更多精彩▼

基于大数据的Uber数据实时监控(Part 4:Spark Streaming、DataFrames和HBase)相关推荐

  1. 基于大数据的Uber数据实时监控(Part 1:Spark机器学习)

    导言 据Gartner称:到2020年,25亿辆联网汽车将成为物联网的主要对象.联网车辆预计每小时可以生成25GB的数据,对这些数据进行分析实现实时监控.大数据目前是10个主要领域之一,利用它可以使城 ...

  2. 基于大数据的Uber数据实时监控(Part 2:Kafka和Spark Streaming)

    导言 本文是系列文章的第二篇,我们将建立一个分析和监控Uber汽车GPS旅行数据的实时示例.在第一篇文章中讨论了使用Apache Spark的K-means算法创建机器学习模型,以根据位置聚类Uber ...

  3. 基于大数据的Uber数据实时监控(Prat 3:使用Vert.x的实时仪表盘)

    导言 据Gartner称,到2020年智能城市将使用约13.9亿辆联网车,物联网传感器和设备.城市内的位置和行为模式分析将有助于优化流量,更好的规划策略和更智能的广告.电信公司正在使用移动电话位置数据 ...

  4. 基于Android中socket流的实时监控及遥控系统

    该系统分为两部分,首先是局域网手机之间的视频传输(条件有限用手机摄像头代替模块),其次是手机蓝牙与arduino开发板的信息传输.代码注释较为详细,这里直接上代码. 客户端视频数据获取: packag ...

  5. grafana计算不同时间的差值_大数据时代!如何基于Spark Streaming构建实时计算平台...

    随着互联网技术的迅速发展,用户对于数据处理的时效性.准确性与稳定性要求越来越高,如何构建一个稳定易用并提供齐备的监控与预警功能的实时计算平台也成了很多公司一个很大的挑战. 自2015年携程实时计算平台 ...

  6. 广告业务系统 之 数据中转站 —— “日志中心-实时服务监控”

    文章目录 广告业务系统 之 数据中转站 -- "日志中心-实时服务监控" 日志中心 实时服务监控 -- 前链路日志分析 日志收敛手段 -- "手术开口" 基于 ...

  7. 实时监控:基于流计算 Oceanus ( Flink ) 实现系统和应用级实时监控

    作者:吴云涛,腾讯 CSIG 高级工程师 本文描述了如何使用腾讯云大数据组件来完成实时监控系统的设计和实现,通过实时采集并分析云服务器(CVM)及其 App 应用的 CPU和内存等资源消耗数据,以短信 ...

  8. 【精益生产】数字化转型探索之路——基于精益生产管理的数据决策分析体系

    随着"工业4.0"."两化"融合.<中国制造2025>等理念或政策的提出,粗放式的制造生产模式的弊端被越来越多的暴露出来,中国制造昔日冠以" ...

  9. 340页11万字智慧政务大数据资源平台数据治理方案

    一.1.1 数据治理子系统 建设大数据治理子平台,提供数据标准管理.元数据管理.数据质量管理能力,实现对数据的规范治理与管理:提供数据工厂能力,实现对归集的数据进行清洗.加工,支撑业务的数据应用需求. ...

最新文章

  1. 抽象类注意事项(面试常常涉及)
  2. Momenta完全无人驾驶首次曝光!城区道路混行无接管,遭遇逆行也不怕,特斯拉Waymo路线二合一...
  3. IIS7.5中神秘的ApplicationPoolIdentity
  4. 大牛唐健,带你领略游戏服务器与后台架构的奥妙
  5. 1041 考试座位号 (15分)——17行代码AC
  6. 阿里巴巴荣获年度最佳BCM创新实践奖
  7. Oracle数据库的安装
  8. mysql操作 菜鸟,菜鸟通关宝典之mysql基础操作
  9. OpenCV4.3 Java 编程入门:Core 组件中的数据结构与方法
  10. 关于高清,720p,1080i,1080p的一些解释及深入剖析
  11. 计算机开机按f1,图文讲解开机按f1的解决方法,简单明了!
  12. 看了这个,再也不怕流量劫持了!
  13. 大学计算机Excel咨询表,大学计算机(二)第十一讲 Excel图表分析
  14. 基于Python Django实现Prometheus Exporter
  15. TextToSpeech文字转语音
  16. 售前售后问题(甲润)
  17. 【C++笔记】 判断两个数互质(做大公约数为1)
  18. 6-2 指针与数组-矩阵的各列求和分数 10 本题要求实现一个函数,求一个n (小于10)行7列的二维数组各列的和。将各列和存放在一个至少7个单元的一维数组中。函数接口定义:
  19. CAD .dwg数据转shp位置有偏移,空间校正来解决
  20. 批量改尺寸的软件哪个好?这款工具可以提升工作效率

热门文章

  1. 点分治 + 树状数组 ---- E. Close Vertices(点分治 + 二维数点)
  2. 思维dp ---- K步最短路 D. Explorer Space
  3. 点分治问题 ----------- luoguP2942 [WC2010]重建计划 [点分治 + bfs + 单调队列 + 预处理建树 + 二分 + 01分数规划]
  4. python自动化办公实例展示_自动化办公 Python 操控 Word
  5. BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】
  6. P1444 [USACO1.3]虫洞 wormhole,新手向超详细讲解(搜索、判环、拆点、好题)
  7. P1972 [SDOI2009]HH的项链(离线树状数组)
  8. oracle 修改默认日期格式_查看MySQL查询计划的方法和格式
  9. linux查进程ps和top,Linux中几个进程查看命令总结 ps, top, htop, vmstat
  10. linux笔记 1-13-软件安装