Presto如何带来最好的大数据分析师


如果您的职位类似于Data Analyst,VP Analytics,分析主管等,您就知道您的角色在公司中的重要性。
你开始工作时,会面临无数的报告。管理层会议正在召开,客户的数据由您的组织管理,他们希望获得有关其基于云的音乐流应用的采用报告。为此,您需要使用包含数十亿行的表,并对关系数据库和Hive数据库进行排序。
这只是一个例子。您可能在公司面临更繁琐的工作。
作为数据分析师,您希望提供足够的相关数据,以便组织中的员工可以在各自的角色中做出明智且数据驱动的决策。
但要获得最佳结果,您必须能够轻松快速地访问数据。你越快,你就越容易完成工作。他们越喜欢与您合作,您的雇主就越难以取代您。
您需要一个快速查询引擎,使您能够将组织使用的所有数据源中的数据收集到一个结果中,以便您可以快速做出数据驱动的决策。
这就是Presto的用武之地。您可能已经了解历史。但如果没有,这里有一个快速的解释。

关于Presto的快速背景
Presto是由Facebook在2013年开发的一种开源软件,用于高速查询不同来源的数据库,无论其数据的数量,速度和数量如何。
构建这个大数据查询引擎的项目始于2008年,当时Facebook意识到他们需要一个可以查询数据库的引擎,而不管它们位于何处(Hadoop,Cassandra等)。快进到今天,Presto现在被Uber,Twitter,AirBnB,亚马逊和其他几家企业的大公司所使用,主要是因为它的速度和能力。
“Presto让我们的用户的生活更轻松。它极大地提高了他们的生产力“ -  Netflix
“我们选择Presto作为我们系统的SQL引擎,因为它具有可扩展性,高性能以及与Hadoop的平滑集成。这些属性使其非常适合我们的许多团队“ -  优步
Teradata为Presto提供了首个商业支持,之后,Netflix等其他公司也加入了开源查询引擎。目前,Presto由Apache授权,并提供ANSI SQL合规性和基于规则的优化器。
但是,如果你要从Presto中获得最大的收益,那么你很清楚Presto究竟是什么,不是什么?

Presto是什么和不是什么

  • 首先,Presto 不是关系数据库管理系统。它理解或使用SQL并不意味着它可以替代传统的RDBMS,如MySQL,PostgreSQL等。
  • Presto 是一种工具,旨在使用分布式查询有效地查询不同来源的大量数据。
  • 如果您在组织中使用数PB的数据,很可能您一直在使用与Hadoop和HDFS交互的工具。Presto 是这些工具的完美替代品。
  • Presto 另一个主要力量时聚合不同类型的数据源,包括传统的RDBMS和其他数据源,如Cassanda上操作的能力。
  • Presto还设计用于处理数据仓库和分析:数据分析,聚合大量数据和生成报告工作负载 - 通常归类为在线分析处理(OLAP)

轻松访问存储在任何地方的数据
Presto允许查询它所在的数据 - 无论是在Hive,Cassandra,关系数据库还是专有数据存储上。单个Presto查询可以组合来自多个来源的数据,从而允许整个组织进行分析。
无论您的数据存储在何处(云或本地存储),只要使用了适用于这些数据源的连接器,Presto就可以轻松访问这些位置的数据。
Netflix的大数据团队在Amazon S3上的数据仓库中使用Presto(亚马逊提供的云存储解决方案,可以从任何地方存储和检索任何数量的数据):

传统SQL语法的优点
Presto使用ANSI SQL语法和语义来构建其查询。
这样做的好处是,拥有丰富关系数据库经验的分析师会发现编写Presto查询非常容易和直接,减少了在学习全新语法风格时分析数据时出现的停机时间和滞后。
然后是Optimized Row Columnar文件格式的优势。

优化行列(ORC)
Presto还支持ORC文件格式,它提供了一种存储Hive数据的高效方法。Presto的ORC阅读器能够跳过不需要的数据,延迟读取和矢量化读取。

安装Presto
安装Presto有一些要求:

  1. Linux OS或Mac OS X.
  2. Java 8,64位
  3. Python 2.4+
  4. Presto服务器tarball,presto-server-0.184.tar.gz

Prestodb.io上用于部署的文档非常易于理解,并且按照文档中列出的步骤,您将在大约10分钟内启动并运行presto服务器。您可以在此处找到详细的文档。
根据您要连接的数据源,Presto还提供各种连接器,以确保Presto服务器与数据源之间的无缝通信。可用的Presto连接器包括:

在多个源上运行Presto查询
正如我之前提到的,Presto允许您一次对多个数据源运行查询,并使用SQL语句返回单个结果表。
它能够与位于任何地方的各种数据源集成,这意味着您可以与Cassandra,PostgreSQL,Accumulo,Hive和MongoDB连接,并使用Presto的SQL语法将这些源中的数据提取到单个结果视图中。