不使用java类将数据插入表的配置单元语句

不使用java类将数据插入表的配置单元语句,java,hadoop,hive,spring-jdbc,Java,Hadoop,Hive,Spring Jdbc,我试图使用配置单元语句实例将java类中其他表的数据插入到配置单元表中,源表和目标表都存在于同一配置单元数据库中 所有源表都包含数据 以下类执行上述查询: @Component public class HiveExecutor implements IExecutor{ static final Logger logger = Logger.getLogger(HiveExecutor.class); @Autowired ConnectionFactory co

我试图使用配置单元语句实例将java类中其他表的数据插入到配置单元表中,源表和目标表都存在于同一配置单元数据库中

所有源表都包含数据

以下类执行上述查询:

@Component
public class HiveExecutor implements IExecutor{

    static final Logger logger = Logger.getLogger(HiveExecutor.class);

    @Autowired 
    ConnectionFactory connectionFactory;

    @Override
    public ResultSetHolder executeSql(String sql) throws IOException {
        logger.info(" Inside hive executor  for SQL : " + sql);
        ResultSetHolder rsHolder = new ResultSetHolder();
        IConnector connector = connectionFactory.getConnector("hive");
        ConnectionHolder conHolder = connector.getConnection();
        Object obj = conHolder.getConObject();
        if(obj instanceof Statement) {
            Statement stmt = (Statement) obj;
            ResultSet rs=null;
            try {
                if(sql.toUpperCase().contains("INSERT")) {
                    int result = stmt.executeUpdate(sql);
                    if(result != 0)
                        logger.info("Successfull insertion operation. Number of rows changed: "+result);
                    else
                        logger.info("Unsuccessfull insertion operation.");
                }
                else
                    rs = stmt.executeQuery(sql);
                rsHolder.setResultSet(rs);
                rsHolder.setType(ResultType.resultset);
            } catch (SQLException e) {              
                e.printStackTrace();
            }
        }       
        return rsHolder;
    }

    @Override
    public Boolean registerTempTable(DataFrame df, String tableName) {
        // TODO Auto-generated method stub
        return null;
    }
}
执行SELECT查询时,它确实会带来数据,但insert查询失败/返回0

当从配置单元CLI执行相同的插入查询时,它会按预期工作,将数据插入目标表

尝试在连接字符串中指定队列名称:


CONNECTION_STRING=“jdbc:hive2://host:port/db;principal=principal=hive/HiveServer2Host@YOUR-REALM.COM?mapreduce.job.queuename=prod”

异常是由于分区参数、配置单元属性partition和partition.mode被追加到动态生成的插入查询中。通过在实际查询解决问题之前执行它们。