欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

元数据实例一则

发布时间:2023/12/31 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 元数据实例一则 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

写的比较啰嗦,但是请仔细看完,看完后对于元数据你会很有底气地说出来啥用。

我们老提元数据,元数据到底啥用?

各种抽象的概念扑面而来,下面用一个具体的实验例子说清楚。

 

我们先说整个流程:

①Flink写入ORC文件

②hive建表,指定hive存储数据的文件路径

③hive中的表格中的数据长时间更新,我们去读hive的时候,其实是通过②中的文件路径进行更新到最新数据的。

########################################################################################################################

具体操作步骤如下:

①Flink写入ORC文件


CREATE EXTERNAL TABLE `example`(
  `axxsdf` string,
  `mydeailyTime` timestamp
  )
PARTITIONED by (
  `datetime` string
  )
STORED AS orcfile
LOCATION '/home/appleyuchi/example_file'
 

上面建hive表的元数据就是LOCATION '/home/appleyuchi/example_file'

 

操作效果
建表后再导入特定路径的数据

例如文件中数据导入到hive

后续这个文件再更新的话,mysql就不会动态同步更新了

建表的时候直接指定数据路径(上面例子中采用的就是这种)

建表时指定保存数据的文件所在的路径,

那么这个文件更新的时候,hive表中也会同步更新

 

 

 

③经过长时间的数据插入,有一天,我们需要去hive中查询,

我们显然希望最新的数据,

这个时候,如果事先指定了元数据,hive就会去根据元数据(也就是上面LOCATIOn指定的路径)来更新数据。

 

问题:

如果我在上面建立hive的时候不指定LOCATION,也就是我不用元数据,

而是建立hive表以后,再导入/home/appleyuchi/example_file中的数据可不可以?

答案当然是可以,但是,此时的导入数据是一次性的,当你更新/home/appleyuchi/example_file中的数据,甚至是删除/home/appleyuchi/example_file这个文件,

你的hive表都不会同步更新。

 

另外从这里,我们也可以清晰地理解"external table"的含义。

也就是说hive的底层数据文件路径,是手动指定的。

 

 

 

 

总结

以上是生活随笔为你收集整理的元数据实例一则的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。