El tipo de datos STRING en Hive las tablas se asigna al tipo CLOB de datos en Data Virtualization
Cuando virtualiza tablas en una fuente Hive de datos, Data Virtualization convierte los datos del tipo STRING al tipo CLOB en lugar del tipo Varchar cuando superan la longitud máxima de cadena.
Síntomas
Al virtualizar una tabla de Hive que contiene el tipo de datos STRING que supera la longitud máxima de serie predeterminada (MaxStringSize), el tipo de datos de la columna se convierte a CLOB.
Hive no establece una longitud máxima para STRING los tipos; por lo tanto, Data Virtualization virtualiza a una longitud específica para evitar el truncamiento. Sin embargo, puede ajustar la longitud máxima.
El ejemplo siguiente es de una tabla de Hive con series donde se puede ajustar el tipo de columna a una longitud adecuada para la agregación.
describe table TESTDATA.BASIC_STRING;
Data type Column
Column name schema Data type name Length Scale Nulls
------------------------------- --------- ------------------- ---------- ----- ------
c1 SYSIBM INTEGER 4 0 Yes
c_chr5 SYSIBM CHARACTER 5 0 Yes
c_vchr10 SYSIBM VARCHAR 10 0 Yes
c_str SYSIBM CLOB 65535 0 Yes
4 record(s) selected.
La consulta siguiente falla debido al tipo de datos CLOB.
select "c_str", sum("c1") from TESTDATA.BASIC_STRING group by "c_str";SQL0134N Improper use of a string column, host variable, constant, or function "c_str". SQLSTATE=42907
Resolución del problema
Puede modificar la columna que causa el error para reducir su tamaño a algo que se pueda utilizar en la agregación. En el ejemplo siguiente, se utiliza
VARCHAR(200), pero debe elegir lo que es apropiado para la longitud máxima de los datos.alter nickname TESTDATA.BASIC_STRING alter column "c_str" local type VARCHAR(200);La misma consulta tiene éxito ahora.
select "c_str", sum("c1") from TESTDATA.BASIC_STRING group by "c_str";c_str 2
------------------------------------------------------------------------------------------------------------ ---------------
112
382
something a little longer to test string, where we do support pushdown for aggregation 244
a 126
9995-12-31 23:59:59.999999 124
A STRING 118
- 114
0005-01-01 00:00:00.000001 122
8 record(s) selected.