我一直试图从Java代码连接到我的EMR集群以运行presto查询。到目前为止,我创建了一个“ maven项目”,并在“ pom.xml”中添加了“ presto依赖项”。我一直在为程序引用此链接
https://gist.github.com/nagataka/2c2d9fa49b03e8556faf85345b43f59c
我有两个问题:
1。)如何使用用户名和密码连接到EMR集群,例如“ conn = DriverManager.getConnection(DB_URL,USER,PASS);”在以上参考中使用。因为我使用“ .ppk密钥”来验证连接。我不知道如何在这种情况下提供密钥。
2。)如何运行简单的“显示表”;在Presto上查询。
以下是我的程序:
package presto.presto_sample;
import java.net.URI;
import java.net.URISyntaxException;
import java.sql.*;
/**
* Hello world!
*
*/
public class App
{
static final String JDBC_DRIVER = "com.facebook.presto.jdbc.PrestoDriver";
static final String DB_URL = "jdbc:presto://ec2-18-191-128-219.us-east-2.compute.amazonaws.com:8889/hive/default";
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}
答案 0 :(得分:0)
Properties properties = new Properties();
properties.setProperty("user", "test");
properties.setProperty("password", "secret");
Connection connection = DriverManager.getConnection(url, properties);
我猜ppk可以是另一个setProperty
答案 1 :(得分:0)
您不需要在连接字符串属性中传递PPK密钥。您的代码可能无法正常工作,因为防火墙可能会阻止您连接到服务器。要解决此问题,您必须在主安全组中添加入站规则,以允许访问您的IP。 看到此内容以添加入站规则Cannot connect/query from Presto on AWS EMR with Java JDBC
要检出表: 从您正在使用的引用程序中设置字符串对象“ SQL”,并将其值设置为 “从hive.default显示表”(例如),或者如果在连接属性中设置了目录和架构名称,则只需将其设置为“显示表”即可。