现在,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来个性化网页和投放目标广告——正如许多其余大型数据驱动组织同样。
若是你对Python感兴趣,欢迎加入咱们【python学习交流】,免费领取学习资料和源码
Kafka Python
Kafka是一个分布式发布-订阅消息传递系统,它容许用户在复制和分区主题中维护消息源。
这些主题基本上是从客户端接收数据并将其存储在分区中的日志。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),改进的计算等等——咱们获得的数据将会如洪流般地继续增加。
所以,若是咱们想要跟上步伐,,有必要了解一些可用于与这些系统进行交互的数据系统和库。
你有什么见解?欢迎评论区和咱们讨论。