首页 > 其他分享 >PySpark分布式项目运行流程

PySpark分布式项目运行流程

时间:2024-05-27 15:34:22浏览次数:17  
标签:PySpark -- 流程 wangwei22 py3.7 edges nodes 分布式

1. PySpark 是 Spark 为 Python 开发者提供的 API。

2. 基于PySpark的分布式项目主要由三部分组成,如图1所示,我们在开发自己的分布式程序时,只需要关注两部分,1是开发自己项目的PySpark代码,2是将该代码运行需要的环境进行打包。

下面的countNum.py即一个简单的分布式程序。

# countNum.py
from pyspark import SparkConf,SparkContext
 
if __name__=="__main__":
     
    ### 1.配置spark连接 ###
    # 参数设置
    conf = SparkConf().setAppName("count_nums")
    # 实例化一个Spark集群的连接
    sc = SparkContext(conf=conf)
 
    ### 2.业务处理 ###
    # 读取数据
    edges = sc.textFile("/home/hdp-ait/wangwei22/edge/subdomain/part-00000-80565034-e42a-47c4-9767-49e1fd44b525-c000.json.gz")
    nodes = sc.textFile("/home/hdp-ait/wangwei22/tag/domain/part-00000-a3e54434-0e76-4a8e-ad71-cb59b12d5e8f-c000.json.gz")
    # 统计数据量
    edges_Num = edges.count()
    nodes_Num = nodes.count()
    # 输出统计结果
    print("Number of edges:", edges_Num)
    print("Number of nodes:", nodes_Num)
    # 输出数据样例
    print("Number of nodes:", edges.take(10))
    print("Number of nodes:", nodes.take(10))

3. 运行环境打包及上传

# 压缩环境

tar -zcvf py3.7_ne1.0.tar.gz py3.7 # 上传至HDFS hdfs dfs -copyFromLocal py3.7_ne1.0.tar.gz /home/hdp-ait/wangwei22/

4. 项目提交

通过在自己运行程序代码(如countNum.py)所在位置提交命令的方式。

spark -submit

--master yarn  --keytab /home/wangwei22/.wangwei22.keytab --principal wangwei22   --queue root.hdp_ait  # 这里提交模式只能是 cluster, client模式会报错。 --deploy-mode cluster # 分布式平台的执行机器最大只能支持14G,再大会报错 --driver-memory 14G # 并发数的设置越多,推理速度越快 --num-executors 200 # 分布式平台的执行机器最大只能支持14G,再大会报错 --executor-memory 14G # 核数设为1, 并发执行器利用率高,推理速度快 --executor-cores 1 # 环境压缩包的位置 --archives hdfs:/home/hdp-ait/wangwei22/py3.7_ne1.0.tar.gz#py3.7  # pyspark的python驱动环境即我们上传的python环境 --conf spark.pyspark.driver.python=./py3.7/py3.7/bin/python3 --conf spark.pyspark.python=./py3.7/py3.7/bin/python3 countNum.py   5.常用HDFS操作命令  

标签:PySpark,--,流程,wangwei22,py3.7,edges,nodes,分布式
From: https://www.cnblogs.com/Revelation/p/18215650

相关文章

  • 了解一下微信小程序的登录流程
    以上是官网上的微信小程序登录流程。1、小程序启动时,通过wx.login方法获取到code(注意这个code只能使用一次),然后通过接口发送到我们自己的服务器(开发者服务器)后台。2、后台获取到code后和从开发者平台获取到的appid,appSecret一起调用 auth.code2Session 接口到微信服务器,......
  • Redis教程(十七):Redis的Redisson分布式锁
    Redis分布式锁 Redis分布式锁的主要作用是在分布式系统环境下提供一种机制,用于确保在同一时间只有一个进程(或线程)能够执行某个关键代码段或访问特定的资源。这主要用于控制对共享资源的并发访问,以避免因多个进程同时修改同一数据而导致的数据不一致或其他竞争条件问题。 ......
  • 【软件设计】项目设计流程规范
    graphLRA(软件设计)-->B(一、需求分析)A-->C(二、系统设计)B-->D(1.市场调研)B-->E(2.功能需求整合)E-->客户端功能需求E-->管理端功能需求C-->F(逻辑架构设计)F-->客户端F-->业务逻辑F-->基础服务C-->G(技术架构设计)G-->用户层G-->服务层G-->数据层C-->H(数......
  • (文章复现)分布式电源接入配电网承载力评估方法研究
    参考文献:[1]郝文斌,孟志高,张勇,等.新型电力系统下多分布式电源接入配电网承载力评估方法研究[J].电力系统保护与控制,2023,51(14):23-33.1.摘要        随着光伏和风电等多种分布式电源的接入,使得传统配电网的结构及其运行状态发生了较大改变。因此,通过建立直观的......
  • etcd MVCC 存储结构及流程
    什么是MVCCMVCC是Multi-VersionConcurrencyControl的缩写,即多版本并发控制。它是一种并发控制的方法,用于在数据库系统中实现事务的隔离性。MVCC是一种乐观锁机制,它通过保存数据的多个版本来实现事务的隔禽性。在etcd中,MVCC是用于实现数据的版本控制的。而且可以查看历......
  • 一个人应该怎么操作抖音小店呢?店铺操作流程给你讲解清楚!
    大家好,我是电商小V现在入驻抖音小店的有很多新手,新手最关心的就是一个人应该如何操作抖音小店,操作抖音小店需要做好哪几步呢?关于这个问题咱们就来详细的讲解一下,第一点:开店开店是做店的第一步,开店之前首先需要准备好营业执照,法人身份证,法人银行卡,手机号,店铺名称,店铺logo,2......
  • 本地/全局/分布式事务
    根据服务架构,事务可以大致划分为三类本地事务:一个服务使用一个数据源全局事务:一个服务使用多个数据源分布式事务:涉及多个服务,不同服务使用不同数据源本地事务由数据库提供支持,如MySQL中的InnoDB存储引擎,提供了ACID实现。全局事务涉及到多个数据源,需要从外部提供支持。XA(......
  • 一文读懂Apollo客户端配置加载流程
    SpringBoot集成Apollo源码分析本文基于apollo-client2.1.0版本源码进行分析Apollo是携程开源的配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。Apollo支持4个维度管理Key-Value格式的配置:appl......
  • 记录一次Redisson使用synchronized和分布式锁不生效的原因
    最近在开发的过程中,遇到了一个并发场景,用户进行方案复制的时候,当快速点击两次操作的时候,出现了复制方案重名的情况,实际上是复制方案的方案名称,是由后端根据数据库已有的方案名称和当前要复制的方案名称进行逻辑处理,保证方案名称不能重复,比如:要复制的方案名称为“我的方案”,......
  • u-boot 启动流程
    启动流程 播报编辑大多数BootLoader都分为stage1和stage2两大部分,U-boot也不例外。依赖于cpu体系结构的代码(如设备初始化代码等)通常都放在stage1且可以用汇编语言来实现,而stage2则通常用C语言来实现,这样可以实现复杂的功能,而且有更好的可读性和移植性。1、stage1(start.s......