首页 > 其他分享 >开始pyspark------------jupyter notebook 读取CSV文件

开始pyspark------------jupyter notebook 读取CSV文件

时间:2023-11-11 09:01:32浏览次数:35  
标签:jupyter name pyspark SparkSession ------------ sdf import csv

1 开始pyspark    

1 查看版本信息

  In [1]:
import sys
print(sys.version_info)
   
sys.version_info(major=3, minor=11, micro=5, releaselevel='final', serial=0)
  In [2]:
import os
print("The value of SPARK_HOME is:", os.environ.get("SPARK_HOME"))
   
The value of SPARK_HOME is: F:\anaconda\Lib\site-packages\pyspark
   

2 安装pyspark

!pip install pyspark 且必须pyspark运行需要JDK,在conda命令里执行conda install openjdk。

这个是图方便的简便安装方法,如果是第二次安装可能会报错。

   

3 练习sparksql

   

3.1 加载模块

  In [3]:
#导入pyspark模块
import pyspark
  In [4]:
#从pyspark.sql模块中导入SparkSeesion
from pyspark.sql import SparkSession
  In [5]:
spark=SparkSession.builder.appName('practise').getOrCreate()
  In [6]:
spark
  Out[6]:

SparkSession - in-memory

SparkContext

Spark UI

Version
v3.4.1
Master
local[*]
AppName
practise
   

忽略

import pandas as pd pd.read_csv('test1.csv')

   

忽略

pdf=pd.read_csv('test1.csv')

   

3.2 用SparkSession读取数据

  In [7]:
#读取csv文件(带表头)并赋值给变量sdf(此时类似于1个数据集或者是数据库里的表,实际并未加载数据到内存,只是一个DAG的某个stop)
sdf=spark.read.options(header='True').csv('test1.csv')
  In [8]:
#展示csv文件到stdout
sdf.show()
   
+--------+---+
|    name|age|
+--------+---+
|zhangsan| 18|
|   fasad| 19|
|     dsa| 20|
|     fss| 21|
|     fsa| 22|
|    李四| 21|
|    王五| 22|
+--------+---+

  In [9]:
#选择csv文件中姓名并展示到stdout.(类似于sql的中选择sdf表的name列)
sdf.select("name").show()
   
+--------+
|    name|
+--------+
|zhangsan|
|   fasad|
|     dsa|
|     fss|
|     fsa|
|    李四|
|    王五|
+--------+

  In [11]:
#pandas的命令没有sparksql那么好理解。(学了sql基础的人觉得难理解)
#pdf[["name"]].head(10)
   

3.3 查看类型:SparkSession里的数据默认为dataframe,不是RDD

  In [12]:
type(sdf)
  Out[12]:
pyspark.sql.dataframe.DataFrame

标签:jupyter,name,pyspark,SparkSession,------------,sdf,import,csv
From: https://www.cnblogs.com/zhangmin1987/p/17825487.html

相关文章

  • Go中字符串处理:fmt.Sprintf与string.Builder的比较
    在Go语言中,我们通常会遇到两种主要的方式来处理和操作字符串:使用fmt.Sprintf函数和string.Builder类型。尽管两者都可以实现字符串的格式化和连接,但它们在性能和用法上有一些关键区别。1.fmt.Sprintffmt.Sprintf是一个函数,它根据提供的格式化字符串和参数列表,将它们格式化为一......
  • 高级搜索指令
    百度高级搜索指令1.双引号把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配。百度和Google都支持这个指令。例如搜索:“中药面膜”2.减号减号代表搜索不包含减号后面的词的页面。使用这个指令时减号前面必须是......
  • Qt源码解析——元对象系统热身
    关键词:Qt源码QObjectQMetaObject元对象系统属性事件信号槽概述原系列文章地址官方文档第二章内容就是元对象系统,它在介绍里描述到:Qt的元对象系统提供了信号和槽机制(用于对象间的通信)、运行时类型信息和动态属性系统。元对象系统基于三个要素:QObject类为那些可以利......
  • 每日总结31
    软件设计                 石家庄铁道大学信息学院 实验10:组合模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解组合模式的动机,掌握该模式的结构;2、能够利用组合模式解决实际问题。 [实验任务一]:组合模式用透明组合模式实现教材中......
  • 在函数内部修改形参时,不会对实参产生影响
    执行以下代码,输出结果为()functiontest(a){a=a+10;}vara=10;test(a);console.log(a);10变量a为number类型,属于基本数据类型,基本数据类型在传参时,通过拷贝值进行传递。因此,在函数内部修改形参时,不会对实参产生影响,故输出a的值为10a是形参,属于局部变量,不影响全局变量......
  • 离散化
    背景引入对于一个数字序列,如果我们只关心他们之间的相对大小,而不关心具体数值,并且直接使用原数值会对我们的解决方案产生影响,此时我们采用离散化具体步骤即将一个原数组映射到另一个等大的数组中,并且两个数组数字之间的大小关系不变如:原序列=[12480761145*10e10]可......
  • 《软件工程:一种实践方法》读书笔记一
    它把作为一本书按惯例该讲的历史部分形式一下就一段话带过,但是其中一个来自《人月传说》的形象的比喻深深吸引了我的眼球:“……正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。……程序设计工作正像这样一个泥潭,……一批批程序员被迫在泥潭中......
  • ubuntu 配置NTP时间服务器&&定时同步本地时间
     Ubuntu系统:NTP时间服务器的安装:服务器安装命令:sudoapt-getinstallntp   NTP服务配置,设置为本地时间服务器,屏蔽默认server,服务器层级设为10:vim/etc/ntp.conf删除掉原有的serverxxx.xxx.xxx.xxx信息:server127.127.1.0fudge127.127.1.0stratum10  ......
  • godot常用C#代码
    Godot常用C#代码注:本文记录的是我个人认为很常用但是容易忘记的C#代码。生成实例:生成实例的对象必须是PackedScene类型生成实例如果想用其它类型存储需要强制转换,即在变量名前括号加变量名,或用az强转代码示例:usingGodot;usingSystem;publicpartialclassworl......
  • concat方法: 用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数
    下列哪个方法不能改变自身数组?AspliceBconcatCsortDpoppop方法:用于删除并返回数组的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,并返回undefined值。splice方法:向/从数组中添加/删除项目,然后返回被删除的项目,该方法会改变原......