Spark 3.5.5 – instalacja w punktach

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;

By Rafał Kraik in Python

Spark – tworzenie środowiska

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
By Rafał Kraik in SQL

Spark: Przykład prostego, małego data frame

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

By Rafał Kraik in Python

Spark: Błąd po wykonaniu df.show()

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

By Rafał Kraik in Python

Dodanie programu do ścieżki w ograniczonym środowisku

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
By Rafał Kraik in Helpdesk

Linux: instalacja databricks-cli

2025-01-29

Instalując databricks cli możesz użyć prostej metody przez pip, ale to pułapka….

W ten sposób zainstalujesz starą wersję, która nie jest zgodna z najnowszym databricks i ma znacznie okrojone możliwości. Zamiast tego uruchom

curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh

Po instalacji może być wymagana modyfikacja ścieżki:

export PATH=$PATH:/root/bin

to oczywiście krok opcjonalny.

To niestety nie koniec instalacji. Databricks-cli wymaga konfiguracji:

databricks configure

Program zapyta o URL workspace oraz o token PAT

Potem można się już bawić databricks:

databricks secrets list-scopes

Gotowe!

By Rafał Kraik in Databricks

Databricks: Listowanie secret-scope i secrets

2025-01-29

Secret-scope to miejsce na przechowywanie secretów. Zakładając, że masz już zainstalowane databricks-cli zrobisz to poleceniem

databricks secrets list-scopes

Polecenie zwróci nazwy secret-scopów. Można ich użyć do wylistowania sekretów w scopie

databricks secrets list-secrets MYSCOPE

MYSCOPE należy oczywiście zamienić na właściwą nazwę scope

Teraz wynikiem jest wykaz secretów. Gdy chcesz pobrać wartość secretu uruchom

databricks secrets get-secret MYSCOPE SECRETNAME

Gdzie SECRETNAME to oczywiście nazwa secretu

Ewentualna zmiana secretu to polecenie

databricks secrets put-secret MYSCOPE SECRETNAME

a usuniecie to

databricks secrets delete-secret MYSCOPE SECRETNAME

By Rafał Kraik in Databricks