补充
SQL运行过程:MR vs Presto
Presto:使用内存计算,减少与硬盘交互。Tasks是循环分批读取查询结果。
presto循环分批读取流程
前提条件
Presto340版本需要安装在jdk11的环境下,请预先进行安装。
不做特殊说明,所有操作,均在Presto340主目录下。
当前Presto340主目录
Connectors
MySQL
目录:etc/catalog
文件名:mysql.properties
内容:
connector.name=mysql ##必须是mysql,与plugin下的目录对应
connection-url=jdbc:mysql://xxx.xxx.xxx.xxx:3306
connection-user=mysqluser
connection-password=mysqlpsswd
客户端测试
./presto --server localhost:8080 --catalog mysql --schema default
--server 指定服务器和端口
--catalog 指定catalog的名称
--schema 指定数据库的名称
启动客户端,查看表列表。
查询MySQL数据
注意 注意 注意:
配置多个MySQL类型的数据源,如何配置呢?
用properties类型文件的文件名称来区分,例如mysql2.properties、mysql3.properties。Client启动时,用--catalog 指定catalog的名称即可。
例如:
./presto --server localhost:8080 --catalog mysql2 --schema pres_tst
Hive
目录:etc/catalog
文件名:hive.properties
内容:
connector.name=hive-hadoop2 ##必须是hive-hadoop2,与plugin下的目录对应
hive.metastore.uri=thrift://xxx:9083 ## xxx是HiveMetastore的主机,默认端口9083
hive.config.resources=core-site.xml,hdfs-site.xml ##两个配置文件在本地的路径
客户端测试
./presto --server localhost:8080 --catalog hive --schema default
查询表
配置多个Hive数据源,与如上MySQL类似。
Oracle
目录:etc/catalog
文件名:oracle.properties
内容:
connector.name=oracle ##必须是oracle
connection-url=jdbc:oracle:thin:@xxx.xxx:1521/ORACLE_SERVICE_NAME
connection-user=orc_user
connection-password=orc_passwd
客户端测试
./presto --server localhost:8080 --catalog oracle --schema bi01
--schema 指定数据库的名称
注意:
由于oracle中没有databases的概念,所以此处 --schema 指定当前oracle服务的某个数据库用户名称即可,presto将oracle用户解析成了schema 。
见下图
查询
Kafka
目录:etc/catalog
文件名:kafka.properties
内容:
connector.name=kafka
kafka.nodes=xxx:9092,xxx:9092,xxx:9092 ## Kafka集群节点列表
kafka.table-names=tpch.customer,yfh.mytopic ## 指定schema.tables 映射kafka的topic
kafka.hide-internal-columns=false ##是否隐藏kafka内部列名
1.准备kafka数据
请预先准备好kafka数据,如下将用到topic:tpch.customer
对kafka topic 配置 .json 文件,配置在etc/kafka目录下
客户端测试
./presto --server localhost:8080 --catalog kafka --schema tpch
对kafka数据动态查询
topic名称 yfh.mytopic
Presto 查询
查询结果30
用kafka Producer生产了5条数据,再查。
结果变成35,对kakfa新生产的数据实施了查询。