使用 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…

Nginx 域名证书 Http 和 Https 详细配置

小伙伴们好,欢迎关注,一起学习,无限进步 项目开发完成后,将项目部署到服务器上时,为了保证安全性和加密通信,我们通常会配置 Nginx 作为反向代理服务器,并使用域名证书启用 HTTPS。下面将为你指…

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

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

链表(Linked List)算法的使用场景和使用例子详解

链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针。链表算法在软件开发程序中有着广泛的应用场景。 链表算法基础知识: 链表算法基础知识主要包括链表的基本概…

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

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

window安装Miniconda的步骤

安装Miniconda是一个简单直接的过程,适合希望在Windows上进行Python开发而又不想安装Anaconda那样庞大软件包的用户。以下是详细的步骤: 第1步:下载Miniconda安装程序 打开你的网络浏览器,访问Miniconda的官方下载页面&#xff…

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。…

力扣爆刷第86天之hot100五连刷16-20

力扣爆刷第86天之hot100五连刷16-20 文章目录 力扣爆刷第86天之hot100五连刷16-20一、238. 除自身以外数组的乘积二、41. 缺失的第一个正数三、73. 矩阵置零四、54. 螺旋矩阵五、48. 旋转图像 一、238. 除自身以外数组的乘积 题目链接:https://leetcode.cn/problem…

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] 由于发生错误…

【大数据运维】大数据常见shell命令

文章目录 一、 Zookeeper常用命令1. zk服务命令2. zk客户端命令 二、HBASE常见运维命令1. 集群启动关闭2. 扩容增加regionserver3. 下线regionserver ing 一、 Zookeeper常用命令 例如:ZOOKEEPER_HOME:/opt/zk/zookeeper 1. zk服务命令 1. 启动ZK服务…

在线部署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…

Effective C++ 学习笔记 条款10 令operator=返回一个reference to *this

关于赋值,有趣的是你可以把它们写成连锁形式: int x, y, z; x y z 15; // 赋值连锁形式同样有趣的是,赋值采用右结合律,所以上述连锁赋值被解析为: x (y (z 15));这里15先被赋值给z,然后其结果&…

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…