gpt4 book ai didi

hadoop - Hive "ANALYZE TABLE"如何从java执行

转载 作者:可可西里 更新时间:2023-11-01 16:50:42 25 4
gpt4 key购买 nike

我需要计算配置单元表中的行数,为此我正在使用查询:

ANALYZE TABLE p_7 COMPUTE STATISTICS noscan

我想通过java获取结果,我正在尝试下面的代码,没有运气。我得到的错误是:

Exception in thread "main" java.sql.SQLException: The query did not generate a result set!
at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:393)
at HiveJdbcClient.main(HiveJdbcClient.java:22)

我使用的代码是:

import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import java.sql.DriverManager;

public class HiveJdbcClient {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {

e.printStackTrace();
System.exit(1);
}
Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "hive", "");
System.out.println("connected");
Statement statement = con.createStatement();
String query = "ANALYZE TABLE p_7 COMPUTE STATISTICS noscan";
ResultSet res = statement.executeQuery(query);
}
}

我不知道如何执行这样的查询:

ANALYZE TABLE p_7 COMPUTE STATISTICS noscan

通过java。对此的任何帮助都会对我有很大帮助。谢谢。

最佳答案

使用不带“NOSCAN”的 ANALYZE TABLE 语句来计算行数。注意:此语句不产生 resultSet 对象。

要获取存储的统计信息,请使用以下语句。

DESCRIBE FORMATTED tableName

在输出中,行数列在参数数组中。使用正则表达式提取它。

示例代码如下:

String analyzeQuery = "ANALYZE TABLE p_7 COMPUTE STATISTICS";
String describeQuery = "DESCRIBE FORMATTED p_7";

stmt.execute(analyzeQuery);
StringBuilder sb = new StringBuilder();
try (ResultSet rs = stmt.executeQuery(describeQuery)) {
while (rs.next()) {
int count = rs.getMetaData().getColumnCount();
for (int j = 1; j <= count; j++) {
sb.append(rs.getString(j));
}
}
}
System.out.println("Output: "+ sb.toString());

引用https://cwiki.apache.org/confluence/display/Hive/StatsDev有关表和分区统计信息的详细信息。

关于hadoop - Hive "ANALYZE TABLE"如何从java执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33552345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com