外部表没有从火花流编写的镶木地板文件更新

时间:2015-11-19 19:44:13

标签: apache-spark hive apache-spark-sql parquet

我正在使用spark streaming将聚合输出作为镶木地板文件写入使用SaveMode.Append的hdfs。我有一个外部表创建如下:

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

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

每次都可以正常删除并重新创建表,但不是解决方案。

请建议我的表格如何从新文件中获取数据。

1 个答案:

答案 0 :(得分:3)

你是否正在阅读带火花的桌子? 如果是这样,spark会缓存镶木桌子元数据(因为架构发现可能很昂贵)

要解决此问题,您有两个选择:

  1. 将配置spark.sql.parquet.cacheMetadata设置为false
  2. 在查询之前刷新表:sqlContext.refreshTable("my_table")
  3. 请点击此处了解详情:http://spark.apache.org/docs/latest/sql-programming-guide.html#hive-metastore-parquet-table-conversion