我正在尝试连接到hive2数据库,但出现以下错误:
java.lang.nosuchfielderror:配置单元\服务器2 \传输\模式
这是我要运行的代码。基本上,我只是尝试连接到hive2数据库并用用户定义查询的结果填充jtable:
import java.sql.Connection;
import org.apache.hadoop.hive.jdbc.*;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.*;
import javax.swing.JTable;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import java.awt.Cursor;
import javax.swing.*;
import net.proteanit.sql.DbUtils;
import org.apache.hive.jdbc.*;
import org.apache.hive.jdbc.Utils;
import org.apache.hive.*;
import org.apache.hive.service.*;
import org.apache.http.*;
import org.apache.hive.service.CompositeService;
import org.apache.hive.service.cli.CLIService;
import org.apache.hive.service.cli.thrift.*;
import org.apache.hive.service.server.*;
import org.apache.hadoop.hive.conf.HiveConf;
public class SQLSelect extends javax.swing.JFrame {
/**
* Creates new form SQLSelect
*/
ResultSet r;
Statement s;
public SQLSelect() {
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Cursor cursor = Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR);
setCursor(cursor);
try {
Class.forName("org.apache.hive.jdbc.HiveDriver");
//Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.getMessage();
}
try {
String locationString = "jdbc:hive2://" + jTextField1.getText() + ":" + jTextField2.getText();
String userString = jTextField3.getText();
char password[] = jPasswordField1.getPassword();
String pString = new String(password);
System.out.println(locationString + userString + pString);
Connection conn = DriverManager.getConnection(locationString,userString,pString);
//Connection conn = DriverManager.getConnection("jdbc:hive://76.99.192.2:9999","user","password");
s = conn.createStatement();
r = s.executeQuery(jTextArea1.getText());
//System.out.println(r.getNString(1));
}
catch (Exception e)
{
setCursor(Cursor.DEFAULT_CURSOR);
JOptionPane.showMessageDialog(null, e.getMessage(), "SQL Error", JOptionPane.ERROR_MESSAGE);
jLabel9.setText(e.getMessage());
}
try {
MainPanel resultsPanel = new jdbctohive.MainPanel();
resultsPanel.jTable1.setModel(DbUtils.resultSetToTableModel(r));
resultsPanel.setTitle("Hive SQL Management Studio");
resultsPanel.setVisible(true);
setCursor(Cursor.DEFAULT_CURSOR);
this.setVisible(false);
}
catch (Exception e)
{
setCursor(Cursor.DEFAULT_CURSOR);
}
任何帮助都将不胜感激!
1条答案
按热度按时间j8yoct9x1#
我终于能联系上了。我先前的发言建议使用“;结果是错的。经过多次尝试,这是最终成功的代码。当我在windows中工作时,hadoop win版本需要winutils.exe,我遇到了一些问题。由于hortonworks的产品1.3有一个win实现,我下载了它并从.msi文件中提取了这个文件。如果在linux中工作,您可能不需要这个。我找到的关键之一是实现jdbc和hadoop日志记录,因为没有这些,我就被困在getconnection上,再也没有返回过。。。但是,有一些潜在的错误,我只是假设wordreturn是stacktrace,但没有。祝你好运。
帮助记录的文件:c:/temp/log.properties.level=severe
oracle.jdbc.level=信息
oracle.jdbc.handlers=java.util.logging.consolehandler
java.util.logging.consolehandler.level=信息
java.util.logging.consolehandler.formatter=java.util.logging.simpleformatter