StudyPresto - huangyuefeng/study GitHub Wiki
- 当强调数据处理而不是存储的场景,schema经常用来替换database
database => schema
show schemas;
下面我们用jdbc连接presto server,执行上述命令. 作为"presto安装"之后的测试.
- jdbc连接
直接上代码吧.
package org.training.hadoop.presto;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class PrestoJdbcClient {
public static void main(String[] args) throws SQLException, ClassNotFoundException{
Connection connection = DriverManager.getConnection("jdbc:presto://master:8080/hive/default","zkpk",null);
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("show schemas");
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
connection.close();
}
}
但是执行代码会出现如下错误.
Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:presto://master:8080/hive/default
在pom.xml文件里增加presto-jdbc的lib,问题解决.
<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-jdbc</artifactId>
<version>0.191</version>
</dependency>
- 来个题目 请为上述代码增加如下语句的功能.
use schema_name;
show tables;
select * from table_name;
DriverManager类可以支持以下URL形式:
jdbc:presto://host:port
jdbc:presto://host:port/catalog(你的分类)
jdbc:presto://host:port/catalog(你的分类)/schema(你的schema)
- 来个题目 连接Mysql数据源,实现hive表join到mysql表.
connector.name=mysql
connection-url=jdbc:mysql://master:3306
connection-user=root
connection-password=newpass
启动时,设置缺省的catalog_name.schmea_name
presto --server master:8080 --catalog mysql --schema test
连接时,指定要join的catalog_name.schmea_name.table_name.
select * from hive.default.tbl_default_s00 hiveTBL join test_table mysqlTBL on hiveTBL.no = mysqlTBL.id;