我用CSV创建了一个外部表,如下所示。
CREATE EXTERNAL TABLE OpenCSVSerde_CSV (
id STRING COMMENT 'from deserializer',
name STRING COMMENT 'from deserializer'
)
USING CSV
LOCATION 'abfss://[email protected]/csvtabletest';
当我添加一个新文件到路径abfss://email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)/csvtabletest时,表没有刷新,我必须手动执行REFRESH TABLE OpenCSVSerde_CSV。我尝试在集群级别设置spark配置,但也没有帮助。
spark.databricks.io.cache.enabled false
有没有办法让数据自动刷新?
1条答案
按热度按时间8cdiaqws1#
默认情况下,这不会自动刷新表。因此,您需要在位置中添加新文件后运行
REFRESH TABLE OpenCSVSerde_CSV
。但是,要使此查询自动运行,请遵循以下方法。
1.设置笔记本电脑的
File Arrival
触发器。每当添加文件时,它都会触发notebook运行上述查询。您可以参考this文档。1.您也可以添加计划来运行笔记本电脑的时间间隔的基础上如何频繁添加您的文件。
您可以按照下面的步骤为第二个选项使用时间表。
后藤工作流>作业>创建作业
接下来添加所需的详细信息。
1.任务名称:给予任务名称
1.类型:
Notebook
1.来源:
Workspace
1.Path给予有刷新表查询的笔记本的路径
1.集群:选择要运行的群集
点击创建。创建后,您将获得如下界面。
点击【添加计划】,选择【触发类型】为
Scheduled
,每5分钟设置一次【计划】。你可以根据你的文件被添加的频率来改变,我给了每5分钟一次。然后点击保存。下面是存储帐户中的文件和选择查询中的记录。
和
现在添加新的csv文件
newuser.csv
。它将每5分钟刷新一次表,并在这5分钟间隔内添加数据。输出量:
和