Presto 是一个用于大数据的分布式 SQL 查询引擎。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
Presto 是一个标准的 Maven 项目。只需从项目根目录运行以下命令:
./mvnw clean install
在第一次构建时,Maven 将从 Internet 下载所有依赖项并将它们缓存在本地存储库 ( ~/.m2/repository
) 中,这可能会花费大量时间。后续构建会更快。
Presto 有一套全面的单元测试,可能需要几分钟才能运行。您可以在构建时禁用测试:
./mvnw clean install -DskipTests
Presto native是 Presto worker 的 C++ 重写。Presto native使用Velox作为其主要引擎来运行 presto 工作负载。
Velox是一个 C++ 数据库库,它提供可重用、可扩展和高性能的数据处理组件。
查看构建说明以开始使用。
首次构建 Presto 后,您可以将项目加载到 IDE 中并运行服务器。我们推荐使用IntelliJ IDEA。由于 Presto 是一个标准的 Maven 项目,您可以使用根pom.xml
文件将其导入到您的 IDE 中。在 IntelliJ 中,从“快速启动”框中选择“打开项目”或从“文件”菜单中选择“打开”并选择根pom.xml
文件。
在 IntelliJ 中打开项目后,仔细检查是否为项目正确配置了 Java SDK:
Presto 附带示例配置,应该开箱即用以进行开发。使用以下选项创建运行配置:
com.facebook.presto.server.PrestoServer
-ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties
$MODULE_WORKING_DIR$
或$MODULE_DIR$
(取决于您的 IntelliJ 版本)presto-main
工作目录应该是presto-main
子目录。在 IntelliJ 中,using$MODULE_DIR$
会自动完成此操作。
此外,必须使用 Hive metastore Thrift 服务的位置配置 Hive 插件。将以下内容添加到 VM 选项列表中,替换localhost:9083
为正确的主机和端口(如果没有 Hive 元存储,则使用以下值):
-Dhive.metastore.uri=thrift://localhost:9083
如果本地计算机无法直接访问 Hive 元存储或 HDFS 集群,则可以使用 SSH 端口转发来访问它。使用 SSH 侦听本地端口 1080 设置动态 SOCKS 代理:
ssh -v -N -D 1080 server
然后将以下内容添加到 VM 选项列表中:
-Dhive.metastore.thrift.client.socks-proxy=localhost:1080
启动 CLI 连接到服务器并运行 SQL 查询:
presto-cli/target/presto-cli-*-executable.jar
运行查询以查看集群中的节点:
SELECT * FROM system.runtime.nodes;
在示例配置中,Hive 连接器安装在hive
目录中,因此您可以运行以下查询来显示 Hive 数据库中的表default
:
SHOW TABLES FROM hive.default;
有关做出新贡献和审查它们的指南,请参阅贡献。
要了解如何构建文档,请参阅文档自述文件。
Presto Web UI 由多个 React 组件组成,使用 JSX 和 ES6 编写。此源代码被编译并打包成与浏览器兼容的 JavaScript,然后将其签入 Presto 源代码(在文件夹中dist
)。您必须安装Node.js和Yarn才能执行这些命令。要在进行更改后更新此文件夹,只需运行:
yarn --cwd presto-main/src/main/resources/webapp/src install
如果没有 JavaScript 依赖项发生变化(即,没有变化package.json
),则运行速度更快:
yarn --cwd presto-main/src/main/resources/webapp/src run package
为了简化迭代,您还可以在watch
模式下运行,当检测到源文件更改时自动重新编译:
yarn --cwd presto-main/src/main/resources/webapp/src run watch
要快速迭代,只需在打包完成后在 IntelliJ 中重新构建项目即可。项目资源将被热重新加载,更改会反映在浏览器刷新时。
[/hidecontent]