外部表未从spark流写入的镶木地板文件中更新



我使用spark流将聚合输出作为镶木地板文件使用SaveMode.Append写入hdfs。我创建了一个外部表,如:

CREATE TABLE if not exists rolluptable
USING org.apache.spark.sql.parquet
OPTIONS (
  path "hdfs:////"
);

我的印象是,在外部表的情况下,查询也应该从新添加的镶木地板文件中获取数据。但是,新编写的文件似乎没有被拿起。

每次删除并重新创建表都很好,但不是一个解决方案。

请建议我的表如何也能从较新的文件中获得数据。

你在读那些表格吗?如果是这样,spark缓存镶木地板表元数据(因为模式发现可能很昂贵)

为了克服这个问题,你有两个选择:

  1. 将配置spark.sql.parquet.cacheMetadata设置为false
  2. 查询前刷新表:sqlContext.refreshTable("my_table")

请参阅此处了解更多详细信息:http://spark.apache.org/docs/latest/sql-programming-guide.html#hive-metastore镶木地板桌子转换

相关内容

  • 没有找到相关文章

最新更新