首页 > 解决方案 > 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;
    }

}

标签: javajunit

解决方案


推荐阅读