【 Spark编程基础 】实验3

news2024/11/28 3:43:43

准备工作

启动Hadoop集群 & Spark

• 启动Hadoop集群start-all.sh
• 启动Sparkcd /usr/local/spark/spark-2.3.3-bin-hadoop2.6/# ./sbin/start-all.sh

实验数据说明。

• 数据为1970年到2016年,每年各球队的球员比赛数据统计,数据文件的格式如图1所示:
在这里插入图片描述

图1. NBA球员评估数据

• 篮球数据缩写说明如图2所示:
在这里插入图片描述
图2.篮球数据缩写说明

• 获取数据集:

数据集路径:https://staticfile.eec-cn.com/dataSet/systemLib/80c034eedda84db5aeec2a1558c51cc6.zip

• 将下载的数据集,解压缩到/home/data/目录下

mkdir /home/data
cd /home/data
wget https://staticfile.eec-cn.com/dataSet/systemLib/80c034eedda84db5aeec2a1558c51cc6.zip
unzip 80c034eedda84db5aeec2a1558c51cc6.zip

#1 集群启动

• 启动Hadoop集群

cd /opt/module/hadoop
./sbin/start-all.sh

• 启动Spark

 cd /opt/module/spark
 ./sbin/start-all.sh

#2 上传实验数据到HDFS

• 创建数据目录

cd /opt/module/hadoop
hadoop fs -mkdir -p /home/student/data

• 上传数据集

hadoop fs -put /home/data/nba_data/* /home/student/data

#3 分析实现过程

启动IDEA,创建Python文件

  • 启动IDEA
cd /opt/module/idea-IU-223.8836.41
./bin/idea.sh
  • 登录自己的JetBrain账号

  • 创建Python项目

实现过程

SparkSession

from pyspark import SparkConf
from pyspark.sql import SparkSession
import pyspark.sql.functions as F
if __name__ == '__main__':
    conf = SparkConf().setAppName("spark sql demo").setMaster("local[*]")
    sparkSession = SparkSession.builder.config(conf=conf).getOrCreate()
​
    ds = sparkSession.read.format('csv')
    	.load("hdfs://node1:8020/home/student/data/leagues_NBA_2016_per_game_per_game.csv")
    #查看表
    ds.show()
    #查看表结构
    ds.printSchema()#查看某一列 类似于MySQL: select Player,Tm from people
    ds.select("Player", "Tm").show()#查看多列并作计算 
    #基于当前列进行加1
    ds.select("Player", ds.Age+1).show()#设置过滤条件 
    ds.filter("Age > 21").show()#做聚合操作 
    ds.groupBy("Tm").count().show()#上述多个条件进行组合 select ta.age,count(*) from
    # (select name,age+1 as "age" from people) as ta where ta.age>21 group by ta.age
    ds.select("Player", (ds.Aage + 1)
        .alias("Age")).filter("Age > 21").groupBy("Tm").count().show()
    
    #直接使用spark SQL进行查询
    #先注册为临时表
    ds.createOrReplaceTempView("nba")
    ds.cache()
    sqlDF = sparkSession.sql("SELECT * FROM nba")
    sqlDF.show()

SparkContext

from pyspark import SparkConf, SparkContext, SQLContext, Row
from pyspark.sql.types import IntegerType, StructType, StructField, StringType
​
if __name__ == '__main__':
    conf = SparkConf().setAppName("HiveDemo").setMaster("local")
    sc = SparkContext(conf=conf)
    # Spark1.0中访问SparkSQL的方式,现在还保留,为了向后兼容,Spark2.0以后用SparkSession可以代替
    sqlContext = SQLContext(sc)
    # 设置conf,配置AppName,运行的Master(这里设置为本地模式
    # 创建一个sc的SQLContext对象
    # 创建一个sqlcontext对象(也可以是SQLContext的子类对象,如 HiveContext)
    # 加载数据源
    datas = sc.textFile("hdfs://node1:8020/home/student/data/leagues_NBA_2016_per_game_per_game.csv")
    # RDD转换为DataFrame有两种方式:(这里使用了第二种)
    # 使用反射方式推断元数据
    # 使用编程接口来创建DataFrame.
    rowRDD = datas.map(lambda line: line.split(",")).map(lambda data: Row(int(data[0]), data[1], data[2]))
    # 创建出元素为ROW的RDD# 流程简介:从原始的RDD创建一个元素为row的RDD;接下来创建一个structType,来代表ROW,最后将动态定义的
    # 元数据应用到RDD(ROW)上
    structType = StructType([
        StructField("Rk", IntegerType(), True),
        StructField("Player", StringType(), True),
        StructField("Age", IntegerType(), True),
        StructField("Tm", StringType(), True)
        # 通过编程的方式动态的构造元数据
    ])
    # 通过sqlContext的createDataFrame方法,创建DataFrame,
    # 将row类型的RDD和数据结构structType结合到一起
    stuDF = sqlContext.createDataFrame(rowRDD, structType)
    stuDF.show()
    # show方法可以把里面的数据显示出来
    stuDF.registerTempTable("nba")
    # 注册为临时表,这样就可以使用SQL语句了.
    sqlContext.sql("select Player from nba where Tm='SAC'").show()

#4 扩展功能

  1. 合并nba所有csv数据

  2. 清洗数据,讲cvs文件中多余列名去掉

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

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

相关文章

数据治理-数据质量篇

1、什么是数据质量 按照国际数据管理协会的《数据管理知识手册》中规定,数据质量(DQ)是“既指与数据有关的特征,也指用于衡量或改进数据质量的过程。”但要深入理解数据质量,需要切分不同层次或维度。 数据无处不在。…

一种用于地灾边坡大坝安全深度位移监测测斜仪

1用途 固定测斜仪广泛适用于测量土石坝、面板坝、岩土边坡、路堤、基坑、岩石边坡等结构物的水平位移、垂直沉降及滑坡,固定测斜仪配合测斜管可反复使用,并方便实现测量数据的自动采集。 固定测斜仪采用的是耐冲击型倾斜传感器,可靠性好&am…

【可解释AI】图神经网络的可解释性方法及GNNexplainer代码示例

图神经网络的可解释性方法及GNNexplainer代码示例 GNNExplainerIntroductionModelSingle-instance explanations(Explanation via Structural Information)Joint learning of graph structural and node feature information(Explanation via…

Linux常用命令——ip6tables命令

在线Linux命令查询工具 ip6tables linux中防火墙软件 补充说明 ip6tables命令和iptables一样&#xff0c;都是linux中防火墙软件&#xff0c;不同的是ip6tables采用的TCP/ip协议为IPv6。 语法 ip6tables(选项)选项 -t<表>&#xff1a;指定要操纵的表&#xff1b; …

Code area 和Data area的区别

Code Area FLASH &#xff1a;程序在这个flash运行时&#xff0c;几乎没有延时&#xff0c; 运行速度以时钟设置为准。 Data Area FLASH&#xff1a; 程序在这段flash运行时&#xff0c;每条语句都有延时&#xff0c; 最后的速度可能是以10M为时钟&#xff08;举例&#xff09;…

webpack4和webpack5有什么区别

webpack4和webpack5有什么区别 前言一、比较二、使用步骤1.5缓存使用方法和构建速度对比2.资源模块处理3.Webpack 5 支持在请求中处理协议。4.tree-shaking。 前言 Webpack4和Webpack5是两个版本的Webpack&#xff0c;其中Webpack5是Webpack的最新版本。 一、比较 性能&#…

一、Go语言初识

在日新月异的技术进步中,我们程序设计在不断的优化,程序的编译速度,程序的设计速度,程序的可读性等都在不断的提升。在这样的时代背景下,一些技术的先驱,技术的头部公司在不断的探索,GO语言就是在这样的环境中被设计开发的。 我们技术团队也在不断的学习,不断的进步,…

golang入门记录

参考&#xff1a; https://www.runoob.com/go/go-tutorial.html https://zhuanlan.zhihu.com/p/63310903 下载安装包&#xff1a; windows:https://dl.google.com/go/go1.20.2.windows-amd64.msi 对基础设施&#xff0c;包括跨操作系统、网络、多线程&#xff0c;web、cli都比…

OpenCV EigenFaceRecognizer 人脸识别

目录 一、人脸检测vs人脸识别 二、数据库 三、准备需要识别的人脸 四、人脸识别(OpenCV) 一、人脸检测vs人脸识别 人脸检测只是需要检测图像中是否有人脸&#xff0c;而人脸识别是一个程序能够识别出给定图像或者视频中的人脸。 二、数据库 人脸数据库&#xff0c;这个博客…

大数据之Hadoop分布式数据仓库HBase

目录&#xff1a; 一、Hadoop的局限二、HBase简介三、HBase Table四、数据的读写流程简述五、HBase Java API 1.0 的基本使用六、HBase Java API 2.0 的基本使用七、正确连接Hbase八、Hbase 常用 Shell 命令九、Hbase容灾与备份十、引入Phoenix core JAR包&#xff08;HBase中间…

好用免费的电脑摄像头录视频软件分享!

案例&#xff1a;如何录制电脑的摄像头&#xff1f; 【这周我需要开一个视频会议&#xff0c;会议十分重要&#xff0c;我希望把它录制下来。有没有小伙伴知道&#xff0c;电脑摄像头如何录制&#xff1f;求一个可以快速上手的方法&#xff01;】 在现如今的数字化时代&#…

计算机网络学习03(OSI、TCP/IP网络分层模型详解))

1、OSI 七层模型 OSI 七层模型 是国际标准化组织提出一个网络分层模型&#xff0c;其大体结构以及每一层提供的功能如下图所示&#xff1a; 每一层都专注做一件事情&#xff0c;并且每一层都需要使用下一层提供的功能比如传输层需要使用网络层提供的路由和寻址功能&#xff0…

【小程序】图文教程:完整说明如何把小程序代码提交到gitee上

目录 建项目本地打开配置远程分支发布到远程分支检验后续提交 建项目 注*&#xff1a;会在gitee上建项目的可以略过 进入到gitee官网&#xff0c;点击右侧的&#xff0c;创建新项目 进入到该页面&#xff1a; 填好之后&#xff0c;点击创建 进入下面页面&#xff0c;点击初…

用GPT 从0搭建 Jest 到帮写测试用例

本文作者为 360 数据平台部前端开发工程师 为什么要用AI写单测 这个问题分两点来说&#xff0c;第一是为什么要写单测&#xff0c;第二是为什么要用AI。 先来说为什么写单测&#xff0c;这很简单&#xff0c;我们项目或者说我们前端团队有公共模块&#xff0c;包含有组件类型、…

ipv6地址技术详解

一、什么是IPv6&#xff1f; IPv6是英文“Internet Protocol Version 6”&#xff08;互联网协议第6版&#xff09;的缩写&#xff0c;是互联网工程任务组&#xff08;IETF&#xff09;设计的用于替代IPv4的下一代IP协议&#xff0c;其地址数量号称可以为全世界的每一粒沙子编…

你可能需要的IDEA-Java开发插件

Idea开发插件 Alibaba Cloud AI Coding Assistant 阿里云智能编码插件&#xff08;Alibaba Cloud AI Coding Assistant&#xff09;是一款AI编程助手&#xff0c;它提供代码智能补全和代码示例搜索能力&#xff0c;帮助你更快更高效地写出高质量代码。 让我觉得比较有意思的…

Docker安装在Linux系统上(纯步骤)

Docker安装在Linux系统上操作步骤 本文章只有操作步骤&#xff0c;没有原理解释&#xff0c;只是用来提醒自己安装步骤 下面是docker官网&#xff0c;也有安装详情 https://docs.docker.com/engine/install/centos/ 安装分为四步走 我使用的是CentOS7版本&#xff0c;下面命令…

Linux基本权限

文章目录 前言一、Shell命令以及运行原理1.Shell的定义2.为什么用户不能直接使用kernel&#xff1f; 二、Linux中的权限1.权限是什么&#xff1f;2.如何操作权限呢&#xff1f;&#xff08;怎么修改权限&#xff09;1. 修改文件属性2. 修改文件角色 3.为什么要有权限 三、粘滞位…

直接插入排序(Straight Insertion Sort)

本文已收录于专栏 《算法合集》 一、简单释义 1、算法概念 对插入第i个记录时&#xff0c;R1、R2、…、Ri-1均已排好顺序。因此&#xff0c;将第i个记录Ri-1、…、R2、R1进行比较&#xff0c;找到合适的位置插入&#xff0c;他简单明了但是速度很慢。 2、算法目的 把无序数组通…

windows下免费本地部署类ChatGpt的国产ChatGLM-6B

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT4 量化级别下最低只需 6GB 显存&#xff09;。 Chat…