1.下载 presto-server 和 presto-cli
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.266.1/presto-server-0.266.1.tar.gz
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.266.1/presto-cli-0.266.1-executable.jar
2.解压安装
1.解压 presto-server-0.266.1.tar.gz
tar -zxvf presto-server-0.266.1.tar.gz
2.将 presto-cli-0.266.1-executable.jar
放到bin目录中并改名为 presto
mv presto-cli-0.266.1-executable.jar persto
赋予权限
chmod +x presto
3.在presto 的安装目录下 创建data目录
创建etc目录
mkdir etc
进入etc创建以下文件并添加内容:
node.properties:
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff-001
node.data-dir=/home/wl/presto-server-0.266.1/data
jvm.config:
-server
-Xmx4G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
config.properties:
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=2GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://wlwl:8080
log.properties:
com.facebook.presto=INFO
在etc下面创建一个 名称为catalog
的文件夹
添加以下内容
connector.name=mysql
connection-url=jdbc:mysql://wlwl:3306
connection-user=root
connection-password=wl990922
3.启动
bin/launcher run
出现以下内容说明启动成功
访问wlwl:8080,查看是否能访问web界面
客户端启动
./presto --server wlwl:8080 --catalog mysql
4.常用语法
这里的 mysql 表示的数据库类型
# 展示模式
SHOW SCHEMAS FROM mysql;
#展示数据库
SHOW TABLES FROM mysql.database_name;
#展示表中的字段
SHOW COLUMNS FROM mysql.database_name.table_name;
#查询表中数据
SELECT * FROM mysql.database_name.table_name;
#使用库
use mysql.presto;
5.添加hive到presto
在catalog
文件夹下面创建一个 hive.properties
的文件,并添加以下内容
#连接器的名字,是固定的,hive-hadoop2
connector.name=hive-hadoop2
hive.metastore.uri=thrift://wlwl:9083
hive.config.resources=/home/wl/hadoop-3.3.1/etc/hadoop/core-site.xml,/home/wl/hadoop-3.3.1/etc/hadoop/hdfs-site.xml
6.添加potsgre到presto
安装一个 postgre
参考官网:https://www.postgresql.org/download/linux/redhat/
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Install PostgreSQL:
sudo yum install -y postgresql13-server
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
sudo systemctl enable postgresql-13
sudo systemctl start postgresql-13
进入postgresql发现报以下错误
这个是因为postgresql是不允许使用root用户启动服务的,所以需要切换到 postgres
创建一个postgresql的properties
connector.name=postgresql
connection-url=jdbc:postgresql://127.0.0.1:5432
connection-user=postgres
connection-password=12345
7.多表联查
这里记录一个坑
当我想切换postgresql 提示 postgresql 不存在
这个是因为 我在 catalog 下面建 properties的时候建的是 postgre.properties ,presto读取不到,所以报错
1.在mysql中创建一个名称为emp的表,数据如下
2.在hive中创建一个名称为dep的表,数据如下
3.在postgre中创建一个名称为address的表,数据如下
使用 presto 跨数据源 多表联合查询员工信息
select e.id,e.name,d.dep_name,d.dep_address,p.address_name from emp e left join hive.default.dep d on e.dep_no=d.id left join postgresql.public.address p on p.address_id=e.add_id;