我想在hivecontext中使用pyspark应用scd1和scd2。在我的方法中,我读取增量数据和目标表。看完后,我加入了他们的行列。我正在对所有源Dataframe执行registertemptable。我正在尝试将最终的数据集写入目标表,我面临的问题是,在从中读取数据集的表中,插入覆盖是不可能的。
请提出一些解决办法。我不想将中间数据写入物理表并再次读取。
是否有任何属性或方法来存储最终数据集,而不保留对从中读取的表的依赖关系。这样,就有可能覆盖表。
请建议。
我想在hivecontext中使用pyspark应用scd1和scd2。在我的方法中,我读取增量数据和目标表。看完后,我加入了他们的行列。我正在对所有源Dataframe执行registertemptable。我正在尝试将最终的数据集写入目标表,我面临的问题是,在从中读取数据集的表中,插入覆盖是不可能的。
请提出一些解决办法。我不想将中间数据写入物理表并再次读取。
是否有任何属性或方法来存储最终数据集,而不保留对从中读取的表的依赖关系。这样,就有可能覆盖表。
请建议。
2条答案
按热度按时间5w9g7ksd1#
我正在浏览spark的文档,当我查看那里的一处房产时,我突然想到了一个想法。
由于我的表是parquet,我使用hivemetastore通过将这个属性设置为false来读取数据。
这个解决方案对我很有效。
20jt8wwn2#
决不能覆盖正在读取的表。它可能导致数据损坏和故障时完全丢失数据之间的任何情况。
同样重要的是要指出,正确实现的scd2永远不应该覆盖整个表,并且可以实现为(大部分)追加操作。据我所知,如果没有可变存储,scd1就无法有效地实现,因此不适合spark。