如何使用jar文件在未安装的系统中运行钻取?

时间:2016-09-27 10:36:15

标签: hadoop jar apache-drill

我正在使用Apache drill 1.8制作该程序。

我正在尝试在非钻孔安装的HDFS中运行此程序。

我认为使用jar文件的方式,包含jar文件的钻头可以运行该程序,因为它在虚拟机中运行。

但我对此并不自信。可以吗?

如果这种方式有效,如何在jar文件中包含钻孔?

如果不是,那是什么样的方式?

另外一个问题,如何使用Java代码更改存储配置?

1 个答案:

答案 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();
        }
    }
}