Jak najszybciej wysłać dane z on prem na Azure Storage account

Problem:

Wysyłasz dane z on prem na Azure Storage Account. Została podjęta decyzja, że użyjesz do tego Pythona i bibliotek azure.storage. Przeglądasz dokumentacje i zastanawiasz się, którą metodę wysyłania danych do Azure wybrać? Czy lepiej wybrać append_date czy upload_data? Czy te metody mają jakieś ograniczenia? Która będzie szybsza?

Rozwiązanie:

Użycie upload_data jest zazwyczaj szybsze, natomiast ma pewne ograniczenie. Wysyłając duże pliki możesz dostać Timeout. Ale wysyłanie danych tą metodą jest zdecydowanie szybsze. Możesz pokusić się o rozwiązanie, które próbuje zrobić upload_data a dopiero potem robi append, jeżeli upload się nie powiódł.

Ale może zacznijmy po początku.

Read More

Ładowanie danych z Databricks do Azure Synapse Analytics

Problem:

Zadanie zostało zdefiniowane przez managera w ten sposób:
– Dane z Databricks mają zostać przesłane na Azure Synapse
– Security utworzyło i otworzyło odpowiednie private endpointy.
– Dostałeś też namiary na service principala, którego wykorzystasz do zapisywania danych z Databricks na Azure Synapse.

Będziesz używał sparka, żeby od razu stworzył tabelę i dane. Będzie to szczególnie pomocne gdyż danych nie jest zbyt dużo. Nie powinno być żadnych problemów wydajnościowych.
Niestety pojawiają się problemy zupełnie innej natury. Przy próbie wstawienia danych dostajesz błąd:


„com.microsoft.sqlserver.jdbc.SQLServerException: The statement failed. Column 'drone_spec_key’ has a data type that cannot participate in a columnstore index.”

Rozwiązanie:

Spark wysyłał do Synapsa create i insert statement w tym samym czasie. Błąd wynikał z tego, że Synapse przy próbie stworzenia tabeli jednocześnie próbuje stworzyć custered index. Niestety ograniczenie, które posiada to brak możliwości stworzenia indeksu na kolumnach, gdzie typ danych zdefiniowany jest jako: VARCHAR(max), NVARCAHR(MAX) a to się dzieje, gdy spark próbuje stworzyć tabelę.
Jako rozwiązanie zastosowano:
1. Najpierw została tworzona tabela po stronie Azure Synapse Analytics
2. Dopiero później zostały wstawione do niej dane

Szczegóły kodu oraz alternatywne, dające więcej możliwości, rozwiązanie poniżej.

Read More

Python i Synapse: połączenie przy użyciu service principala

Problem:

Masz bazę danych Synapse dostępną w usłudze Azure. Posiadasz uprawnienia, żeby połączyć się do tej bazy przy użyciu service principala. To połączenie musisz wykonać w Pythonie. W jaki sposób połączyć się posiadając dane service principala do usługi Synapse?

Rozwiązanie:

Użyjemy .env do przechowywania zmienny środowiskowych. Użyjemy azure.identity żeby połączyć się z usługą i wygenerować token dostępowy. Następnie posiadając token utworzymy połączenie pyodbc.

Zawiłe? Teraz trochę bardziej szczegółowo.

Read More

Not able to load Function App

Problem:

Rozwijasz projekt w Function App. Dostałeś do napisania funkcję w C#. Funkcja została napisana, przetestowana i wdrożona na produkcję. Jak to w życiu, pojawiają się zmiany wymagań do funkcji, które też rozwijasz wdrażasz i zamiast oczekiwanych zmian widzisz błąd:
„We are not able to load some functions in the list due to errors”.
Gdy oglądasz szczegóły błędu widzisz:
„The operation timed out and could not be completed”.
W kodzie praktycznie nic się nie zmieniło a aplikacji nie da się uruchomić i używać.
Do zrobienia builda i deploymentu używałem Azure Devops.

Rozwiązanie:

Jeżeli szukasz szybkiego rozwiązania problemu to zaraz Ci go podam. W moim przypadku problemem nie był kod, który zmieniłem, bo zmiana była wręcz kosmetyczna: dodanie jednego loggera do obsługi błędów.
Deployment poprzedniej wersji także sprawiał, że aplikacja znowu zaczynała działać.
Co w takim razie było źle? W Dev Ops pipelines wystarczyło ustawić, żeby czyścił katalog deploymentu.
Niejasne? Już tłumaczę.

Read More

Databricks: Jak opublikować report w Power BI używając Pythona?

Problem:
Dostawca zewnętrzny umieszcza na Azure Storage Account raport w Power BI. Masz zadanie umieścić ten raport w serwisie Power BI. Będziesz to robił cyklicznie, więc chcesz uprościć sobie pracę. W jaki sposób to zrobisz?

Co masz dostępne?
Narzędzie, która masz dostępne to Databricks i całe dobrodziejstwo jakie z tym się wiąże.

Rozwiązanie:
Skrypt w Pythonie wykorzystujący Power BI Rest API, Key Vault i Azure Identity do automatycznego importu raportu w pbix.

Potrzebne oczywistości:
1. Storage Account – tam przechowywany będzie plik pbix.
2. Service Principal – do połączenia Databricks – Power BI. Pamiętaj o ustawieniu odpowiedniej roli.
3. Biblioteka Azure Identity – do autentykacji
4. Key Vault – do przechowywania sekretów. To nie jest „must have” ale to jest dobra praktyka.

Read More

Jak połączyć się z Databricks do SQL Servera?

Jak połączyć się z Databricks to Azure SQL Server?

Problem:

Wykonanie połączenia między Databricks i bazą danych SQL Servera w chmurze Azure.

Rozwiązanie

Co będzie potrzebne?

1. Databricks 😉
2. Azure SQL Server utworzony w Azure Portal
3. Otwarte połączenia sieciowe – Databricks i SQL Server mają mieć możliwość komunikacji. Jeżeli masz problemy na tym poziomie, to niestety nie będzie przedmiotem tego wpisu.
4. Service principal – żeby połączyć się z Databricks do SQL Servera w bezpieczny i prosty sposób
5. Key Vault – do przechowywania sekretów
6. Biblioteki Python – biblioteka do wykonania połączenia JDBC i do używania modułu Azure Identity

Wszystko gotowe? Zaczynamy!

Read More

Zalety chmury w rozwiązaniach data

Zalety chmury w rozwiązaniach data

Pracowałeś już z chmurą przy projekcie hurtowni danych albo data lake?

Masz już zapewne wyrobione zdanie: Co Ci się podoba, a co jest chwytem marketingowym, co wymaga dopracowania, gdzie czekasz na kolejną wersję, gdzie przydałoby się lepsze API zamiast interfejsu graficznego albo odwrotnie, bardziej wolałbyś interfejs graficzny zamiast pisania kodu.

Zrozumienie chmury to nie jest proces do ogarnięcia w czasie przerwy na kawę.

Ale jeżeli masz tylko tyle czasu, wtedy należy mieć nadzieję, że masz bogatego klienta.

Dla bogatego klienta, przesuwasz suwak maksymalnie w prawo i już nigdy nie martwisz się o wydajność. Tacy klienci, to niestety miejska legenda.

Większość klientów patrzy uważnie, ile chmura kosztuje i czy to się opłaca.

Jeżeli szukasz argumentów, jak rozmawiać o chmurze, zapraszam.

Dzisiaj o tej jasnej stronie chmury, na przykładzie Azure.

Read More

Zwinna hurtownia danych

zwinna hurtownia danych

Przenosząc rozwiązanie hurtowni danych do chmury, masz gotowy ból głowy.

Jak się odnaleźć w nowym środowisku? Jak dostarczyć tam dane? Jaką usługę wybrać? Jak przechowywać dane? Jak przetwarzać dane? Jak ustawić model dostępu do danych?

I jeszcze jedno wielkie pytanie:

Jak nie zbankrutować?

W niektórych przypadkach rozwiązaniem jest zwinna hurtownia danych.

Zwinna hurtownia danych to taka, która nie opiera się o bazę danych. Dane przechowuje w systemie plików, może to być na przykład Data Lake w chmurze (np. Azure Data Lake Gen 2 [nazewnictwo aktualne na kwiecień 2022]).

Zdecydowaną zaletą takiego rozwiązania jest niska cena.

Jak określić, czy taka hurtownia będzie dobra właśnie dla Ciebie?

Read More