Sqoop2中传入配置文件中url之【坑】

【特别注意】Sqoop2里面各个版本的区别还是很大的,这里使用1.99.6版本。

  • sqoop2的url等信息放到properties配置文件中,配置文件解析出来传给SqoopClient报错。

SqoopClient初始化代码:

    private SqoopUtil() throws IOException {

        String url = PropertiesUtil.getProperty("SQOOP_URL").trim();
        SqoopClient client = new SqoopClient(url);
        System.out.println("url:" +url);
        connectorMap = new HashMap<String, Long>();
        System.out.println(client.getConnector(2));//注释掉该句不报错
    //  readConnectorMap();
        System.out.println("connectorMap size---------"+ connectorMap.size());

    }

配置文件解析工具类,解析/myconf.properties文件。

public class PropertiesUtil {

    private static String propertiesFile = "/myconf.properties";
    private static PropertiesUtil proUtil = null;
    private static HashMap<String, String> confMap= null;
    private static Properties p = new Properties();

    public PropertiesUtil() throws IOException {
        confMap = new HashMap<String, String>();
        readPropertiesToMap();
        System.out.println();
    }

    private static void readPropertiesToMap() throws IOException {

        p.load(PropertiesUtil.class.getResourceAsStream(propertiesFile));

        for(Object key: p.keySet()) {
            confMap.put((String)key, p.getProperty((String)key));
        }
    }

    private static PropertiesUtil getPropertiesUtil() throws IOException {

        if(proUtil == null) {
            synchronized(PropertiesUtil.class) {
                if(proUtil == null) {
                    long start = System.currentTimeMillis();
                    proUtil = new PropertiesUtil();
                    long end = System.currentTimeMillis();
                    System.out.println("construct properties util last "+ (end-start));
                }
            }
        }

        return proUtil;
    }


    public String get(String name) throws IOException {
        return confMap.get(name);
    }
    public static String getProperty(String name) throws IOException {

        return getPropertiesUtil().confMap.get(name);
    }

    public static void main(String[] args) throws IOException {
        System.out.println(getPropertiesUtil().confMap.get("SQOOP_URL"));
    }

}

但在调用client.getConnector的时候报错:
这里写图片描述

将初始化SqoopClient的url改为/myconf.properties文件中的SQOOP_URL对应的字符串则能顺利运行:

这里写图片描述

暂时还没解决。。。正在研究中。。。

原文地址:https://www.cnblogs.com/eva_sj/p/6172244.html