Hadoop 配置单元表存档

Hadoop 配置单元表存档,hadoop,hive,Hadoop,Hive,我想在配置单元表上应用归档和清除机制,包括内部和外部表以及分区和非分区表 我有一个site_visitors表,它用vision_date分区。 我想归档site_visitors表数据,在过去一年中没有访问过我的站点的用户中。同时,我不想将这些存档数据保存在同一个表目录中。我可以将数据归档到某个特定位置。您可以在HDFS目录中的分区上处理这些数据,下面是实现这一点的方法之一 您的内部表/主表将位于hdfs的顶部,目录将类似于hdfs的下面:namenode/user/hive/warehous

我想在配置单元表上应用归档和清除机制,包括内部和外部表以及分区和非分区表

我有一个site_visitors表,它用vision_date分区。
我想归档site_visitors表数据,在过去一年中没有访问过我的站点的用户中。同时,我不想将这些存档数据保存在同一个表目录中。我可以将数据归档到某个特定位置。

您可以在HDFS目录中的分区上处理这些数据,下面是实现这一点的方法之一

您的内部表/主表将位于hdfs的顶部,目录将类似于hdfs的下面:namenode/user/hive/warehouse/schema.db/site\u visitors/visit\u date=2017-01-01 hdfs:namenonde/user/hive/warehouse/schema.db/site\u visitors/visit\u date=2017-01-02 hdfs:namenonde/user/hive/warehouse/schema.db/site\u visitors/visit\u date=2017-01-03

您可以在HDFS上创建一个归档表,或者如果您只是想归档数据,您可以将分区转储到HDFS中的其他位置。无论如何,您的HDFS位置将如下所示

hdfs:namenonde/hdfs\地点/现场\访客/参观日期=2017-01-01 hdfs:namenonde/hdfs\地点/现场\访客/参观日期=2017-01-02 hdfs:namenonde/hdfs\位置/站点\访客/参观日期=2017-01-03

您可以运行UNIX脚本、javascript或环境中使用的任何其他语言,根据分区日期将文件从一个HDFS位置移动到另一个存档HDFS位置

您还可以使用下面的方法,将数据加载到归档表中,然后将数据放到原始表中

!bin/bash 存档=1美元 现在=$date+%Y-%m-%d StartDate=$now 归档文件将根据归档日期给出一个日期,用于更改和加载 存档\u dt=$date-date=${now}-${archive}day+%Y-%m-%d EndDate=$archive\u dt 您可以使用hive、beeline或impala将数据插入归档表,我使用beeline作为示例 beeline-u${CONN\u URL}-e插入表${SCHEMA}.archive\u表分区访问日期从${SCHEMA}.${table\u NAME}中选择*,其中访问日期<${archive\u dt} 将数据加载到存档表后,我可以将分区放在原始表中 beeline-u${CONN\u URL}-e ALTER TABLE${SCHEMA}.main\u TABLE DROP PARTITIONvisit\u date<${archive\u dt} 修复表以在更改后同步元数据
beeline-u${CONN_URL}-e MSCK修复表${SCHEMA}.main_表;MSCK修复表archiveSchema.archive\u表感谢rob的建议。这是一个好办法。如果我还想归档HBase表中的旧数据,该怎么办?如果您认为我的答案对您有效,请勾选我的答案。请将HBase问题作为单独的问题提问,在这种情况下,您将能够听到除我之外的许多答案。希望你喜欢我的建议。当然罗勃。谢谢你的帮助!