我正在使用spark streaming将聚合输出作为镶木地板文件写入使用SaveMode.Append的hdfs。我有一个外部表创建如下:
CREATE TABLE if not exists rolluptable
USING org.apache.spark.sql.parquet
OPTIONS (
path "hdfs:////"
);
我的印象是,在外部表的情况下,查询应该从新镶木地板添加的文件中获取数据。但是,似乎新编写的文件没有被提取。
每次都可以正常删除并重新创建表,但不是解决方案。
请建议我的表格如何从新文件中获取数据。
答案 0 :(得分:3)
你是否正在阅读带火花的桌子? 如果是这样,spark会缓存镶木桌子元数据(因为架构发现可能很昂贵)
要解决此问题,您有两个选择:
spark.sql.parquet.cacheMetadata
设置为false
sqlContext.refreshTable("my_table")