上QQ阅读APP看书,第一时间看更新
1.8 案例研究:大数据移动应用程序
谷歌的Waze GPS导航APP拥有9,000万月活用户[1],是最成功的大数据APP之一。早期的GPS导航设备和APP依靠静态地图和GPS坐标来确定到达目的地的最佳路线,无法动态调整以适应不断变化的交通状况。
Waze处理大量的众包数据,即用户及其设备在全球范围内不断提供的数据。当接收到数据时,Waze通过分析数据来确定在最短的时间内到达目的地的最佳路线。为此,Waze要依靠连接到Internet的智能手机自动将位置更新发送到服务器(假设被允许)。Waze使用这些数据分析当前的交通状况,动态地为用户选择路线并调整地图。用户也可以报告其他信息,例如路障、建筑、障碍物、故障车道中的车辆、警察位置、汽油价格等。然后Waze会向处于同样位置的其他司机发出警示。
Waze提供服务需要使用多种技术。我们并不了解Waze的真实实现方式,以下是我们推断的其可能使用的技术列表,并将在第11~16章中使用其中的许多内容。
- 现在的很多APP在开发时会使用一些开源软件。我们将在本书中充分利用开源库和开源工具。
- Waze通过Internet在服务器和用户的移动设备之间传递信息。这些数据通常以JSON(JavaScript Object Notation)格式进行传输,我们将在第9章中介绍相关知识,并在后续章节中使用它。用到的Python库一般会隐藏JSON数据的实现细节。
- Waze使用语音合成来播报行车路线和警报,并使用语音识别来理解语音命令。我们将在第13章中使用IBM Watson的语音合成和语音识别功能。
- 当Waze将语音形式的自然语言命令转换为文本时,需要使用自然语言处理(NLP)技术来识别要执行的操作。我们将在第11章中介绍NLP,并在随后的几章中使用它。
- Waze对动态更新进行可视化,例如警报和地图,还允许用户移动、放大或缩小地图。本书使用Matplotlib和Seaborn创建动态可视化,并在第12章和第16章中使用Folium实现交互式地图。
- Waze将手机用作物联网设备。每部手机都是一个GPS传感器,可以通过互联网将数据持续传输到Waze服务器。在第16章中,我们将介绍物联网并使用模拟物联网流传感器。
- Waze同时接收来自数百万部手机的物联网流数据。它必须实时处理、存储和分析这些数据,以更新手机上的地图,显示和发出相关的警报,并根据情况更新行车路线。这些操作都需要借助云中的计算机集群实现的大规模并行处理能力。在第16章中,我们将介绍各种大数据基础技术,这些技术包括接收流数据、使用数据库存储大数据、利用提供大规模并行处理功能的软件和硬件处理数据等。
- Waze利用人工智能来执行数据分析任务,使其能够根据收到的信息预测最佳路线。在第14章和第15章中,我们分别使用机器学习和深度学习来分析大数据并进行预测。
- Waze可能会将其路由信息存储在图形数据库中。这样的数据库可以有效地计算最短路径。我们将在第16章介绍图形数据库,如Neo4J。
- 现在,许多汽车都配备了能够“看到”附近的汽车和障碍物的设备。这些设备可以用来实现自动制动系统,是汽车自动驾驶技术的关键组成部分。导航APP可以利用摄像头和传感器,通过基于深度学习的计算机视觉技术“动态”分析图像,自动识别道路上的障碍物和停靠在路边的汽车,而无须用户提供报告。我们将在第15章介绍计算机视觉中使用的深度学习技术。
[1] https://www.waze.com/brands/drivers/.