Vol.09 M1款 MacBookPro 搭建 JupyterLab 数据分析环境

Python 用于数据分析的优势我就不多赘述,虽然当前基本不写 Python,但是我经常需要阅读 Python 代码,看别人写的数据处理逻辑,所以开始进一步学习 Pyspark 相关的知识。Jupyter 应该是学习 Python 数据分析最佳的工具了,趁着刚刚安装完,记录下自己环境配置跟常用的工具。

miniconda 安装

提到 Python 数据分析大家一般推荐 Anaconda,miniconda 属于轻量级的包管理工具,我更推荐使用。在官网现在自己匹配的平台,下载安装即可,也可以选择 homebrew 安装。

https://docs.conda.io/en/latest/miniconda.html

Jupyter Lab 安装

miniconda 安装完成之后,测试 Python 能正常进入,开始 安装 Jupyter 及其拓展插件。

# 本体
pip install jupyterlab
# 格式化插件
pip install jupyterlab_code_formatter
# 格式化检测插件
pip install black isort
# 目录树功能
pip install jupyterlab-unfold
# 中文支持
pip install jupyterlab-language-pack-zh-CN
# GitHub 仓库支持
pip install jupyterlab-github

也需要注意下修改登陆密码,跟设置后台启动。

# 进入 Python 交互命令行
from notebook.auth import passwd
# 设置密码,第二次输入密码之后会有一串秘钥,记下来后面配置文件需要用到
passwd()

修改配置文件

# 终端命令行输入
jupyter lab --generate-config

# Out 
/Users/jface/.jupyter/jupyter_lab_config.py

# 上面文件增加以下 3 行配置,秘钥填入上面设置密码获取到秘钥
c.ServerApp.allow_root = True
c.ExtensionApp.open_browser = False
c.ServerApp.password = '秘钥'

设置后台启动

nohup jupyter lab --allow-root > jupyterlab.log 2>&1 &
# & 让命令后台运行,并把标准输出 写入jupyterlab.log中。
# nohup 表示no hang up ,就是不挂起,这个命令执行后即使终端退出,jupyter 也不会停止运行。

Spark 安装

Spark 直接使用 homebrew 安装。

# 安装 spark
brew install apache-spark
# 设置环境变量,如果是 zsh 编辑文件 .zshrc,写入安装路径
export SPARK_HOME=/opt/homebrew/Cellar/apache-spark/3.3.1
export PYTHONPATH=$SPARK_HOME/libexec/python:$SPARK_HOME/libexec/python/build:$PYTHONPATH

注意如果以下执行文件入口没有权限,需要给他们给到权限

chmod 755 -R /opt/homebrew/Cellar/apache-spark/3.3.1/bin
chomd 755 -R /opt/homebrew/Cellar/apache-spark/3.3.1/libexec/bin

Pyspark 入门测试

安装必要的 spark 相关第三方包。

pip install findspark 
pip install pyspark

实际代码测试

# 载入环境变量,注意 Spark 的执行环境路径,可能不同,下面两个都尝试下
#SPARK_HOME="/opt/homebrew/Cellar/apache-spark/3.3.1/bin"
SPARK_HOME="/opt/homebrew/Cellar/apache-spark/3.3.1/libexec/"
import findspark
findspark.init(SPARK_HOME)
print('ok')

#SparkSQL的许多功能封装在SparkSession的方法接口中
import pyspark 
from pyspark.sql import SparkSession
spark = SparkSession.builder \
    .master("local") \
    .appName("Word Count") \
    .config("spark.some.config.option", "some-value") \
    .getOrCreate()
sc = spark.sparkContext
print('ok')

#将RDD转换成DataFrame
rdd = sc.parallelize([("LiLei",15,88),("HanMeiMei",16,90),("DaChui",17,60)])
df = rdd.toDF(["name","age","score"])
df.show()
df.printSchema()

#Out 输出
+---------+---+-----+
|     name|age|score|
+---------+---+-----+
|    LiLei| 15|   88|
|HanMeiMei| 16|   90|
|   DaChui| 17|   60|
+---------+---+-----+

root
 |-- name: string (nullable = true)
 |-- age: long (nullable = true)
 |-- score: long (nullable = true)

最终效果

最终效果

数据分析推荐资料

https://www.howie6879.cn/post/2021/26_jupyterlabv2_tutorial-/

https://www.jianshu.com/p/872648f7cc58

https://github.com/wesm/pydata-book

https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version


Vol.09 M1款 MacBookPro 搭建 JupyterLab 数据分析环境
https://jface001.github.io/2023/02/05/Vol09-M1款MacBookPro搭建JupyterLab数据分析环境/
作者
惊羽
发布于
2023年2月5日
许可协议