java - createStatement() 返回 null 而不是获取查询并创建语句
问题描述
我的 Hadoop 连接类:
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import org.junit.After;
import org.junit.Before;
public class HadoopConnection
{
public static Connection dbConnection=null;
public static Statement stmt;
@Before
public static Connection getConnection()
{
String Hive_url = "Masked Hive URL";
String impala_url = "Masked Impala URL";
if (dbConnection==null)
{
try {
System.setProperty("hadoop.home.dir", new File("Masked Hadoop Drive").getCanonicalPath());
System.setProperty("javax.net.ssl.trustStore", "src/test/resources/hiveconfig/jssecacerts");
System.setProperty("java.security.krb5.conf", "./src/test/resources/hiveconfig/krb5AT.conf");
System.setProperty("sun.security.krb5.debug", "false");
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("Masked Login",
"Masked KeyTab");
Class.forName("org.apache.hive.jdbc.HiveDriver");
dbConnection = DriverManager.getConnection(Hive_url);
}
catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return dbConnection;
}
@After
public void closeConnection()
{
try {
if (HadoopConnection.dbConnection != null)
{
HadoopConnection.dbConnection.close();
}
} catch (SQLException e)
{
e.printStackTrace();
}
}}
我的步骤定义:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import pageobjects.fce.ComparePlanFeesPOAOptimized;
import pageobjects.fce.GetPlanFeesPPRepo;
import pageobjects.fce.Hive_Connection_junit;
import pageobjects.fce.PlanFee_POA;
import pageobjects.fce.PlanFee_PerParticipant;
import pageobjects.fce.RunElectricFlow;
import utility.common.HadoopConnection;
public class Distribution_Variable_Funds_Data_Extract {
protected static HadoopConnection dbConnection;
protected static HadoopConnection statement;
@Given("^Extract the Data")
public void get_the_hive_connection() throws Throwable {
dbConnection = new HadoopConnection();
if (dbConnection != null)
{
String query = "select * from table";
System.out.println(query);
Statement stmt = dbConnection.createStatement();
System.out.println(dbConnection);
System.out.println(stmt);
ResultSet rs = stmt.executeQuery(query);
stmt.close();
}
else
{
System.out.println(dbConnection);
}
}
当我尝试保存步骤定义文件时,以下语句被突出显示
Statement stmt = dbConnection.createStatement();
并强迫我在 My Hadoop Connection Class 中创建一个块,并且 stmt 返回 null。我的要求是我必须为每个步骤定义文件使用不同的查询集。请帮我
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import org.junit.After;
import org.junit.Before;
public class HadoopConnection
{
public static Connection dbConnection=null;
public static Statement stmt;
@Before
public static Connection getConnection()
{
String Hive_url = "Masked Hive URL";
String impala_url = "Masked Impala URL";
if (dbConnection==null)
{
try {
System.setProperty("hadoop.home.dir", new File("Masked Hadoop Drive").getCanonicalPath());
System.setProperty("javax.net.ssl.trustStore", "src/test/resources/hiveconfig/jssecacerts");
System.setProperty("java.security.krb5.conf", "./src/test/resources/hiveconfig/krb5AT.conf");
System.setProperty("sun.security.krb5.debug", "false");
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("Masked Login",
"Masked KeyTab");
Class.forName("org.apache.hive.jdbc.HiveDriver");
dbConnection = DriverManager.getConnection(Hive_url);
}
catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return dbConnection;
}
@After
public void closeConnection()
{
try {
if (HadoopConnection.dbConnection != null)
{
HadoopConnection.dbConnection.close();
}
} catch (SQLException e)
{
e.printStackTrace();
}
}
public Statement createStatement()
{
// TODO Auto-generated method stub
return null;
}
}
解决方案
推荐阅读
- python - 我的 Python Selenium 代码不适用于选项
- jenkins - 停止 Jenkins 将 INFO 消息记录到 stderr(在 Google Cloud Logging 中解释为错误)
- c# - How do I register multiple concrete types using assembly scanning in Autofac?
- windows - 当 Python 脚本失败时,Windows 任务计划程序挂起
- c++ - 在模块化 C++ 项目中导入静态函数
- c - 这段代码中的 lea 指令是做什么的?
- c# - 如何在 TextToSpeech 和 SpeechRecognizer 之间实现 AcousticEchoCanceler
- node.js - 当 sendFile() 仅包含网站上一个特定 html 文件的路径时,为什么我的 NodeJS Express 应用程序服务于整个网站
- python - 访问类范围python之外的变量
- java - 如何使用 Anjlab getPurchaseHistory() 方法获取购买历史记录 Android In App Billing