使用 Docker 设置 PySpark Notebook

使用 Docker 设置 PySpark Notebook

第 1 步:拉取 Docker 镜像

首先拉取jupyter/all-spark-notebook包含 Spark 3.5.0 的镜像。

docker pull jupyter/all-spark-notebook:spark-3.5.0

第 2 步:设置您的工作区

在运行 Docker 映像之前,我们需要设置一个用于存储 Spark 数据的目录。

创建一个sparkdata在您的工作空间中命名的目录。请记住,您需要在下一步中调整路径以匹配您的系统设置。在此目录中您可以存储任何 CSV 文件。

我们从https://www.kaggle.com/datasets/lava18/google-play-store-apps中下载 CSV 文件(为了方便起见,在下面共享)。Googleplay 商店用户评论googleplaystore_user_reviews.csv

7MBicon-default.png?t=N7T8https://cdn.getmidnight.com/171293841d3fdd4af2e12426ce202ac9/files/2023/09/googleplaystore_user_reviews.csv?ref=datascience.fm
第 3 步:运行 Docker 镜像

现在,让我们运行 Docker 映像并将sparkdata目录映射到容器。

替换/Users/datasciencefm/workspace/sparkdata为您的目录的路径sparkdata

docker run -d -P --name notebook -v /Users/datasciencefm/workspace/sparkdata:/sparkdata  jupyter/all-spark-notebook:spark-3.5.0

好的,以下是您提供的命令的中文解释:

docker run: 此命令用于运行 Docker 镜像。

-d: 此标志指示 Docker 在分离模式下运行容器,这意味着它将在后台运行,您不会在终端中看到其输出。

-P: 此标志指示 Docker 将容器的所有公开端口发布到主机上的随机端口。这允许您从 Web 浏览器访问 Jupyter Notebook 界面。

--name notebook: 此选项为容器分配名称“notebook”。这对于稍后管理和引用容器很有用。

-v /Users/datasciencefm/workspace/sparkdata:/sparkdata: 此选项将主机上的本地目录 /Users/datasciencefm/workspace/sparkdata 挂载到容器内的 /sparkdata 目录。这允许您在主机和容器之间共享数据。

jupyter/all-spark-notebook:spark-3.5.0: 这指定要使用的 Docker 镜像。在此情况下,镜像是 jupyter/all-spark-notebook,标签为 spark-3.5.0。该镜像提供了一个预安装了 Apache Spark 3.5.0 版本的 Jupyter Notebook 环境。

总体而言,此命令将:

  1. 在后台启动名为“notebook”的分离式 Docker 容器。
  2. 使用 jupyter/all-spark-notebook:spark-3.5.0 镜像,该镜像提供了一个带有 Apache Spark 的 Jupyter Notebook 环境。
  3. 将您的本地目录 /Users/datasciencefm/workspace/sparkdata 挂载到容器内的 /sparkdata 目录以进行数据共享。
  4. 将容器的所有公开端口发布到您的主机上的随机端口,允许您通过 Web 浏览器访问 Jupyter Notebook 界面。

要访问 Jupyter Notebook 界面:

  1. 找到 Docker 为容器映射的端口。您可以通过运行以下命令执行此操作:
docker port notebook

这将输出类似以下内容:

8888:8888

在此示例中,您的主机上的端口 8888 映射到容器内的端口 8888。

  1. 打开 Web 浏览器并导航到以下 URL,将 8888 替换为您在上一步骤中获得的实际端口号:
http://localhost:8888
步骤 4:检索端口映射

要访问 Jupyter Notebook,我们需要知道哪个主机端口已映射到容器的 port 8888。执行以下命令:

docker port notebook 8888

对于我们来说,输出是0.0.0.0:55002.

第 5 步:获取笔记本令牌

出于安全原因,Jupyter Notebook 受令牌保护。让我们获取这个令牌:

docker logs --tail 3 notebook

您的输出应类似于以下 URL:http://127.0.0.1:8888/lab?token=YOUR_TOKEN_HERE

第 6 步:访问 Jupyter Notebook

将 URL 中的默认端口替换为您在步骤 4 中标识的端口。在我们的示例中,更新后的 URL 为:

http://127.0.0.1:55002/lab?token=82f8bf90a86103ca2e029241df7a59200c1aff788e1c2fbb

只需将此 URL 粘贴到浏览器中即可打开 Jupyter Notebook。

第 7 步:深入了解 PySpark!

现在,是时候开始使用 PySpark 了。启动一个新的Python笔记本并输入以下代码:

from pyspark.sql import SparkSession# Spark session & context
spark = SparkSession.builder.master("local").getOrCreate()
sc = spark.sparkContext# Reading CSV file from /sparkdata folder
csv_path = "/sparkdata/googleplaystore_user_reviews.csv"  # This will read any CSV file in the /sparkdata folder
df = spark.read.csv(csv_path, header=True, inferSchema=True)  # Assuming the CSV has a header# Show the DataFrame
df.show()# If you want to perform any action on DataFrame
# For instance, to get the count of rows:
print("Number of rows:", df.count())

这将初始化 Spark 会话,从目录中读取 CSV 文件/sparkdata,并显示其内容。

也可以用下面命令,不过退出命令窗口后,容器讲被删除。

docker run -it --rm  -v D:\spdata:/home/jovyan/work -p 8888:8888 jupyter/all-spark-notebook

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源大数据集群部署(十四)Ranger集成Hbase

作者:櫰木 在hd1.dtstack.com主机上执行 在hmaster和back master上进行安装和执行 解压ranger-2.3.0-hbase-plugin [roothd1.dtstack.com ranger-plugin]# cd /root/bigdata [roothd1.dtstack.com ranger-plugin]# tar -zvxf ranger-2.3.0-hbase-plugin -C /opt配…

Unity编辑器功能Inspector快捷自动填充数据和可视化调试

我们有时候可能需要在面板增加一些引用,可能添加脚本后要手动拖动,这样如果有大量的脚本拖动也是不小的工作量 实例 例如:我的脚本需要添加一个Bone的列表,一个个拖动很麻烦。 实现脚本 我们可以用这样的脚本来实现。 public…

小程序API能力集成指南——画布API汇总(一)

RJS Canvas Canvas Canvas 实例, 在 RJS 中可通过 getCanvasById 获取。 属性 number width:画布宽度 number height:画布高度 方法 如下。 1、getContext Canvas.getContext(string contextType) RenderingContext Canvas.getContext(string c…

利用 Redis 和 Lua 实现高效的限流功能

简介 在现代系统中,限流是一种重要的机制,用于控制服务端的流量并保护系统免受恶意攻击或请求泛滥的影响。本文将介绍如何利用 Redis 和 Lua 结合实现高效的限流功能。 一、什么是限流 限流指的是对系统中的请求进行控制和调节,确保系统在…

Cluade3干货:超越GPT,模型特点分析+使用教程|2024年3月更新

就在刚刚,Claude 发布了最新的大模型 Claude3,并且一次性发布了三个模型,分别是 Claude 3 Haiku:(日本俳句 )Claude 3 Sonnet(英文十四行诗)Claude 3 Opus(古典乐作品集…

docker-compose Install rustdesk

RustDesk RustDesk 是一款开源的远程支持和远程桌面工具,它旨在为用户提供便捷的远程协助和远程访问功能。 默认情况下,hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)。务必在防火墙开启这几个端口, 请注意21116同时要开启TCP和UDP。…

streamlit初学-用streamlit实现云台控制界面

用streamlit实现云台控制界面 效果图PC上的效果手机上的效果 源码: 本文演示了,如何用streamlit做一个云台控制界面。功能包括:用户登录,事件的处理,图片的更新 版本信息: streamlit_authenticator: 下载链接streamlit : 1.31.1python: 3.11 修改点: streamlit_authenticato…

AndroidStudio安装Android模拟器AVD及遇到的问题解决

打开DeiviceManager 创建虚拟机 选个常规的1080*1920分辨率 这里就遇到一个报错: Android SDK is up to date. Running Android Emulator hypervisor driver installer [SC] ControlService 失败 1062: 服务尚未启动。 [SC] DeleteService 成功 [SC] 由于发生错误…

在线部署ubuntu20.04服务器,安装jdk、mysql、redis、nginx、minio

查看服务器版本为20.04 lsb_release -a服务器初始账号密码 sxd / 123456 首先,更改自身密码都输入123456 sudo passwd 创建最高权限root账号,密码为 123456 su root 更新源列表 sudo apt-get update 安装 openssh-server和vim,途中输入y sudo ap…

Python爬虫:设置随机 User-Agent

Python爬虫:设置随机 User-Agent 在Python中编写爬虫时,为了模拟真实用户的行为并防止被服务器识别为爬虫,通常需要设置随机的User-Agent。你可以使用fake-useragent库来实现这一功能。首先,你需要安装fake-useragent库&#xff…

通过Apple Configurator 2导出iOS ipa包

通过Apple Configurator 2导出iOS ipa包 安装Apple Configurator 2 从Mac AppStore安装Apple Configurator 2 下载ipa 准备工作: 1、 电脑已经安装了Apple Configurator 2 2、 手机已经安装了目标软件 3、 Apple 账号已经下载过目标软件 打开后连接设备&#xf…

如何快速分析OB集群日志,敏捷诊断工具obdiag分析能力实践——《OceanBase诊断系列》之四

1. 前言 obdiag是OceanBase的敏捷诊断工具。1.2版本中,obdiag支持快速收集诊断信息,但仅有收集能力是不够的,还需要有分析能力。因此在obdiag的1.3.0版本中,我们加入了OB集群的日志分析功能。用户可以一键进行集群的OB日志的分析…

Redis核心数据结构之SDS(二)

SDS与C字符串的区别 杜绝缓冲区溢出 除了获取字符串长度的复杂度高之外&#xff0c;C字符串不记录自身长度带来的另一个问题是 容易造成缓冲区溢出(buffer overflow).例如<string.h>/strcat函数可以将src字符串 中的内容拼接到dest字符串的末尾: char *strcat(char *d…

c++中多种类型sort()排序的用法(数组、结构体、pair、vector)

c中多种类型sort排序的用法 一、对数组排序1、默认排序2、自定义排序 二、对结构体进行排序三、对pair进行排序1、默认排序2、自定义排序 四、对vector进行排序1、默认排序2、去重排序3、自定义排序 一、对数组排序 1、默认排序 默认从小到大进行排序 #include <bits/std…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:拖拽控制)

设置组件是否可以响应拖拽事件。 说明&#xff1a; 从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 ArkUI框架对以下组件实现了默认的拖拽能力&#xff0c;支持对数据的拖出或拖入响应&#xff0c;开发者只需要将这些组件…

Xcode 15 适配 MonkeyDev

升级到Xcode15后,使用Xcode创建MonkeyApp后,运行会报错,本篇文章主要讲述此过程遇到的错误和解决办法。 问题1:找不到libc++.dylib文件 问题描述: Build input files cannot be found: /usr/lib/libstdc++.dylib, /usr/lib/libc++.dylib. Did you forget to declare th…

DHCP自动获取IP地址实验(华为)

思科设备参考&#xff1a;DHCP自动获取IP地址实验&#xff08;思科&#xff09; 一&#xff0c;实验目的 路由器搭载DHCP&#xff0c;让PC通过DHCP自动获取IP地址 二&#xff0c;不划分vlan--全局地址池 实验拓扑 配置命令 Router <Huawei>system-view [Huawei]ip po…

瑞_Redis_短信登录(一)

文章目录 项目介绍1 短信登录1.1 项目准备1.1.1 导入SQL1.1.2 导入后端项目1.1.3 导入前端项目 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《Redis》的实战篇的短信登录章节的项目准备小节。由于博主是从B站黑马程序员的《Redis》学习其相关知识&#xff0c;所以本系…

LLM春招,搜广推,nlp(2)

Encoder和Decoder怎么交互的 decoder里面的K&#xff0c;V输入用的是encoder的输出&#xff0c;并不是共享了K, V参数&#xff0c;decoder每层的参数都是独立的。Decoder每层是有两块Attention的&#xff1a;一块是正常的Self-Attention&#xff0c;QKV的输入都来自Decoder上一…

docker单节点搭建在线商城

本文档使用到的软件包以上传到资源中 目录 1. 创建容器并配置基础内容 1.1 将gpmall-repo上传到容器中 1.2 添加yum源 2. 安装基础服务 2.1 安装JAVA环境 2.2 安装Redis缓存服务 2.3 安装Elasticsearch服务 2.4 安装Nginx服务 2.5 安装MariaDB数据库 2.6 安…