大数据:Spark,AWS和SQL

闻数起舞
闻数起舞
获得大量数据非常容易。如果您不想自己做,这里是可公开获得的大数据集列表。我在一个MySQL服务器(也托管在AWS上)上有多年的NASA大气读数,因此我将其导出到本地计算机上的一个巨大的.csv文件中。这花了5个小时,但大型计算机的价格也是如此。

使用S3和EMR进行简单的云计算

很少有流行语像大数据那样引起人们的关注,这是有充分的理由的:全球经济依靠信息,而我们每天都在成倍地增加它。"云计算"也被广泛使用。

但这还不是全部,您对坐在前面的投资者说。我们的数据-很大。有人扬眉。您会听到咳嗽声。它在云端。房间立即鼓掌。

通常,这就是硅谷风投会议的进行方式,或者我听说。

但是,大事令人生畏,我只是一个拥有Jupyter笔记本和梦想的人。但是我记得:"我们都处于困境之中,但是我们当中有些人正在看云"。奥斯卡·王尔德可能是这样写的。

因此,我开始了一个向上的旅程:谷歌搜索"如何云",然后谷歌搜索我的许多错误消息,直到发现类似连贯的设置过程的东西,我将在此处详细介绍,以便您也可以将头放在云中 。

云到底是什么?

云计算使用互联网(传输数据的"云")来告诉其他计算机该怎么做,而不是在您的计算机上本地执行。当公司谈论"云存储"时,它们就是通过Internet /云将数据发送到其他一些要存储的计算机。

这个短语有点误导:您不会将数据发送到中间层来回浮动,直到再次需要它为止。没有所谓的"无形存储":无论是在磁盘,内存还是寄存器中,所有现有字节都写在某个地方的晶体管中。量子计算可能会改变这一点,但是现在让我们避免谈论这个令人痛苦的复杂主题。

因此,要通过云计算大数据,我们需要一台以上的计算机来运行流程。幸运的是,对于像我这样的用户,他们没有硬件或现金来建立我们自己的服务器集群,有很多大型科技公司会以合理的价格租用处理能力(我的90 GB二氧化硫分析价格约为50美分)。您需要为所用的东西付费,因此可以轻松进行存储和计算。

对于大数据评估,我们需要:

· 数据

· 存放它的地方

· 在某个地方紧缩

我将列出从零到云的所有步骤。我使用MySQL来加载数据,使用Amazon Web Services进行存储和集群设置,并使用Jupyter笔记本中的Spark进行实际计算。在此过程中,我将链接到多个设置教程,所有这些都很好地完成了 解释"我点击要执行此操作的那一点",否则这将是一个相当棘手的问题。

获取一些数据

获得大量数据非常容易。如果您不想自己做,这里是可公开获得的大数据集列表。我在一个MySQL服务器(也托管在AWS上)上有多年的NASA大气读数,因此我将其导出到本地计算机上的一个巨大的.csv文件中。这花了5个小时,但大型计算机的价格也是如此。

得到了您的数据?好。那是容易的部分。

信息桶

亚马逊的简单存储服务(S3)是远程数据存储的行业标准。简单,灵活且便宜。您创建"存储桶"并将数据放入其中。然后,您可以将这些存储桶中的数据与其他AWS功能结合使用,就像我们稍后将介绍的那样。

设置您的AWS亚马逊帐户可能是整个过程中最困难的部分。我遵循了公司的指南,该指南将指导您完成基本步骤;经过五分钟的困惑点击后,我盯着自己的数字存储桶。

我使用AWS Command Line Interface将数据倒入存储桶;这是一种脚本和自动化数据管道以进行云集成的好方法。

# after pip installation & inputting the user keys you just created

# copy a file in working directory to designated bucket

$ aws s3 cp data.csv s3://big-data-bucket/

除此之外,您还可以仅在AWS网站控制台上单击存储桶,然后单击上载文件并从计算机中进行选择。

云计算机

我想做的实际分析涉及Spark。这是一种出色的分布式处理引擎,可以有效地组织集群中的多个节点来完成同一任务。我使用Docker在本地测试了Python API PySpark,因为在没有虚拟环境的情况下安装Spark就像在雷雨中放牧猫。它运行良好,但是要在云中进行实际计算,我需要建立一个节点集群-物理 机器或虚拟分区来处理我输入的数字。

输入Amazon Elastic MapReduce,这是一项便捷的服务,可让您在其庞大的服务器组中轻松创建集群。我们需要一个EC2安全密钥对,因此请转到其指南,并查看Windows或Linux / Mac设置。

要设置其余的EMR,我遵循了官方指南。唯一棘手的部分是配置引导脚本以安装我们将在Jupyter中使用的库。有一些官方示例,但我喜欢Brent Lemiux设置中的示例:制作一个名为boot.sh的文本文件,然后粘贴此脚本,然后在所需的库中进行编辑:

#!/bin/bashsudo pip install -U \

numpy \

scikit-learn

# list all the libraries you need following this format

将文件上传到您的S3存储桶。从AWS控制台开始创建新集群,然后单击高级选项。进行时,请确保:

· 在"软件配置"中:选中复选框以启用Spark

· 在"常规选项"中:为集群命名并选择其存储桶

· 在"硬件选项"中:自定义节点的数量和复杂性。定价会相应调整,因此我坚持使用最便宜的m4.large

· 在"其他选项"中:添加自定义引导操作,然后选择您之前创建的boot.sh

· 在"安全选项"中:选择您之前创建的EC2密钥,这样就不会有人窃取您的集群

集群完成安装所需的时间不到半小时。

欢迎来到云端

集群启动后,我们可以创建Jupyter笔记本并开始滚动。在EMR控制台网站上,单击左侧的笔记本,然后创建笔记本,选择刚初始化的集群,然后将其打开。恭喜,您已成功上云。

当您打开该群集的笔记本时,它将实例化一个SparkSession对象作为spark,我们可以使用该对象加载数据:

# spark's native read() method handles bucket loading

df = spark.read().csv("s3://big_data.csv")

# in .csv() specify your desired s3 bucket url

现在,我们有了一个并行化的弹性分布式数据框,它与我们从熊猫那里知道的普通数据框等效。出于多种原因,它们非常适合并行分布式处理,但是下一次我们将继续讨论。如果您想立即开始,这里有一个PySpark教程。

请记住:您在云端。对您内心的内容进行复杂的转换,因为亚马逊正在做所有艰苦的工作,并且会按时收费。完成操作后,请确保停止笔记本和群集,以免他们没钱。

您现在是大数据的一部分,因此可以做一些有趣的事情。

下次,我将使用Spark在EMR上分析NASA的SO2数据集。

(本文翻译自Mark Cleverley的文章《Big Data: Spark, AWS & SQL》,参考:https://medium.com/@

mark.s.cleverley/big-data-spark-aws-sql-3dd6f2a9abe)

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论