我有一个Vertica数据库,该数据库应该用于“热”数据。
我发现我可以将“冷”数据另存为HDFS上的Parquet文件作为外部表,也可以成功将数据导出到Parquet文件中。
关于此过程,我有几个问题:
*出口到镶木地板-如何经常做?我需要将查询作为cron选项卡运行吗?
*创建外部表时,Vertica是否知道将其“连接”到主表?我的意思是说,运行任何查询时,Verica还将在与存储“热”数据的主表相关的外部表中进行搜索。
答案 0 :(得分:1)
如果要进行定期导出,则需要使用外部调度程序(例如cron)。您可以导出到HDFS,NFS或S3。
如果Vertica中有一些数据(您的热数据),而外部表中有其他(冷)数据,则这是两个单独的表。您可以一起查询它们(从热,冷中选择...),但是您的外部Parquet数据不在包含Vertica(ROS,热)数据的表中。
查询外部表时,Vertica将从外部位置读取相关数据。从某种意义上说,它在每个查询上使用CREATE EXTERNAL TABLE表达式的FROM子句进行轻量级加载。 (Parquet列式格式和谓词下推之类的优化意味着这并不痛苦。)这意味着,如果FROM子句是一个glob(例如hdfs:///data/*/*.parquet
),则如果导出更多数据,则不需要更新表定义-就是有效。
请注意,每次导出都需要进入一个新目录。如果将它们全部放在同一父目录下,则可以像我的示例一样使用glob。参见the documentation。