Apache spark 无缝覆盖impala表的底层拼花地板数据
我有一张黑斑羚桌子,后面有拼花文件,这是另一支球队使用的。 每天我都会运行一个批处理Spark作业,覆盖现有的拼花地板文件(创建新的数据集,现有文件将被删除,新文件将被创建) 我们的Spark代码如下所示Apache spark 无缝覆盖impala表的底层拼花地板数据,apache-spark,parquet,impala,Apache Spark,Parquet,Impala,我有一张黑斑羚桌子,后面有拼花文件,这是另一支球队使用的。 每天我都会运行一个批处理Spark作业,覆盖现有的拼花地板文件(创建新的数据集,现有文件将被删除,新文件将被创建) 我们的Spark代码如下所示 dataset.write.format(“拼花”).mode(“覆盖”).save(路径) 在此更新过程中(覆盖拼花地板数据文件,然后刷新Impala表),如果有人访问该表,那么他们最终会错误地说底层数据文件不存在 是否有解决此问题的解决方案或解决方法?因为我不希望其他团队在访问表时在任何时
dataset.write.format(“拼花”).mode(“覆盖”).save(路径)
在此更新过程中(覆盖拼花地板数据文件,然后刷新Impala表),如果有人访问该表,那么他们最终会错误地说底层数据文件不存在
是否有解决此问题的解决方案或解决方法?因为我不希望其他团队在访问表时在任何时间点看到错误
也许我可以将新的数据文件写入不同的位置,然后使Impala表指向该位置?您看到的行为是因为Impala的工作方式。Impala从HMS获取表的元数据,如表结构、分区详细信息、HDFS文件路径,并从NameNode获取相应HDFS文件路径的块详细信息。所有这些详细信息都由目录获取,并将分发到Impala守护进程中以供执行 当删除表的底层文件并在Impala外部写入新文件时,需要执行刷新,以便获取新文件详细信息(例如文件和相应的块详细信息)并在守护进程中分发。这样,黑斑羚就会意识到新编写的文件 由于您正在覆盖文件,Impala查询将无法找到它所知道的文件,因为它们已经被删除,并且正在写入新文件。这是意料之中的事 作为解决方案,您可以执行以下操作之一:
希望这有帮助!您能解释一下“覆盖拼花数据文件”的更多信息吗?您是否先删除拼花文件,然后使用Spark在同一目录下写入新的拼花数据文件?@Gomz谢谢,编辑了我的问题并添加了更多信息。“它们最终会出错…”--能否添加运行查询时遇到的确切错误?