2025-03-27
Niektóre zasoby w Azure, jak np. managed identity mogą mieć kilka identyfikatorów, całkiem jak my: nr PESEL, numer dowodu, numer paszportu. Każdy z tych ID może być wykorzystywany tylko w określonej sytuacji.
Oto główne różnice między id
, principal_id
i client_id
w Azure dla managed identity:
- id:
- Jest to ogólny identyfikator każdego zasobu w Azure. Może to być storage account, dysk, baza danych, czy właśnie managed identity, np.:
azurerm_user_assigned_identity.example.id
- principal_id:
- Jest to identyfikator przypisanej tożsamości użytkownika (Managed Identity) lub aplikacji (Service Principal) w EntraID. Używamy go np. do nadawania uprawnień, np.:
azurerm_user_assigned_identity.example.principal_id
- client_id:
- To specyficzny przypadek, bo jest to identyfikator aplikacji zarejestrowanej w Azure EntraID. Używamy go do konfiguracji mechanizmów uwierzytelniania – ale uwaga, tylko w takich jak OAuth, czy np. do uzyskiwania tokenów dostępu:
azurerm_user_assigned_identity.example.client_id
2025-03-02
Zainstaluj Java JDK w wersji 17, np. do katalogu c:\spark\java
Zainstaluj WinUtils w wersji 3.3.6 (jeśli używasz Windows 11) np do katalogu c:\spark\hadoop
Zainstaluj Spark 3.5.5 z Hadoop 3.3, np. do katalogu c:\spark\spark
Zainstaluj Python 3.11, np. do katalogu c:\spark\python. Wykonaj dodatkową kopię pliku python.exe i nazwij ją python3.exe
Zdefiniuj zmienne środowiskowe np. dla użytkownika:
HADOOP_HOME –> c:\spark\hadoop
JAVA_HOME –> C:\spark\java
SPARK_HOME –> C:\spark\spark
PATH –> C:\spark\python\Scripts\;C:\spark\python\;%JAVA_HOME%\bin;%SPARK_HOME%\bin;%HADOOP_HOME%\bin;%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
2025-03-02
Zakładając, że masz już zainstalowany Apache Spark, a teraz chcesz zacząć na nim własne eksperymenty, to pewnie przydałoby się jakieś „lekkie” środowisko – miminum z działającym Jupyter Notebook. Oto moja propozycja
W wybranym katalogu utwórz środowisko wirtualne
python -m venv venv
Aktywuj je
.\venv\scripts\activate
Zainstaluj moduły
pip install findspark
pip install pyspark
pip install jupyter
Uruchom Jupyter Notebook
jupyter notebook
2025-03-02
Wykonując testy, warto mieć pod ręką coś małego, co powinno zawsze zadziałać. Oto moja propozycja:
import findspark
findspark.init()
findspark.find()
from pyspark.sql import SparkSession
# Create a SparkSession object
spark = SparkSession.builder.appName("CreateDataFrame").getOrCreate()
# Use the SparkSession object to create a DataFrame
df_day_of_week = spark.createDataFrame([(0, "Sunday"), (1, "Monday"),
(2, "Tuesday"), (3, "Wednesday"),
(4, "Thursday"), (5, "Friday"),
(6, "Saturday")],
["day_of_week_num", "day_of_week"])
# Show the DataFrame
df_day_of_week.show()
Snippet pochodzi z https://stackoverflow.com/questions/76743484/configuration-of-pyspark-py4jjavaerror
2025-03-02
W świeżej instalacji Apache Spark po wykonaniu polecenia df.show() dla prostego data frame pojawiał się bład:
Py4JJavaError: An error occurred while calling o160.showString.
Instalacja nowa, robiona zgodnie z 1000 instrukcji dostępnych na necie.
Bez owijania w bawełnę – chodziło o wersje aplikacji. Tak więc krótko:
Instalacja dotyczy Spark 3.5.5 (FEB 27 2025) z wbudowanym Apache Hadoop 3.3
Java (JDK) – najnowsza jaką można wybrać to 17, bo na tej stronie https://spark.apache.org/docs/latest/index.html piszą, że Spark runs on Java 8/11/17,
WinUtils.exe – dopasowany numerem wesji do wersji Hadoop pobrany stąd: https://github.com/cdarlint/winutils
Python – piszą w dokumentacji, że wersja to ma być 3.8 i wyższe, ale uwaga… W momencie publikowania Sparka, na świecie nie było jeszcze Pythona 3.12. Dlatego nie wybieraj 3.12. Zostań maksymalnie przy 3.11. To ważne. Nawet jak instalacja sie uda, to potem można się spodziewać pułapek już podczas uruchamiania programów.
Co więcej – instalując wszystkie wymienione powyżej komponenty, zainstaluj je do katalogu, który w nazwie całej ścieżki nie ma spacji, ani znaków narodowych.
I co najśmieszniejsze – w świecie Linux/McOS, kiedy chcesz uruchomić pythona w wersji 3 piszesz python3. Ta reguła nie działa w świecie WIndows. Dlatego przejdź do katalogu z instalacją pythona i skopiuj plik python.exe zamieniając mu nazwę na python3.exe.
Pr
2025-02-23
Pracujesz sobie na systemie z bardzo okrojonymi uprawnieniami. Jesteś prawie że zwykłym użytkownikiem, zapomnij o instalacji programu tak jak należy. Z drugiej jednak strony na systemie jest zainstalowany stary program (w tym przypadku terraform), a ty chcesz używać nowszej wersji. Co zrobić?
Opcja 1
- Pobierz nową wersję programu i zapisz ją gdzie chcesz
- Uruchamiając terraforma podawaj pełną ścieżkę dostępu do tego programu (mało wygodne)
Opcja 2
- Utwórz katalog na programy, które chcesz „podmienić”
- Pobierz nową wersję programu i zapisz ją do tego katalogu
- Zmodyfikuj zmienną PATH użytkownika, tak aby wskazywała również na ten katalog
- Napisz skrypt, który będzie wywoływać właściwą wersję programu podając jego pełną ścieżkę. Zapisz skrypt w pliku o przyjemnej, krótkiej nazwie, np. tf.bat
@echo off
C:\Users\xxx\Desktop\bin\terraform.exe %*
Ten skrypt najpierw wyłącza wyświetlanie na ekran informacji o poszczególnych uruchamianych komendach, a potem wywołuje tę właściwą wersję terraforma przekazując do niego pełny zestaw argumentów %*
Dzięki temu można teraz uruchamiać najnowszą wersję programu używając wybranej krótkiej nazwy skryptu i przekazując do niego dowolne argumenty:
tf --version
2025-01-22
Log Analytics Workspace to taki „Azurowy śmietniczek na logi”. Z jednej strony koncepcja zapisywania wszystkich logów w jednym miejscu brzmi atrakcyjnie, ale korzystanie z tagiego zbioru… delikatnie mówiąc nie jest zbyt wygodne.
Ogólnie rzecz biorąc, LogAnalytics przechowuje tabele z danymi i to już jest w sumie krok we właściwą stronę, bo jednak nasze logi są rozrzucane między wiele tabel. Tabele te powstają po podłączeniu zasobów określonych typów. Masz np. SQL Server, to pojawią sie tabele pozwalające na śledzenie specyficznych zdarzeń związanych z określonym zasobem.
Ponieważ jest tam aż tyle rzeczy, to fajnie by było sprawdzić, np. jakie wartości występują w określonej kolumnie. Zrobisz to prostym poleceniem:
AzureDiagnostics
| summarize by operationname
| order by operationname asc