比方说,我从文件myFile.csv(位于HDFS中)创建了Hive外部表“myTable”。
myFile.csv每天都在更改,然后我有兴趣每天更新一次“myTable”。
是否有任何HiveQL查询告诉我每天更新表格?
谢谢。
P.S。
我想知道它是否与目录的工作方式相同:比如说,当我的“myDir”包含10个文件时,我从HDFS目录“myDir”创建Hive分区。第二天“myDIr”包含20个文件(添加了10个文件)。我应该更新Hive分区吗?
答案 0 :(得分:6)
Hive中基本上有两种类型的表。
一个是由hive仓库管理的托管表,无论何时创建表数据都将被复制到内部仓库。
你can not have latest data in the query output
。
其他是外部表格,其中hive will not copy its data to internal warehouse
。
因此,无论何时在表上触发查询,它都会从文件中检索数据。
所以你甚至可以在查询输出中获得最新的数据。
<强> That is one of the goals of external table.
强>
您甚至可以删除表格,数据不会丢失。
答案 1 :(得分:4)
如果在表create语句中添加LOCATION '/path/to/myFile.csv'
子句,则不必在Hive中更新任何内容。它将始终在查询中使用最新版本的文件。