外部表未刷新数据

时间:2020-10-30 03:26:06

标签: sql amazon-s3 hive snowflake-cloud-data-platform external-tables

假设我在Hive中有一个外部表,并且外部表的S3位置中的csv文件如下所示。

+----+------+
| ID | Name |
+----+------+
|  1 | A    |
|  2 | B    |
+----+------+

如果我像下面那样更改文件中的数据,当我在Hive中查询外部表时,我就能看到更改后的值。

+----+------+
| ID | Name |
+----+------+
|  1 | A    |
|  2 | C    |
+----+------+

尽管我在Snowflake中创建外部表时添加了auto_refresh = true,但在Snowflake中进行测试的情况相同,我看不到新数据,但仍然可以看到旧数据。 >

create or replace external table schema.table_name 
(
    ID INT as  (value:c1::int), 
    Name varchar(20) as ( value:c2::varchar)
)
with location = @ext_stage_test
file_format = pipeformat
auto_refresh = true

这是雪花的行为还是我错过了什么?

我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我将其作为答案,但这听起来并不像您已经在AWS S3上设置了SNS通知。使用AUTO_REFRESH,当通知发送到队列中某个文件已放入S3存储桶或已删除文件的通知时,Snowflake可以刷新外部表。这是唯一可用的真正自动刷新的属性。否则,需要手动刷新外部表以刷新外部表:

alter external table exttable_part refresh;

如果您无法设置文档(https://docs.snowflake.com/en/sql-reference/sql/create-external-table.html#simple-external-table-auto-refresh-using-amazon-sns)中提到的SNS配置,那么我建议将上述命令添加到task,该命令以对您有意义的频率执行。