Recentemente voglio caricare i file di registro in tabelle hive, voglio uno strumento in grado di leggere i dati da una determinata directory e caricarli automaticamente in hive. Questa directory può includere molte sottodirectory, ad esempio, la directory certa è '/ log' e le sottodirectory sono '/ log/20130115', '/ log/20130116', '/ log/201301017'. Esistono alcuni strumenti ETL che possono ottenere la funzione: una volta che i nuovi dati sono memorizzati in una determinata directory, lo strumento può rilevare automaticamente questi dati e caricarli in una tabella alveare. C'è un tale strumento, devo scrivere script da solo?come caricare automaticamente i dati nell'alveare
risposta
È possibile farlo facilmente utilizzando le tabelle esterne di Hive e partizionando la tabella di giorno. Ad esempio, creare la tabella come tale:
create external table mytable(...)
partitioned by (day string)
location '/user/hive/warehouse/mytable';
Ciò essenzialmente creare una tabella vuota nella metastore e farlo puntare a /user/hive/warehouse/mytable
.
Quindi è possibile caricare i dati in questa directory con formato chiave = valore dove chiave è il vostro nome della partizione (qui "giorno") e il valore è il valore della partizione. Per esempio:
hadoop fs -put /log/20130115 /user/hive/warehouse/mytable/day=20130115
volta che i dati è stato caricato lì, è nella directory HDFS, ma il metastore Hive non sa ancora che appartiene al tavolo, in modo da poter aggiungere in questo modo:
alter table mytable add partition(day='20130115');
E dovresti essere a posto, il metastore verrà aggiornato con la tua nuova partizione e ora puoi interrogare la tua tabella su questa partizione.
Questo dovrebbe essere banale per script, è possibile creare un processo di cron in esecuzione una volta al giorno che farà questi comandi in ordine e trovare la partizione di caricare con il comando date
, ad esempio facendo in modo continuo questo comando:
hadoop fs -test /log/`date +%Y%m%d`
e verificare se $?
è uguale a 0 ti dirà se il file è qui e se lo è, puoi trasferirlo e aggiungere la partizione come descritto sopra.
È possibile utilizzare il comando LOAD DATA fornito da Hive. Corrisponde esattamente al tuo caso d'uso. Specifica una directory nel tuo file system locale e crea tabelle Hive.
utilizzoEsempio - LOAD DATA INPATH LOCAL '/ home/utente/some-directory' SOVRASCRIVI INTO TABLE
- 1. Come caricare automaticamente i dati in un pacchetto R?
- 2. Come caricare, etichettare e caricare i dati jpeg in Tensorflow?
- 3. Come caricare i dati raggruppati con SSIS
- 4. Come caricare i dati in Rack :: Test
- 5. Come posso caricare automaticamente alias all'avvio?
- 6. Come caricare i dati ospitati esternamente in formato JSON
- 7. Come posso caricare i dati su modale AngularJS?
- 8. Come caricare i dati JSON con jQuery, PHP e MySQL
- 9. Come caricare i dati JSON nel componente Angular2
- 10. Come caricare i dati in Amazon Redshift tramite Python Boto3?
- 11. Come caricare i dati nell'archivio usando un MemoryProxy
- 12. Come caricare i dati di test (dispositivi) in Play2?
- 13. Come caricare i dati dal file salvato con Spark
- 14. Come caricare i dati di allenamento in PyBrain?
- 15. Come caricare i set di dati di esempio in R?
- 16. Come salvare e caricare correttamente i dati di numpy.array()?
- 17. CoreData Swift: come salvare e caricare i dati?
- 18. Impossibile caricare automaticamente risorse localizzate con pathForResource
- 19. Come caricare automaticamente un modulo del kernel in Gentoo Linux?
- 20. Emberjs dati Come caricare hasMany-Data tardi
- 21. AjaxFileUpload caricare automaticamente file una volta selezionato
- 22. Crea mysql_fetch_assoc rileva automaticamente i tipi di dati di restituzione?
- 23. Come caricare automaticamente file dopo file è stato scelto
- 24. come caricare automaticamente le funzioni definite dall'utente in matematica
- 25. ricevendo un errore come Impossibile caricare automaticamente UserController
- 26. Come caricare automaticamente le "librerie" in laravel 4?
- 27. Come caricare i modelli Django?
- 28. Requirejs - La configurazione richiede prima di caricare i dati-principale
- 29. Mysql caricare i dati per colonna esistente di una tabella
- 30. come caricare i dati nella base di dati utilizzando DBUnit in Maven
Grazie tante, infatti, ho una ulteriore domanda, in questo modo posso caricare la mia i file di registro divisi per data in tabelle hive, tuttavia, il mio capo mi ha chiesto di trovare un approccio o strumento per caricare i dati, ovvero: supponendo che ci sia una determinata directory chiamata '/ log', l'hive interrogherà questa directory per tutto il tempo , una volta creati i nuovi dati, forse/log/20130118,/log/20130119, l'hive aggiungerà automaticamente questa partizione e caricherà il file di registro come/20130118 o/20130119 nella partizione della tabella, come posso ottenerlo, chiedi scusa –
Quando si specifica la parola chiave 'EXTERNAL' i tuoi dati non vengono copiati ovunque e rimangono nella posizione in cui li hai inseriti. (Quando non si specifica 'EXTERNAL', Hive copia i dati nella propria posizione predefinita). Per quanto ne so, ogni volta che aggiungi un file alla cartella specificata da "LOCATION" e successivamente esegui una query nella tua tabella, i nuovi dati dovrebbero essere visibili. È passato un po 'di tempo da quando ho giocato con Hive, quindi forse @Charles Menguy può confermare questo? – Pieterjan
Non sono sicuro al 100% di aver capito cosa vuoi ottenere, puoi modificare la tua domanda con maggiori dettagli?Se vuoi semplicemente caricare i file nella tabella senza partizioni di date, @Pieterjan ha ragione, puoi semplicemente mettere i file nella radice della tabella in HDFS e non devi modificare la tabella, Hive sceglierà direttamente su. –