Search in sources :

Example 11 with JarFileInfo

use of com.dtstack.taier.pluginapi.JarFileInfo in project Taier by DTStack.

the class FlinkClient method grammarCheck.

@Override
public CheckResult grammarCheck(JobClient jobClient) {
    CheckResult checkResult = CheckResult.success();
    String taskId = jobClient.getJobId();
    try {
        // 1. before download jar
        beforeSubmitFunc(jobClient);
        // 2. flink sql args
        String taskWorkspace = FlinkUtil.getTaskWorkspace(jobClient.getJobId());
        List<String> args = sqlPluginInfo.buildExeArgs(jobClient);
        List<String> attachJarLists = cacheFile.get(taskWorkspace);
        List<URL> attachJarUrls = Lists.newArrayList();
        if (!CollectionUtils.isEmpty(attachJarLists)) {
            args.add("-addjar");
            String attachJarStr = PublicUtil.objToString(attachJarLists);
            args.add(URLEncoder.encode(attachJarStr, Charsets.UTF_8.name()));
            attachJarUrls = attachJarLists.stream().map(k -> {
                try {
                    return new File(k).toURL();
                } catch (MalformedURLException e) {
                    throw new PluginDefineException(e);
                }
            }).collect(Collectors.toList());
        }
        JarFileInfo coreJarInfo = sqlPluginInfo.createCoreJarInfo();
        jobClient.setCoreJarInfo(coreJarInfo);
        // 3. build jobGraph
        String[] programArgs = args.toArray(new String[args.size()]);
        Configuration flinkConfig = flinkClientBuilder.getFlinkConfiguration();
        PackagedProgram program = PackagedProgram.newBuilder().setJarFile(new File(coreJarInfo.getJarPath())).setUserClassPaths(attachJarUrls).setConfiguration(flinkConfig).setArguments(programArgs).build();
        PackagedProgramUtils.createJobGraph(program, flinkConfig, 1, false);
        logger.info("TaskId: {}, GrammarCheck success!", taskId);
    } catch (Exception e) {
        logger.error("TaskId: {}, GrammarCheck error: ", taskId, e);
        checkResult = CheckResult.exception(ExceptionUtil.getErrorMessage(e));
    } finally {
        try {
            afterSubmitFunc(jobClient);
        } catch (Exception e) {
        }
    }
    return checkResult;
}
Also used : MalformedURLException(java.net.MalformedURLException) JarFileInfo(com.dtstack.taier.pluginapi.JarFileInfo) YarnConfiguration(org.apache.hadoop.yarn.conf.YarnConfiguration) Configuration(org.apache.flink.configuration.Configuration) URL(java.net.URL) IOException(java.io.IOException) PluginDefineException(com.dtstack.taier.pluginapi.exception.PluginDefineException) YarnException(org.apache.hadoop.yarn.exceptions.YarnException) MalformedURLException(java.net.MalformedURLException) PackagedProgram(org.apache.flink.client.program.PackagedProgram) PluginDefineException(com.dtstack.taier.pluginapi.exception.PluginDefineException) CheckResult(com.dtstack.taier.pluginapi.pojo.CheckResult) File(java.io.File)

Example 12 with JarFileInfo

use of com.dtstack.taier.pluginapi.JarFileInfo in project Taier by DTStack.

the class PrepareOperator method parseJarFile.

public static JarFileInfo parseJarFile(String sql) {
    Matcher matcher = jarFilePattern.matcher(sql);
    if (!matcher.find()) {
        throw new PluginDefineException("not a addJar operator:" + sql);
    }
    JarFileInfo jarFileInfo = new JarFileInfo();
    jarFileInfo.setJarPath(matcher.group(1));
    if (matcher.groupCount() == 3) {
        jarFileInfo.setMainClass(matcher.group(3));
    }
    return jarFileInfo;
}
Also used : JarFileInfo(com.dtstack.taier.pluginapi.JarFileInfo) Matcher(java.util.regex.Matcher) PluginDefineException(com.dtstack.taier.pluginapi.exception.PluginDefineException)

Aggregations

JarFileInfo (com.dtstack.taier.pluginapi.JarFileInfo)12 PluginDefineException (com.dtstack.taier.pluginapi.exception.PluginDefineException)7 File (java.io.File)4 URL (java.net.URL)4 IOException (java.io.IOException)3 MalformedURLException (java.net.MalformedURLException)3 Matcher (java.util.regex.Matcher)3 YarnException (org.apache.hadoop.yarn.exceptions.YarnException)3 Configuration (org.apache.flink.configuration.Configuration)2 YarnConfiguration (org.apache.hadoop.yarn.conf.YarnConfiguration)2 JobClient (com.dtstack.taier.pluginapi.JobClient)1 CheckResult (com.dtstack.taier.pluginapi.pojo.CheckResult)1 ParamAction (com.dtstack.taier.pluginapi.pojo.ParamAction)1 HashMap (java.util.HashMap)1 PackagedProgram (org.apache.flink.client.program.PackagedProgram)1 YarnClusterDescriptor (org.apache.flink.yarn.YarnClusterDescriptor)1