gpt4 book ai didi

java - 如何使用java api像jdbc一样直接发送hbase shell命令?

转载 作者:可可西里 更新时间:2023-11-01 14:27:32 24 4
gpt4 key购买 nike

如何使用java api像jdbc一样直接发送hbase shell命令

public static void main(String args[]) {
// get Connection to connect hbase
Connection conn = ....;
// hbase shell command
String cmd = "get 't1','r1'";

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(cmd);
while(rs.next()) {
...
}
}

如果没有java api,是否有其他方法可以达到目的?

最佳答案

请注意,Phoenix 可以执行 jdbc 风格的查询...如果你想执行 get 命令,那么你可以直接使用 Hbase java client api。通过 shell 从 java 执行并不常见。

如果您仍想从 java 准备获取或文本文件中的命令列表并使用 RunTime.execute 来执行此操作你可以执行 hbase shell <yourhbaseshelllcommands.txt>

查看我的 answer1answer2这个来做那个。我已经为 spark 提交和 mapreduce 作业完成了该操作。您可以对上述 hbase shell 执行使用相同的方法。

another way to achieve the goal

要以 SQL 方式访问 Hbase,您可以使用 Phoenix。- https://phoenix.apache.org/faq.html- see this

您也可以使用 Impala 或 hive 检查。

JDBC 客户端驱动程序:

import java.sql.*;

public class PhoenixExample {

public static void main(String[] args) {
// Create variables
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
PreparedStatement ps = null;

try {
// Connect to the database
connection = DriverManager.getConnection("jdbc:phoenix:localhost");

// Create a JDBC statement
statement = connection.createStatement();

// Execute our statements
statement.executeUpdate("create table javatest (mykey integer not null primary key, mycolumn varchar)");
statement.executeUpdate("upsert into javatest values (1,'Hello')");
statement.executeUpdate("upsert into javatest values (2,'Java Application')");
connection.commit();

// Query for table
ps = connection.prepareStatement("select * from javatest");
rs = ps.executeQuery();
System.out.println("Table Values");
while(rs.next()) {
Integer myKey = rs.getInt(1);
String myColumn = rs.getString(2);
System.out.println("\tRow: " + myKey + " = " + myColumn);
}
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
if(ps != null) {
try {
ps.close();
}
catch(Exception e) {}
}
if(rs != null) {
try {
rs.close();
}
catch(Exception e) {}
}
if(statement != null) {
try {
statement.close();
}
catch(Exception e) {}
}
if(connection != null) {
try {
connection.close();
}
catch(Exception e) {}
}
}
}
}

如果你在下面使用 maven 是依赖项......

<dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>4.6.0-HBase-1.1</version>
</dependency>

关于java - 如何使用java api像jdbc一样直接发送hbase shell命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39258139/

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