我正在使用Apache drill 1.8制作该程序。
我正在尝试在非钻孔安装的HDFS中运行此程序。
我认为使用jar文件的方式,包含jar文件的钻头可以运行该程序,因为它在虚拟机中运行。
但我对此并不自信。可以吗?
如果这种方式有效,如何在jar文件中包含钻孔?
如果不是,那是什么样的方式?
另外一个问题,如何使用Java代码更改存储配置?
答案 0 :(得分:1)
在同一台机器上运行的钻孔或hdfs无关紧要。
为什么需要创建一个jar。
如果您使用Maven作为构建工具,请添加Drill JDBC驱动程序依赖项:
<dependency>
<groupId>org.apache.drill.exec</groupId>
<artifactId>drill-jdbc</artifactId>
<version>1.8.0</version>
</dependency>
示例代码:
public class TestJDBC {
// Host name of machine on which drill is running
public static final String DRILL_JDBC_LOCAL_URI = "jdbc:drill:drillbit=192.xxx.xxx.xxx";
public static final String JDBC_DRIVER = "org.apache.drill.jdbc.Driver";
public static void main(String[] args) throws SQLException {
try {
Class.forName(JDBC_DRIVER);
} catch (ClassNotFoundException ce) {
ce.printStackTrace();
}
try (Connection conn = new Driver().connect(DRILL_JDBC_LOCAL_URI, null);
Statement stmt = conn.createStatement();) {
String sql = "select employee_id,first_name,last_name from cp.`employee.json` limit 10";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
System.out.print(rs.getInt("employee_id") + "\t");
System.out.print(rs.getString("first_name") + "\t");
System.out.print(rs.getString("last_name") + "\t");
System.out.println();
}
rs.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}