Dal version 0.12 Hive supporta il tipo di dati VARCHAR
.Il funzionamento di varchar è migliore della stringa in Hive?
VARCHAR
offrirà prestazioni migliori di STRING
in una tipica query Hive analitica?
Dal version 0.12 Hive supporta il tipo di dati VARCHAR
.Il funzionamento di varchar è migliore della stringa in Hive?
VARCHAR
offrirà prestazioni migliori di STRING
in una tipica query Hive analitica?
In alveare per String predefinita viene mappata VARCHAR (32762) quindi questo significa
il comportamento predefinito per il tipo di dati STRING è mappare il tipo di tipo di dati SQL di VARCHAR (32762) , il comportamento predefinito c un cavo di prestazioni emette
Questa spiegazione è sulla base di IBM BIG SQL che utilizza alveare implicitamente pone
varchar tipo di dati è inoltre memorizzato internamente come stringa. L'unica differenza che vedo è che String non ha limiti con un valore massimo di 32.767 byte e Varchar è limitato con un valore massimo di 65.535 byte. Non penso che avremo alcun guadagno in termini di prestazioni perché l'implementazione interna per entrambi i casi è String. Non so molto sugli interni di hive, ma potrei vedere l'ulteriore elaborazione eseguita dall'alveare per troncare i valori varchar. Di seguito è riportato il codice (org.apache.hadoop.hive.common.type.HiveVarchar): -
public static String enforceMaxLength(String val, int maxLength) {
String value = val;
if (maxLength > 0) {
int valLength = val.codePointCount(0, val.length());
if (valLength > maxLength) {
// Truncate the excess chars to fit the character length.
// Also make sure we take supplementary chars into account.
value = val.substring(0, val.offsetByCodePoints(0, maxLength));
}
}
return value;
}
Se qualcuno ha fatto l'analisi delle prestazioni/analisi comparativa si prega di condividere.
Perché è 32762 e non 2^15-1? – maxx777
@ maxx777 come mappa il tipo di dati SQL ecco perché piuttosto che una normale stringa di linguaggio di programmazione. –