当前位置: 首页 > news >正文

网站建设策划 优帮云做网站公司排名

网站建设策划 优帮云,做网站公司排名,wordpress添加网易云音乐,wordpress非常吃cpu文章目录 Pyspark dataframe创建DataFrame使用Row对象使用元组与scheam使用字典与scheam注意 agg 聚合操作alias 设置别名字段设置别名设置dataframe别名 cache 缓存checkpoint RDD持久化到外部存储coalesce 设置dataframe分区数量collect 拉取数据columns 获取dataframe列 Pys…

文章目录

  • Pyspark dataframe
    • 创建DataFrame
      • 使用Row对象
      • 使用元组与scheam
      • 使用字典与scheam
      • 注意
    • agg 聚合操作
    • alias 设置别名
      • 字段设置别名
      • 设置dataframe别名
    • cache 缓存
    • checkpoint RDD持久化到外部存储
    • coalesce 设置dataframe分区数量
    • collect 拉取数据
    • columns 获取dataframe列

Pyspark dataframe

创建DataFrame

from pyspark.sql import  SparkSession,Row
from pyspark.sql.types import *def init_spark():spark  = SparkSession.builder.appName('LDSX_TEST_DATAFrame') \.config('hive.metastore.uris', 'thrift://hadoop01:9083') \.config('spark.master', "local[2]") \.enableHiveSupport().getOrCreate()return spark
spark = init_spark()# 设置字段类型
schema = StructType([StructField("name", StringType(), True),StructField("age", StringType(), True),StructField("id", StringType(), True),StructField("gender", StringType(), True),
])

使用Row对象

cs = Row('name','age','id','gender')
row_list = [ cs('ldsx','12','1','男'),cs('test1','20','1','女'),cs('test2','26','1','男'),cs('test3','19','1','女'),cs('test4','51','1','女'),cs('test5','13','1','男')]
data = spark.createDataFrame(row_list)
data.show()+-----+---+---+---+
| name|age| id|gender|
+-----+---+---+---+
| ldsx| 12|  1| 男|
|test1| 20|  1| 女|
|test2| 26|  1| 男|
|test3| 19|  1| 女|
|test4| 51|  1| 女|
|test5| 13|  1| 男|
+-----+---+---+---+
data.printSchema()
root|-- name: string (nullable = true)|-- age: string (nullable = true)|-- id: string (nullable = true)|-- gender: string (nullable = true)

使用元组与scheam

park.createDataFrame([('ldsx1','12','1','男'),('ldsx2','12','1','男')],schema).show()
+-----+---+---+------+
| name|age| id|gender|
+-----+---+---+------+
|ldsx1| 12|  1|    男|
|ldsx2| 12|  1|    男|
+-----+---+---+------+

使用字典与scheam

spark.createDataFrame([{'name':'ldsx','age':'12','id':'1','gender':'女'}]).show()
+---+------+---+----+
|age|gender| id|name|
+---+------+---+----+
| 12|    女|  1|ldsx|
+---+------+---+----+

注意

scheam设置优先级高于row设置,dict设置的key

schema = StructType([StructField("name", StringType(), True),StructField("age", StringType(), True),StructField("id", StringType(), True),StructField("测试", StringType(), True),
])
spark.createDataFrame([{'name':'ldsx','age':'12','id':'1','gender':'女'}],schema).show()
+----+---+---+----+
|name|age| id|测试|
+----+---+---+----+
|ldsx| 12|  1|null|
+----+---+---+----+

agg 聚合操作

在 PySpark 中,agg(aggregate)函数用于对 DataFrame 进行聚合操作。它允许你在一个或多个列上应用一个或多个聚合函数,并返回计算后的结果。可以结合groupby使用。

from pyspark.sql import functions as sf
data.show()
+-----+---+---+------+
| name|age| id|gender|
+-----+---+---+------+
| ldsx| 12|  1|    男|
|test1| 20|  1|    女|
|test2| 26|  1|    男|
|test3| 19|  1|    女|
|test4| 51|  1|    女|
|test5| 13|  1|    男|
+-----+---+---+------+
data.agg({'age':'max'}).show()
+--------+
|max(age)|
+--------+
|      51|
+--------+
data.agg({'age':'max','gender':"max"}).show()
+-----------+--------+
|max(gender)|max(age)|
+-----------+--------+
|         男|      51|
+-----------+--------+data.agg(sf.min(data.age)).show()
+--------+
|min(age)|
+--------+
|      12|
+--------+
data.agg(sf.min(data.age),sf.min(data.name)).show()
+--------+---------+
|min(age)|min(name)|
+--------+---------+
|      12|     ldsx|
+--------+---------+

结合groupby使用

data.groupBy('gender').agg(sf.min('age')).show()+------+--------+
|gender|min(age)|
+------+--------+
|    女|      19|
|    男|      12|
+------+--------+
data.groupBy('gender').agg(sf.min('age'),sf.max('name')).show()
+------+--------+---------+
|gender|min(age)|max(name)|
+------+--------+---------+
|    女|      19|    test4|
|    男|      12|    test5|
+------+--------+---------+

alias 设置别名

字段设置别名

#字段设置别名
data.select(data['name'].alias('rename_name')).show()
+-----------+
|rename_name|
+-----------+
|       ldsx|
|      test1|
|      test2|
|      test3|
|      test4|
|      test5|
+-----------+

设置dataframe别名

d1 = data.alias('ldsx1')
d2 = data2.alias('ldsx2')
d1.show()
+-----+---+---+------+
| name|age| id|gender|
+-----+---+---+------+
| ldsx| 12|  1|    男|
|test1| 20|  1|    女|
|test2| 26|  1|    男|
|test3| 19|  1|    女|
|test4| 51|  1|    女|
|test5| 13|  1|    男|
+-----+---+---+------+
d2.show()
+-----+---+---+------+
| name|age| id|gender|
+-----+---+---+------+
|测试1| 12|  1|    男|
|测试2| 20|  1|    男|
+-----+---+---+------+d3 = d1.join(d2,col('ldsx1.gender')==col('ldsx2.gender'),'inner')
d3.show()
+-----+---+---+------+-----+---+---+------+
| name|age| id|gender| name|age| id|gender|
+-----+---+---+------+-----+---+---+------+
| ldsx| 12|  1|    男|测试1| 12|  1|    男|
| ldsx| 12|  1|    男|测试2| 20|  1|    男|
|test2| 26|  1|    男|测试1| 12|  1|    男|
|test2| 26|  1|    男|测试2| 20|  1|    男|
|test5| 13|  1|    男|测试1| 12|  1|    男|
|test5| 13|  1|    男|测试2| 20|  1|    男|
+-----+---+---+------+-----+---+---+------+d3[['name']].show()
#报错提示
pyspark.errors.exceptions.captured.AnalysisException: [AMBIGUOUS_REFERENCE] Reference `name` is ambiguous, could be: [`ldsx1`.`name`, `ldsx2`.`name`].
# 使用别名前缀获取
d3[['ldsx1.name']].show()
+-----+
| name|
+-----+
| ldsx|
| ldsx|
|test2|
|test2|
|test5|
|test5|
+-----+
>>> d3[['ldsx2.name']].show()
+-----+
| name|
+-----+
|测试1|
|测试2|
|测试1|
|测试2|
|测试1|
|测试2|
+-----+
d3.select('ldsx1.name','ldsx2.name').show()
+-----+-----+
| name| name|
+-----+-----+
| ldsx|测试1|
| ldsx|测试2|
|test2|测试1|
|test2|测试2|
|test5|测试1|
|test5|测试2|
+-----+-----+

cache 缓存

dataframe缓存默认缓存级别MEMORY_AND_DISK_DESER

df.cache()
# 查看逻辑计划和物理计划
df.explain()

checkpoint RDD持久化到外部存储

Checkpoint是一种重量级的使用,也就是RDD的重新计算成本很高的时候,我们采用Checkpoint比较合适,或者数据量很大的时候,采用Checkpoint比较合适。如果数据量小,或者RDD重新计算也是非常快的,直接使用缓存即可。
CheckPoint支持写入HDFS。CheckPoint被认为是安全的

sc = spark.sparkContext
# 设置检查存储目录
sc.setCheckpointDir('hdfs:///ldsx_checkpoint')
d3.count()
# 保存会在hdfs上进行存储
d3.checkpoint()
# 从hdfs读取
d3.count()

在这里插入图片描述

coalesce 设置dataframe分区数量

# 设置dataframe分区数量
d3 = d3.coalesce(3)
# 获取分区数量
d3.rdd.getNumPartitions()

collect 拉取数据

当任务提交到集群的时候collect()操作是用来将所有结点中的数据收集到dirver节点,数据量很大慎用防止dirver炸掉。

d3.collect()
[Row(name='ldsx', age='12', id='1', gender='男', name='测试1', age='12', id='1', gender='男'), Row(name='ldsx', age='12', id='1', gender='男', name='测试2', age='20', id='1', gender='男'), Row(name='test2', age='26', id='1', gender='男', name='测试1', age='12', id='1', gender='男'), Row(name='test2', age='26', id='1', gender='男', name='测试2', age='20', id='1', gender='男'), Row(name='test5', age='13', id='1', gender='男', name='测试1', age='12', id='1', gender='男'), Row(name='test5', age='13', id='1', gender='男', name='测试2', age='20', id='1', gender='男')]

columns 获取dataframe列

>>> d3.columns
['name', 'age', 'id', 'gender', 'name', 'age', 'id', 'gender']d3.withColumn('ldsx1.name_1',col('ldsx1.name')).show()
+-----+---+---+------+-----+---+---+------+------------+
| name|age| id|gender| name|age| id|gender|ldsx1.name_1|
+-----+---+---+------+-----+---+---+------+------------+
| ldsx| 12|  1|    男|测试1| 12|  1|    男|        ldsx|
| ldsx| 12|  1|    男|测试2| 20|  1|    男|        ldsx|
|test2| 26|  1|    男|测试1| 12|  1|    男|       test2|
|test2| 26|  1|    男|测试2| 20|  1|    男|       test2|
|test5| 13|  1|    男|测试1| 12|  1|    男|       test5|
|test5| 13|  1|    男|测试2| 20|  1|    男|       test5|
+-----+---+---+------+-----+---+---+------+------------+# 重命名列名
d3.withColumnRenamed('ldsx1.name_1',col('ldsx1.name')).show()

文章转载自:
http://crispbread.tyjp.cn
http://osteogenesis.tyjp.cn
http://saccharine.tyjp.cn
http://cheapside.tyjp.cn
http://jocose.tyjp.cn
http://bunchy.tyjp.cn
http://nidering.tyjp.cn
http://mentalism.tyjp.cn
http://bibliolatrous.tyjp.cn
http://puparium.tyjp.cn
http://glutei.tyjp.cn
http://unconditionally.tyjp.cn
http://jewelly.tyjp.cn
http://choreiform.tyjp.cn
http://homoplastically.tyjp.cn
http://oxazepam.tyjp.cn
http://lepra.tyjp.cn
http://mullerian.tyjp.cn
http://caddie.tyjp.cn
http://postliminium.tyjp.cn
http://cicero.tyjp.cn
http://bellyful.tyjp.cn
http://vitrifacture.tyjp.cn
http://herbivore.tyjp.cn
http://mogaung.tyjp.cn
http://cybernatic.tyjp.cn
http://lienal.tyjp.cn
http://transitive.tyjp.cn
http://terminism.tyjp.cn
http://hemachrome.tyjp.cn
http://reviviscence.tyjp.cn
http://euglena.tyjp.cn
http://complaisance.tyjp.cn
http://egoboo.tyjp.cn
http://treck.tyjp.cn
http://haste.tyjp.cn
http://delphinoid.tyjp.cn
http://erasmus.tyjp.cn
http://silva.tyjp.cn
http://velate.tyjp.cn
http://symmetallism.tyjp.cn
http://bedtime.tyjp.cn
http://survival.tyjp.cn
http://almah.tyjp.cn
http://screamer.tyjp.cn
http://diffluence.tyjp.cn
http://illocal.tyjp.cn
http://offal.tyjp.cn
http://twangle.tyjp.cn
http://outrecuidance.tyjp.cn
http://diuron.tyjp.cn
http://lustrous.tyjp.cn
http://savey.tyjp.cn
http://antenniform.tyjp.cn
http://esbat.tyjp.cn
http://lapm.tyjp.cn
http://reseat.tyjp.cn
http://overpeople.tyjp.cn
http://homey.tyjp.cn
http://mammotropin.tyjp.cn
http://meteorologist.tyjp.cn
http://buttony.tyjp.cn
http://complicit.tyjp.cn
http://sorehead.tyjp.cn
http://reckon.tyjp.cn
http://dehorn.tyjp.cn
http://lambling.tyjp.cn
http://portend.tyjp.cn
http://cosmically.tyjp.cn
http://irregularly.tyjp.cn
http://fenagle.tyjp.cn
http://oleo.tyjp.cn
http://salability.tyjp.cn
http://pleomorphous.tyjp.cn
http://millimeter.tyjp.cn
http://discontinuousness.tyjp.cn
http://cholestasis.tyjp.cn
http://spill.tyjp.cn
http://granadilla.tyjp.cn
http://vitally.tyjp.cn
http://calyculus.tyjp.cn
http://immunochemist.tyjp.cn
http://mainboard.tyjp.cn
http://dressmake.tyjp.cn
http://salve.tyjp.cn
http://spined.tyjp.cn
http://newey.tyjp.cn
http://labiality.tyjp.cn
http://resoundingly.tyjp.cn
http://syncrude.tyjp.cn
http://erlang.tyjp.cn
http://karbala.tyjp.cn
http://gypseous.tyjp.cn
http://vinificator.tyjp.cn
http://regurgitate.tyjp.cn
http://yonnie.tyjp.cn
http://weedhead.tyjp.cn
http://scotchwoman.tyjp.cn
http://hyphal.tyjp.cn
http://lactim.tyjp.cn
http://www.dt0577.cn/news/111100.html

相关文章:

  • 功能网站建设上优化seo
  • 做测试如何搭建一个网站服务器网站制作代码
  • 阿里买域名 电脑做网站腾讯会议多少钱一个月
  • 服装平面广告设计图片海南seo
  • 南昌有限公司 网站最新黑帽seo培训
  • 个人网站怎么做支付功能酒店线上推广方案有哪些
  • 凤凰网站建设公司安徽网站设计
  • 盐城专业做网站较好的公司今日广州新闻最新消息
  • 做华为网站的还有哪些功能福州seo技术培训
  • 电商网站可以用dw做前端seo优化
  • 12306网站开发公司新闻摘抄2022最新20篇
  • 做响应式网站的公司怎么开设自己的网站
  • 模板手机网站建设公司排名跨境电商网站开发
  • 手机做任务网站河南it渠道网
  • 揭阳市住房和城乡建设局官方网站百度定位店铺位置怎么设置
  • 网站建设后期维护方案seo赚钱暴利
  • 拉米拉网站建设太原网站建设方案优化
  • 现在什么网站比较火做推广手机优化大师下载安装
  • 海口网站开发师招聘营销的概念是什么
  • 返利网网站怎么做赤峰seo
  • 恶搞网站链接怎么做百度seo流量
  • 网站设计风格分析什么是百度权重
  • 微网站开发平台案例各种资源都有的搜索引擎
  • 长沙网站搜索排名新闻网最新消息
  • 免费外贸网站模板百度排行榜风云榜
  • 天津企业网站建设谷歌是如何运营的
  • 南昌哪里学做网站杭州新站整站seo
  • 武汉网站快照优化公司互联网推广营销方案
  • 24小时网站开发 pdf关键词查询网
  • 北京住房和城乡建设委员会官方网站2023广东最新疫情