Praca z plikami Apache Parquet
Apache Parquet to kolumnowy format pamięci masowej, wykazujący się wysoką wydajnością podczas przechowywania i wysyłania zapytań do dużych zestawów danych. W Qlik Sense można odczytywać dane z plików Parquet i przechowywać tabele jako pliki Parquet.
Parquet umożliwia efektywne odpytywanie określonych kolumn zamiast czytania całej tabeli. Dzięki temu doskonale nadaje się do użytku podczas przetwarzania zbiorów big data. Ponadto Parquet obsługuje wydajną kompresję i kodowanie danych. Może to jeszcze bardziej zmniejszyć zajmowane miejsce w pamięci i poprawić wydajność zapytań.
Tworzenie plików Parquet
Pliki Parquet można tworzyć za pomocą polecenia Store w skrypcie. W skrypcie należy określić, że wcześniej wczytana tabela lub część takiej tabeli ma zostać eksportowana do pliku o podanej nazwie i lokalizacji. Zapisywane dane możesz zagnieżdżać w danych w plikach Parquet.
Więcej informacji można znaleźć w temacie Store.
Odczyt danych z plików Parquet
Dane z pliku Parquet można odczytywać tak jak z każdego innego pliku danych obsługiwanego przez Qlik Sense. Dotyczy to Menedżera danych, Edytora ładowania danych lub dodawania danych do nowej aplikacji.
Więcej informacji można znaleźć w temacie Ładowanie danych z plików.
Możesz także załadować dane z pliku Parquet w skrypcie ładowania danych za pomocą polecenia LOAD. Na przykład:
Więcej informacji można znaleźć w temacie Load.
Ładowanie danych z zagnieżdżonych plików Parquet
Jeśli plik Parquet zawiera zagnieżdżone dane, należy go załadować w wielu instrukcjach Load, z których każda określa, który podzestaw powinien zostać załadowany do każdej z tabel. Specyfikator Table is służy do sprawdzenia ścieżki do węzła grupy w schemacie, który ma zostać załadowany.
Możesz użyć specyfikatora Delimiter is, aby określić, jak powinny być łączone węzły. Instrukcja LOAD ładująca plik z zagnieżdżonymi danymi, które nie zawierają ogranicznika, wykorzystuje wartość określoną w zmiennej skryptu FieldNameDelimiter. Jeśli nie podano żadnego ogranicznika i nie ustawiono FieldNameDelimiter, domyślnym ogranicznikiem będzie '.'.
Ładowane są tylko węzły pasujące do ścieżki Table is.
Węzły danych są ładowane do pliku bez zagnieżdżania.
Węzły grup będą grupować pola w grupie, dodając ich nazwę do nazwy pola. Na przykład grupy z field1 i field2 są ładowane jako group.field1 i group.field2.
Węzły list wygenerują pola klucza używane do łączenia tabel. Na przykład %Key_group.list. Każda grupa lub węzeł danych na liście muszą zostać załadowane w osobnej instrukcji Load. Do listy nadrzędnej zostanie też dodane pole klucza.
Poniższe przykłady pokazują ten sam zagnieżdżony plik Parquet utworzony w przykładzie w Przechowywanie zagnieżdżonych danych w plikach Parquet, załadowany do aplikacji przy użyciu narzędzi Menedżer danych i Edytor ładowania danych (z domyślnym skryptem z kreatora Wybierz dane i skryptem niestandardowym).
Przykład: Menedżer danych
Jeśli załadujesz customer.parquet w narzędziu Menedżer danych i zastosujesz wszystkie zalecane asocjacje, otrzymasz następujący model danych:
Przykład: Edytor ładowania danych (Wybierz dane)
Jeśli załadujesz dane za pomocą kreatora Wybierz dane w narzędziu Edytor ładowania danych, otrzymasz następujący skrypt:
Model danych wygląda teraz następująco w narzędziu Przeglądarka modelu danych.
Przykład: Edytor ładowania danych (Niestandardowy skrypt ładowania)
Jeśli używasz niestandardowego skryptu ładowania, masz większą kontrolę nad sposobem ładowania pól i tabel z pliku customer.parquet. Poniższy skrypt ładowania ładuje tabele i pola z pliku company.parquet:
W rezultacie otrzymujemy następujący model danych, który jest identyczny z oryginalnym modelem danych, zanim dane zostały zapisane w pliku Parquet.
Ograniczenia
Pliki Parquet mają następujące ograniczenia:
-
Pliki Parquet, które zawierają pole znacznika czasu int96, mogą nie być ładowane poprawnie.
Int96 to przestarzały typ danych, który zawiera sygnaturę czasową bez informacji o strefie czasowej. Zostanie podjęta próba odczytania pola jako wartości w strefie czasowej UTC, ale ponieważ istnieją różne implementacje producentów, nie ma gwarancji powodzenia.
Sprawdź załadowane dane i w razie potrzeby dostosuj je do prawidłowej strefy czasowej, używając przesunięcia.