from pyspark import SparkContext, SparkConf
import os
from pyspark.sql.session import SparkSession
from pyspark.sql import Row def CreateSparkContex():
sparkconf = SparkConf().setAppName("MYPRO").set("spark.ui.showConsoleProgress", "false")
sc = SparkContext(conf=sparkconf)
print("master:" + sc.master)
sc.setLogLevel("WARN")
Setpath(sc)
spark = SparkSession.builder.config(conf=sparkconf).getOrCreate()
return sc, spark def Setpath(sc):
global Path
if sc.master[:5] == "local":
Path = "file:/C:/spark/sparkworkspace"
else:
Path = "hdfs://test" if __name__ == "__main__":
print("Here we go!\n")
sc, spark = CreateSparkContex()
readcsvpath = os.path.join(Path, 'iris.csv')
dfcsv = spark.read.csv(readcsvpath, header=True,
schema=("`Sepal.Length` DOUBLE,`Sepal.Width` DOUBLE,`Petal.Length` DOUBLE,`Petal.Width` DOUBLE,`Species` string"))
#指定数据类型读取 dfcsv.show(3) dfcsv.registerTempTable('Iris')#创建并登陆临时表
spark.sql("select * from Iris limit 3").show()#使用sql语句查询
spark.sql("select Species,count(1) from Iris group by Species").show() df = dfcsv.alias('Iris1')#创建一个别名
df.select('Species', '`Sepal.Width`').show(4)#因表头有特殊字符需用反引号``转义
df.select(df.Species,df['`Sepal.Width`']).show(4)
dfcsv.select(df.Species).show(4)#原始名、别名的组合
df[df.Species, df['`Sepal.Width`']].show(4)
df[['Species']]#与pandas相同
df['Species']#注意这是一个字段名 #########增加字段
df[df['`Sepal.Length`'], df['`Sepal.Width`'], df['`Sepal.Length`'] - df['`Sepal.Width`']].show(4)
df[df['`Sepal.Length`'], df['`Sepal.Width`'],
(df['`Sepal.Length`'] - df['`Sepal.Width`']).alias('rua')].show(4)#重命名 #########筛选数据
df[df.Species == 'virginica'].show(4)#与pandas筛选一样
df[(df.Species == 'virginica') & (df['`Sepal.Width`']>1)].show(4)#多条件筛选
df.filter(df.Species == 'virginica').show(4)#也可以用fileter方法筛选
spark.sql("select * from Iris where Species='virginica'").show(4)#sql筛选 ##########多字段排序
spark.sql("select * from Iris order by `Sepal.Length` asc ").show(4)#升序
spark.sql("select * from Iris order by `Sepal.Length` desc ").show(4)#降序
spark.sql("select * from Iris order by `Sepal.Length` asc,`Sepal.Width` desc ").show(4)#升降序 df.select('`Sepal.Length`', '`Sepal.Width`').orderBy('`Sepal.Width`',ascending=0).show(4)#按降序
df.select('`Sepal.Length`', '`Sepal.Width`').orderBy('`Sepal.Width`').show(4) # 升序
df.select('`Sepal.Length`', '`Sepal.Width`').orderBy('`Sepal.Width`', ascending=1).show(4) # 按升序,默认的
df.select('`Sepal.Length`', '`Sepal.Width`').orderBy(df['`Sepal.Width`'].desc()).show(4) # 按降序 df.select('`Sepal.Length`', '`Sepal.Width`').orderBy(
['`Sepal.Length`','`Sepal.Width`'], ascending=[0,1]).show(4)#两个字段按先降序再升序
df.orderBy(df['`Sepal.Length`'].desc(),df['`Sepal.Width`']).show(4) ##########去重
spark.sql("select distinct Species from Iris").show()
spark.sql("select distinct Species,`Sepal.Width` from Iris").show() df.select('Species').distinct().show()
df.select('Species','`Sepal.Width`').distinct().show()
df.select('Species').drop_duplicates().show()#同上,与pandas用法相同
df.select('Species').dropDuplicates().show()#同上 ##########分组统计
spark.sql("select Species,count(1) from Iris group by Species").show()
df[['Species']].groupby('Species').count().show()
df.groupby(['Species']).agg({'`Sepal.Width`': 'sum'}).show()
df.groupby(['Species']).agg({'`Sepal.Width`': 'sum', '`Sepal.Length`': 'mean'}).show() #########联结数据
dic=[['virginica','A1'],['versicolor','A2'],['setosa','A3']]
rrd=sc.parallelize(dic)
df2=rrd.map(lambda p: Row(lei=p[0],al=p[1]))
df2frame=spark.createDataFrame(df2)
df2frame.show()
df2frame.registerTempTable('dictable')
spark.sql("select * from Iris u left join dictable z on u.Species=z.lei").show()
df.join(df2frame, df.Species == df2frame.lei, 'left_outer').show() sc.stop()
spark.stop()

 

pyspark SparkSession及dataframe基本操作的更多相关文章

  1. DataFrame基本操作

    这些操作在网上都可以百度得到,为了便于记忆自己再根据理解总结在一起.---------励志做一个优雅的网上搬运工 1.建立dataframe (1)Dict to Dataframe df = pd. ...

  2. 将 数据从数据库 直接通过 pyspark 读入到dataframe

    from pyspark.sql import SparkSession spark = SparkSession \ .builder \ .appName("Python Spark S ...

  3. [Spark SQL] SparkSession、DataFrame 和 DataSet 练习

    本課主題 DataSet 实战 DataSet 实战 SparkSession 是 SparkSQL 的入口,然后可以基于 sparkSession 来获取或者是读取源数据来生存 DataFrameR ...

  4. python做数据分析pandas库介绍之DataFrame基本操作

    怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 这一部分主要学习pandas中基于前面两种数据结构的基本操作. 设有DataF ...

  5. 用python做数据分析pandas库介绍之DataFrame基本操作

    怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 这一部分主要学习pandas中基于前面两种数据结构的基本操作. 设有DataF ...

  6. pandas库介绍之DataFrame基本操作

    怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 今天是5.1号. 这一部分主要学习pandas中基于前面两种数据结构的基本操作 ...

  7. 用python做数据分析4|pandas库介绍之DataFrame基本操作

    原文地址 怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 今天是5.1号. 这一部分主要学习pandas中基于前面两种数据结构 ...

  8. 机器学习三剑客之Pandas中DataFrame基本操作

    Pandas 是基于Numpy 的一种工具,是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷 ...

  9. sparksession创建DataFrame方式

    spark创建dataFrame方式有很多种,官方API也比较多 公司业务上的个别场景使用了下面两种方式 1.通过List创建dataFrame /** * Applies a schema to a ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议——建议21:选择正确的集合

    建议21:选择正确的集合 要选择正确的集合,首先要了解一些数据结构的知识.所谓数据结构,就是相互之间存在一种或多种特定关系的数据元素的集合. 集合的分类参考下图: 由于非泛型集合存在效率低及非类型安全 ...

  2. C++ 虚基类 派生与继承

    在学习设计模式时我就有一个疑问,关联和继承除了用法上的区别,好像在内存上并没有什么区别,继承也是父类作为了子类的元素(内存上),关联也是这样.而且关联好像更占内存一些.这就是设计模式里问题了“依赖倒转 ...

  3. eclipse启动了tomcat,但是浏览器打不开欢迎页

    tomcat在eclipse中启动成功,主页却打不开 症状: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他 ...

  4. SharePoint Server 2013 Excel Web Access无法显示

    环境信息:SharePoint Server 2013 中文版,版本为15.0.4420.1017 Windows Server 2008 r2中文版 Sql Server 2012 问题描述:在Sh ...

  5. fiddler 代理调试本地手机页面

    https://www.cnblogs.com/zichi/p/4944581.html

  6. 趣图:快下班了,剩一个bug,修复一下再走

      趣图:当我给老板展示我修复了那个 bug 时 趣图:当我以为这是最后一个Bug时……

  7. [SinGuLaRiTy] 2017 百度之星程序设计大赛 复赛

    [SinGuLaRiTy-1038] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. Arithmetic of Bomb Problem D ...

  8. mysql设计-基本操作

    mysql 设计 1)服务器管理 2)数据库管理 3)表管理 4)字段管理 5)索引管理 操作 1)sql语句 2)单表操作 3)多表操作 索引 记录 字段 mysam innodb ibdata1 ...

  9. P2925 [USACO08DEC]干草出售Hay For Sale 题解

    \(\Huge{dp第一题}\) 题目描述 农民john面临一个很可怕的事实,因为防范失措他存储的所有稻草给澳大利亚蟑螂吃光了,他将面临没有稻草喂养奶牛的局面.在奶牛断粮之前,john拉着他的马车到农 ...

  10. php代码书写习惯优化小结

    (1)使用 static 静态方法比普通方法快4倍(2)echo输出快于print(3)连接字符使用 , 代替 .(4)循环之前先取出最大值,而不是在循环里面取值    正确的方法      $max ...