如何使用5个Python库管理大数据?
如今,Python真是无处不在。尽管许多看门人争辩说,如果他们不使用比Python更难的语言编写代码,那么一个人是否真是软件开发人员,但它仍然无处不在。Python被用于自动化,管理网站,分析数据和处理大数据。随着数据的增长,我们对其进行管理的方式越来越需要调整。我们不再局限于仅使用关系型数据库。这也意味着现在有更多与这些新系统进行交互的工具,例如Kafka,Hadoop(具体来说是HBase),Spark,BigQuery和Redshift(仅举几例)。这些系统中的每一个都利用如分布式、柱状结构和流数据之类的概念来更快地向终端用户提供信息。对于更快、更新的信息需求将促使数据工程师和软件工程师利用这些工具。这就是为什么我们想要提供一些Python库的快速介绍来帮助你。
BigQuery
谷歌BigQuery是一个非常受欢迎的企业仓库,由谷歌云平台(GCP)和Bigtable组合而成。这个云服务可以很好地处理各种大小的数据,并在几秒钟内执行复杂的查询。
BigQuery是一个RESTful网络服务,它使开发人员能够结合谷歌云平台对大量数据集进行交互分析。可以看看下方另一个例子。
连接到BigQuery,然后开始获取有关将与之交互的表和数据集的信息。在这种情况下,Medicare数据集是任何人都可以访问的开源数据集。
关于BigQuery的另一点是,它是在Bigtable上运行的。重要的是要了解该仓库不是事务型数据库。因此,不能将其视为在线交易处理(OLTP)数据库。它是专为大数据而设计的。所以它的工作与千万字节(PB)级的数据集的处理保持一致。
Redshift and Sometimes S3
接下来是亚马逊(Amazon)流行的Redshift和S3。AmazonS3本质上是一项存储服务,用于从互联网上的任何地方存储和检索大量数据。使用这项服务,你只需为实际使用的存储空间付费。另一方面,Redshift是一个管理完善的数据仓库,可以有效地处理千万字节(PB)级的数据。该服务使用SQL和BI工具可以更快地进行查询。
Amazon Redshift和S3作为一个强大的组合来处理数据:使用S3可以将大量数据上传Redshift仓库。用Python编程时,这个功能强大的工具对开发人员来说非常方便。
这是一个选择使用psycopg2的基本连接的脚本。我借用了Jaychoo代码。但是,这再次提供了有关如何连接并从Redshift获取数据的快速指南。
PySpark
让我们离开数据存储系统的世界,来研究有助于我们快速处理数据的工具。Apache Spark是一个非常流行的开源框架,可以执行大规模的分布式数据处理,它也可以用于机器学习。该集群计算框架主要侧重于简化分析。它与弹性分布式数据集(RDD)配合使用,并允许用户处理Spark集群的管理资源。
它通常与其他Apache产品(例如HBase)结合使用。Spark将快速处理数据,然后将其存储到其他数据存储系统上设置的表中。
有时候,安装PySpark可能是个挑战,因为它需要依赖项。你可以看到它运行在JVM之上,因此需要Java的底层基础结构才能运行。然而,在Docker盛行的时代,使用PySpark进行实验更加方便。
阿里巴巴使用PySpark来个性化网页和投放目标广告——正如许多其他大型数据驱动组织一样。
Kafka PythonKafka
是一个分布式发布-订阅消息传递系统,它允许用户在复制和分区主题中维护消息源。
这些主题基本上是从客户端接收数据并将其存储在分区中的日志。Kafka Python被设计为与Python接口集成的官方Java客户端。它最好与新的代理商一起使用,并向后兼容所有旧版本。使用KafkaPython编程同时需要引用使用者(KafkaConsumer)和引用生产者(KafkaProducer)。
在Kafka Python中,这两个方面并存。KafkaConsumer基本上是一个高级消息使用者,将用作官方Java客户端。
它要求代理商支持群组API。KafkaProducer是一个异步消息生成器,它的操作方式也非常类似于Java客户端。生产者可以跨线程使用而没有问题,而消费者则需要多线程处理。
Pydoop
让我们解决这个问题。Hadoop本身并不是一个数据存储系统。Hadoop实际上具几个组件,包括MapReduce和Hadoop分布式文件系统(HDFS)。因此,Pydoop在此列表中,但是你需要将Hadoop与其他层(例如Hive)配对,以便更轻松地处理数据。
Pydoop是Hadoop-Python界面,允许与HDFSAPI交互,并使用纯Python代码编写MapReduce工作。
该库允许开发人员无需了解Java即可访问重要的MapReduce功能,例如RecordReader和Partitioner。
对于大多数数据工程师而言,Pydoop本身可能有点太基本了。你们中的大多数人很可能会在Airbow中编写在这些系统之上运行的ETLs。但是,至少对你的工作有一个大致的了解还是很不错的。
从哪里开始呢?
未来几年,管理大数据只会变得越来越困难。由于日益剧增的网络能力——物联网(IoT),改进的计算等等——我们得到的数据将会如洪流般地继续增长。
因此,如果我们想要跟上步伐,,有必要了解一些可用于与这些系统进行交互的数据系统和库。