Sie können das auf den Partitionen im HDFS-Verzeichnis behandeln, unten ist eine der Möglichkeiten, die Sie erreichen können.
Ihre interne Tabelle/Main Tabelle wird auf der Oberseite der hdfs sitzen und das Verzeichnis wird wie etwas aussehen unten hdfs:namenonde/user/hive/warehouse/schema.db/site_visitors/visit_date=2017-01-01 hdfs:namenonde/user/hive/warehouse/schema.db/site_visitors/visit_date=2017-01-02 hdfs:namenonde/user/hive/warehouse/schema.db/site_visitors/visit_date=2017-01-03
Sie können eine Archiv Tabelle oben auf HDFS erstellen oder wenn Sie gerade suchen, um die Daten zu archivieren Sie können die Partitionen an einen anderen Speicherort in HDFS ablegen. Wie auch immer, Ihr HDFS-Speicherort wird ungefähr wie folgt aussehen.
hdfs:namenonde/hdfs_location/site_visitors/visit_date=2017-01-01 hdfs:namenonde/hdfs_location/site_visitors/visit_date=2017-01-02 hdfs:namenonde/hdfs_location/site_visitors/visit_date=2017-01-03
Sie können einen UNIX-Skript oder Javascript oder in einer anderen Sprache ausführen, die in Ihrer Umgebung verwendet wird, um die Dateien von einem HDFS Ort zur anderen Archiv hdfs Lage auf den Partitionsdaten auf Basis zu bewegen.
Sie können auch mit dem folgenden Ansatz tun, wo Sie die Daten in die Archivtabelle laden und die Daten in der Originaltabelle löschen können.
#!bin/bash
ARCHIVE=$1
now=$(date +%Y-%m-%d)
StartDate=$now
#archive_dt will give a date based on the ARCHIVE date and that be will used for alterations and loading
archive_dt=$(date --date="${now} - ${ARCHIVE} day" +%Y-%m-%d)
EndDate=$archive_dt
#You can use hive or beeline or impala to insert the data into archive table, i'm using beeline for my example
beeline -u ${CONN_URL} -e "insert into table ${SCHEMA}.archive_table partition (visit_date) select * from ${SCHEMA}.${TABLE_NAME} where visit_date < ${archive_dt}"
#After the data been loaded to the archive table i can drop the partitions in original table
beeline -u ${CONN_URL} -e "ALTER TABLE ${SCHEMA}.main_table DROP PARTITION(visit_date < ${archive_dt})"
#Repair the tables to sync the metadata after alterations
beeline -u ${CONN_URL} -e "MSCK REPAIR TABLE ${SCHEMA}.main_table; MSCK REPAIR TABLE archiveSchema.archive_table"
Dank rob für Ihre Anregungen. Das ist ein guter Ansatz. Was, wenn ich auch die älteren Daten aus HBase-Tabellen archivieren wollte? – RahulN
Wenn Sie denken, dass meine Antwort für Sie funktioniert hat, kreuzen Sie bitte meine Antwort an. – roh
Bitte stellen Sie die HBase-Frage als separate Frage, Sie werden in diesem Fall viele andere Antworten als meine hören können. Hoffe du magst meinen Vorschlag. – roh