Problem:

Potrzebujesz zrobić CDC w spark. Sprawdzić jakie wiersze się zmieniły i tylko je zaktualizować. Nie chcemy aktualizować wszystkiego bo to jest nie efektywe. Ładowanie całościowe też nie wchodzi w grę, zbiór danych jest zbyt duży.
Decyzja zapadła: będziemy liczyć sumę kontrolną (checksum) na wszystkich kolumnach w źródle i tabeli docelowej.
Jak policzyć tą sumę efektywnie? Jakiej funkcji do liczenia sumy kontrolnej użyć md5 czy xxhash64? Jakie pułapki czekają nas po drodze? Które rozwiązanie będzie szybsze?

Rozwiązanie:

Zdecydowanie szybsze będzie użycie xxhash64. Nie jest to funkcja kryptograficzna i z tego wynika jej prędkość. Ma ona jednak kilka właściwości, które mogą wygenerować problemy w kodzie i o tych problemach będzie w dzisiejszym wpisie.