Eksplorowanie magazynu plików
Możliwość przechowywania danych w plikach jest podstawowym elementem dowolnego systemu obliczeniowego. Pliki mogą być przechowywane w lokalnych systemach plików na dysku twardym komputera osobistego i na nośnikach wymiennych, takich jak dyski USB; ale w większości organizacji ważne pliki danych są przechowywane centralnie w jakimś udostępnionym systemie magazynu plików. Coraz częściej centralna lokalizacja magazynu jest hostowana w chmurze, umożliwiając ekonomiczne, bezpieczne i niezawodne przechowywanie dużych ilości danych.
Określony format pliku używany do przechowywania danych zależy od wielu czynników, w tym:
- Typ przechowywanych danych (ustrukturyzowany, częściowo ustrukturyzowany lub bez struktury).
- Aplikacje i usługi, które będą musiały odczytywać, zapisywać i przetwarzać dane.
- Potrzeba odczytu plików danych przez ludzi lub zoptymalizowana pod kątem wydajnego przechowywania i przetwarzania.
Poniżej omówiono niektóre typowe formaty plików.
Rozdzielane pliki tekstowe
Dane są często przechowywane w formacie zwykłego tekstu z określonymi ogranicznikami pól i terminatorami wierszy. Najbardziej typowym formatem rozdzielanych danych jest wartości rozdzielane przecinkami (CSV), w których pola są rozdzielane przecinkami, a wiersze są przerywane przez znak powrotu karetki /nowego wiersza. Opcjonalnie pierwszy wiersz może zawierać nazwy pól. Inne typowe formaty obejmują wartości rozdzielane tabulatorami (TSV) i rozdzielane spacjami (w których karty lub spacje są używane do oddzielania pól) i dane o stałej szerokości, w których każde pole jest przydzielane stałą liczbę znaków. Tekst rozdzielany jest dobrym wyborem dla danych strukturalnych, które muszą być dostępne przez szeroką gamę aplikacji i usług w formacie czytelnym dla człowieka.
W poniższym przykładzie przedstawiono dane klientów w formacie rozdzielanym przecinkami:
FirstName,LastName,Email
Joe,Jones,joe@litware.com
Samir,Nadoy,samir@northwind.com
JavaScript Object Notation (JSON)
JSON to wszechobecny format, w którym schemat dokumentu hierarchicznego służy do definiowania jednostek danych (obiektów), które mają wiele atrybutów. Każdy atrybut może być obiektem (lub kolekcją obiektów); tworzenie formatu JSON jako elastycznego formatu, który jest odpowiedni zarówno dla danych strukturalnych, jak i częściowo ustrukturyzowanych.
W poniższym przykładzie przedstawiono dokument JSON zawierający kolekcję klientów. Każdy klient ma trzy atrybuty (firstName, lastName i contact), a atrybut kontaktu zawiera kolekcję obiektów reprezentujących co najmniej jedną metodę kontaktu (wiadomość e-mail lub telefon). Należy pamiętać, że obiekty są ujęte w nawiasy klamrowe ({..}), a kolekcje są ujęte w nawiasy kwadratowe ([..]). Atrybuty są reprezentowane przez nazwy : pary wartości i oddzielone przecinkami (,).
{
"customers":
[
{
"firstName": "Joe",
"lastName": "Jones",
"contact":
[
{
"type": "home",
"number": "555 123-1234"
},
{
"type": "email",
"address": "joe@litware.com"
}
]
},
{
"firstName": "Samir",
"lastName": "Nadoy",
"contact":
[
{
"type": "email",
"address": "samir@northwind.com"
}
]
}
]
}
Extensible Markup Language (XML)
XML to format danych czytelny dla człowieka, który był popularny w 1990 i 2000 roku. Jest on w dużej mierze zastępowany przez mniej pełny format JSON, ale nadal istnieją pewne systemy, które używają kodu XML do reprezentowania danych. Kod XML używa tagów ujętych w nawiasy kątowe (<.). />) do zdefiniowania elementów i atrybutów, jak pokazano w tym przykładzie:
<Customers>
<Customer name="Joe" lastName="Jones">
<ContactDetails>
<Contact type="home" number="555 123-1234"/>
<Contact type="email" address="joe@litware.com"/>
</ContactDetails>
</Customer>
<Customer name="Samir" lastName="Nadoy">
<ContactDetails>
<Contact type="email" address="samir@northwind.com"/>
</ContactDetails>
</Customer>
</Customers>
Binarny duży obiekt (BLOB)
Ostatecznie wszystkie pliki są przechowywane jako dane binarne (1 i 0), ale w opisanych powyżej formatach czytelnych dla człowieka bajty danych binarnych są mapowane na znaki drukowalne (zazwyczaj za pomocą schematu kodowania znaków, takiego jak ASCII lub Unicode). Jednak niektóre formaty plików, szczególnie w przypadku danych bez struktury, przechowują dane jako nieprzetworzone dane binarne, które muszą być interpretowane przez aplikacje i renderowane. Typowe typy danych przechowywanych jako pliki binarne obejmują obrazy, wideo, dźwięk i dokumenty specyficzne dla aplikacji.
Podczas pracy z takimi danymi specjaliści ds. danych często nazywają pliki danych plikami BLOB (obiekty binarne duże).
Zoptymalizowane formaty plików
Formaty czytelne dla danych strukturalnych i częściowo ustrukturyzowanych mogą być przydatne, ale zwykle nie są zoptymalizowane pod kątem miejsca do magazynowania ani przetwarzania. W czasie opracowano niektóre wyspecjalizowane formaty plików, które umożliwiają kompresję, indeksowanie i wydajne przechowywanie i przetwarzanie.
Niektóre typowe zoptymalizowane formaty plików mogą obejmować Avro, ORC i Parquet:
Avro to format oparty na wierszu, który został utworzony przez firmę Apache. Każdy rekord zawiera nagłówek, który opisuje strukturę danych w danym rekordzie. Taki nagłówek jest przechowywany w formacie JSON, a dane są przechowywane w postaci danych binarnych. Aplikacja wykorzystuje informacje zawarte w nagłówku do analizy danych binarnych i wyodrębniania zawartych w nich pól. Avro to dobry format kompresowania danych i minimalizowania wymagań dotyczących magazynowania i przepustowości sieci.
ORC (Optimized Row Columnar) to format, który porządkuje dane w kolumnach, zamiast w wierszach. Został opracowany przez Firmę HortonWorks w celu optymalizacji operacji odczytu i zapisu w usłudze Apache Hive (Hive to system magazynu danych, który obsługuje szybkie podsumowywanie i wykonywanie zapytań dotyczących dużych zestawów danych). Plik ORC zawiera pasy danych. Każdy pas zawiera dane dla kolumny lub zestawu kolumn. Pas danych zawiera indeks wierszy, dane dla każdego wiersza i stopkę, która przechowuje informacje statystyczne (licznik, suma, wartość maksymalna, wartość minimalna itd.) dla każdej kolumny.
Parquet to kolejny format danych kolumnowych. Został utworzony przez cloudera i X. Plik Parquet zawiera grupy wierszy. Dane z każdej kolumny są przechowywane razem w tej samej grupie wierszy. Każda grupa wierszy zawiera jeden lub więcej fragmentów danych. Parquet zawiera metadane opisujące zestaw wierszy znajdujących się w każdym fragmencie danych. Aplikacja może używać tych metadanych, aby szybko zlokalizować właściwy fragment danych dla danego zestawu wierszy i pobrać dane z określonych kolumn dla tych wierszy. Parquet specjalizuje się w wydajnym przechowywaniu i przetwarzaniu zagnieżdżonych typów danych. Obsługuje bardzo wydajne schematy kompresji i kodowania.