Пакетное обновление JDBC для HIVE с использованием перезаписи INSERT - PullRequest
0 голосов
/ 10 октября 2018

У меня есть таблица улья emp с разделом даты, и я хочу перезаписывать раздел каждый раз, когда я делаю вставку.

Я использую JDBC batchUpdate и перезапись вставки улья.

Проблема в том, что всякий раз, когда я вставляю более одного элемента, используя формат ниже, каждая итерация вставки перезаписывает предыдущую вставку.

jdbcTemplate.batchUpdate("INSERT OVERWRITE table emp partition(datestamp = ?) values (?,?)",
            new BatchPreparedStatementSetter() {
                public void setValues(PreparedStatement ps, int i) throws SQLException {

                    ps.setString(1, date);
                    ps.setString(2, emp.get(i).getEmp_id());
                    ps.setString(3, emp.get(i).getName());
                }

                public int getBatchSize() {
                    return emp.size();
                }
            });

Перезапись вставки будет работать, и я могу вставитьболее одной строки, если оператор вставки структурирован, как показано ниже, со всеми значениями в одной строке, например:

INSERT OVERWRITE table emp partition(datestamp = ?) values(?, ?),(?, ?); 

Однако я не знаю самого простого способа сделать это, используяJDBC batchUpdate.Любая помощь или предложения приветствуются.Спасибо!

...