2016-09-02 1 views
0

Comment concevez-vous efficacement une table Hive/Impala en tenant compte des faits suivants?Partitionnement Hadoop. Comment concevez-vous efficacement une table Hive/Impala?

  1. La table reçoit des données d'outil d'environ 100 millions de lignes tous les jours . La date à laquelle il reçoit les données est stockée dans une colonne dans la table avec son ID d'outil.
  2. Chaque outil reçoit environ 500 courses par jour qui est identifiée par l'ID de la colonne. Chaque numéro d'exécution contient des données d'environ 1 mb.
  3. La taille par défaut du bloc est de 64 mb.
  4. La table peut être recherchée par date, identifiant d'outil et numéro d'identification dans cet ordre.
+1

Qu'avez-vous considéré jusqu'à présent? – dg99

+0

[Bienvenue sur SO!] (Http://stackoverflow.com/help/how-to-ask) s'il vous plaît mettre à jour vos conclusions, sinon la question deviendra trop large! –

Répondre

0

Si vous effectuez des analyses sur ces données, un choix solide avec Impala utilise le format Parquet. Ce qui a bien fonctionné pour nos utilisateurs est de partitionner la date par année, mois, jour en fonction d'une valeur de date sur l'enregistrement.

Ainsi, par exemple CREATE TABLE foo partition (tool_id int, horodatage eff_dt) (année int, mois int, jour int) stocké sous forme de parquet

Lors du chargement des données dans ce tableau, nous utilisons quelque chose comme ça pour créer dynamique partitions:

INSERT INTO foo partition (year, month, day) 
SELECT tool_id, eff_dt, year(eff_dt), month(eff_dt), day(eff_dt) 
FROM source_table; 

Ensuite, former vos utilisateurs que s'ils veulent la meilleure performance pour ajouter année, mois, à leur clause JOUR WHERE pour qu'il frappe la partition pour une meilleure performance. Puis demandez-leur d'ajouter le eff_dt dans l'instruction SELECT afin qu'ils aient une valeur de date dans le format qu'ils aiment voir dans leurs résultats finaux.

Dans CDH, Parquet stocke les données par défaut dans des blocs de 256 Mo (ce qui est configurable). Voici comment le configurer: http://www.cloudera.com/documentation/enterprise/latest/topics/impala_parquet_file_size.html