Вставить в таблицу КУДУ по даташитам

Я пишу, чтобы узнать о проблеме в моем процессе:

У меня есть таблица Kudu, и когда я пытаюсь вставить с помощью данных (11.5 или 11.7) новую строку, размер которой превышает 500 символов, с использованием драйвера Impala JDBC, я получаю эту ошибку:

Неустранимая ошибка: коннектору не удалось выполнить оператор: INSERT INTO default.tmp_consulta_teste (idconsulta, idcliente, idinstituicao, idunidadeinst, datahoraconsulta, desccpfcnpj, idcentral, idcontrato, idusu, valorrettegrandosis, valorrettegrando? ,?,?,?,?,?,?,?,?,?,?). Сообщенные ошибки: [SQLSTATE HY000] java.sql.SQLException: [Cloudera] ImpalaJDBCDriver Ошибка при получении типа данных параметра: HIVE_PARAMETER_QUERY_DATA_TYPE_ERR_NON_SUPPORT_DATA_TYPE.

************** Как исправить? Мне нужно загрузить эту информацию. **********


person Stephane de Paula    schedule 28.02.2019    source источник
comment
Вы смотрели community.cloudera.com/t5/Interactive-Short-cycle-SQL/?   -  person tk421    schedule 01.03.2019


Ответы (1)


У меня была аналогичная проблема, когда я получил ошибку:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw 
exception [Request processing failed; nested exception is  
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; 
uncategorized SQLException for SQL [update service set comments =? where service_name 
="Zzzzz";]; SQL state [HY000]; error code [500352]; [Simba] 
[ImpalaJDBCDriver](500352) Error getting the parameter data type: 
HIVE_PARAMETER_QUERY_DATA_TYPE_ERR_NON_SUPPORT_DATA_TYPE; nested exception is 
java.sql.SQLException: [Simba][ImpalaJDBCDriver](500352) Error getting the parameter 
data type: HIVE_PARAMETER_QUERY_DATA_TYPE_ERR_NON_SUPPORT_DATA_TYPE] with root cause

Я сослался на последний ответ в приведенной ниже ссылке: https://community.cloudera.com/t5/Support-Questions/HIVE-PARAMETER-QUERY-DATA-TYPE-ERR-NON-SUPPORT-DATA-TYPE/td-p/48849

Я сделал следующее:

1. Убедитесь, что это стол Куду.

  1. Вместо jdbcTemplate.query я сделал jdbcTemplate.batchUpdate, чтобы использовать PreparedStatement, сделал SetObject в PreparedStatement.

    jdbcTemplate.batchUpdate(UpdateComment, new BatchPreparedStatementSetter(){
    
        @Override
        public int getBatchSize() {
    
            return 1;
        }
    
        @Override
        public void setValues(PreparedStatement ps, int i) throws SQLException {
            ps.setObject(1, comments);
    
        }
    
    });
    
person Madhura Pawar    schedule 07.11.2019