Instalando o Apache Spark no MacBook Pro M3
Voltei a usar Macos apos alguns anos e confesso que ainda estou desbravando algumas possibilidades, e uma delas è poder rodar o Apache…
Voltei a usar Macos apos alguns anos e confesso que ainda estou desbravando algumas possibilidades, e uma delas è poder rodar o Apache Spark nele. Ai voce pergunta, nao da para fazer isso com Docker? Sim, porem hoje vamos nos aventurar. Vem comigo, curte a viagem.
Requisitos:
- Homebrew instalado https://formulae.brew.sh/
- Warp Terminal https://www.warp.dev/ (Com o terminal padrao tambem funciona)
- Intellij IDEA https://www.jetbrains.com/idea/ (Qualquer versao funciona)
Primeiro vamos instalar o nosso querido Java
brew install openjdk
Por hora nao vamos nos preucupar com a versao do java, Mas a versao do spark do repositorio do brew esta com a versao 17. No brew nao è possivel definir a versao, a versao è atualizada pelos desenvolvedores, olhando o codigo fonte github, temos isso.
class ApacheSpark < Formula
desc "Engine for large-scale data processing"
homepage "https://spark.apache.org/"
url "https://dlcdn.apache.org/spark/spark-3.5.1/spark-3.5.1-bin-hadoop3.tgz"
mirror "https://archive.apache.org/dist/spark/spark-3.5.1/spark-3.5.1-bin-hadoop3.tgz"
version "3.5.1"
sha256 "5df15f8027067c060fe47ebd351a1431a61dbecc9c28b8dd29e2c6e1935c23eb"
license "Apache-2.0"
head "https://github.com/apache/spark.git", branch: "master"
# The download page creates file links using JavaScript, so we identify
# versions within the related JS file.
livecheck do
url "https://spark.apache.org/js/downloads.js"
regex(/addRelease\(.*?["']v?(\d+(?:\.\d+)+)["']/i)
end
bottle do
sha256 cellar: :any_skip_relocation, all: "79ec442b9aaf93f302007436b8c5194b67e2cdfbcf57f89a7cffb3bf90a3cf54"
end
depends_on "openjdk@17"
def install
# Rename beeline to distinguish it from hive's beeline
mv "bin/beeline", "bin/spark-beeline"
rm_f Dir["bin/*.cmd"]
libexec.install Dir["*"]
bin.install Dir[libexec/"bin/*"]
bin.env_script_all_files(libexec/"bin", JAVA_HOME: Language::Java.overridable_java_home_env("17")[:JAVA_HOME])
end
test do
assert_match "Long = 1000",
pipe_output(bin/"spark-shell --conf spark.driver.bindAddress=127.0.0.1",
"sc.parallelize(1 to 1000).count()")
assert_match "String = abi/trivial",
pipe_output(bin/"spark-shell --conf spark.driver.bindAddress=127.0.0.1",
"jdk.incubator.foreign.FunctionDescriptor.TRIVIAL_ATTRIBUTE_NAME")
end
end
A versao do Spark que vamos utilizar è a 3.5.1. Instale o spark usando comando abaixo.
brew install apache-spark
Agora que instalamos, vamos as definicoes de variavies. No meu caso estou usando o ZSH. Logo o comando fica assim. nano ~/.zshrc
export JAVA_HOME=$(/usr/libexec/java_home)
export SPARK_HOME="/opt/homebrew/Cellar/apache-spark/3.5.1/libexec"
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=python3
Depois de adicionado, atualize as variaveis globais usando o comando
source ~/.zshrc
Se digitarmos pyspark no terminal teremos isso.
Legal, mas nao è assim que queremos. Vamos fazer funcionar dentro da nossa IDE. Abra o Intellij IDEA e va na opcao de criar um novo projeto.
Na janela abaixo na esquerda, selecione PySpark, escolha o tipo de ENV que mais lhe convem, vou usar o venv.
Aqui temos uma aplicacao default, vamos instalar o pacote do PySpark via PiPY.
Click em Project Structure
Agora em Packages
Do lado esquerdo acima, tem um icone do +, click nele
Digite pyspark, selecione a mesma versao do que foi instalado pelo homebrew 3.5.1
Apos instalar, execute o codigo do pyspark
prontinho, spark 3.5.1 funcionando perfeitamente.
Esse tutorial funciona para qualquer versao da familia M(1,2,3, Pro e Max)