我正在使用 Spark 流将聚合输出作为 Parquet 文件写入使用 SaveMode.Append 的 hdfs。我创建了一个外部表,如:
CREATE TABLE if not exists rolluptable
USING org.apache.spark.sql.parquet
OPTIONS (
path "hdfs:////"
);
我的印象是,在外部表的情况下,查询也应该从新添加的 Parquet 文件中获取数据。但是,似乎新写入的文件没有被提取。
每次删除并重新创建表都可以正常工作,但不是解决方案。
请建议我的表如何也有来自较新文件的数据。
最佳答案
你在用 Spark 读那些表吗?
如果是这样, Spark 缓存拼花表元数据(因为模式发现可能很昂贵)
为了克服这个问题,您有 2 个选择:
spark.sql.parquet.cacheMetadata
至 false
sqlContext.refreshTable("my_table")
详情请看这里:http://spark.apache.org/docs/latest/sql-programming-guide.html#hive-metastore-parquet-table-conversion
关于apache-spark - 外部表未从 Spark 流写入的 Parquet 文件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33812993/