c++ select函数_PySpark 操作函数一览

88dbf99f7c5f6fa0612d912f9a41612b.png

PySpark 操作函数一览

Created: Sep 14, 2020 10:28 AM Tags: Big Data, PySpark, Python, Spark

Pyspark.sql.functions

from pyspark.sql import functions as F

函数使用说明

基本数学函数类

  • abs
  • sincostanasinacosatansinhcoshtanh
  • ceilroundfloor
  • exploglog2powsqrtcbrt
  • factorial

特定类型

日期

  • current_datecurrent_timestampadd_monthsunix_timestamp
df = spark.createDataFrame([('2015-04-08',)], ['dt']
df.select(F.add_months(df.dt, 1).alias('next_month'))""""
+----------+
|next_month|
+----------+
|2015-05-08|
+----------+
"""
  • add_monthsdate_adddate_formatdate_subdate_truncdate_diff
  • dayofmonthdayofweekdayofyearweekofyear
  • hourlast_dayminutemonthmonths_betweennext_dayyear

字符

  • asciisubstringsubstring_index
  • base64unbase64
  • decodeencode
  • exprconv
  • format_string
  • length
  • lowerupper
  • reverse
  • size

Binary

  • binbitwiseNOT
  • hashmd5sha1sha2
  • hexunhex

角度

  • toDegreestoRadiansradians

数字

  • format_number

判断

  • isnanisnull

统计计算

  • avgcorrcountcountDistinctcume_dist
  • greatestkurtosisvariance
  • maxminmeanrandrandnrank
  • skewnesssumsumDistinct

数组处理

  • flattensliceelement_atarray_contains、array_distinct、array_except、array_intersect、array_join、array_max、array_min、array_position、array_remove、array_repeat、array_sort、array_union、arrays_overlap、arrays_zip
# 数组列包含元素
df = spark.createDataFrame([(["a", "b", "c"],), ([],)], ['data'])
df.withColumn("array_contains", F.array_contains(df.data, "a")).show()"""
+---------+--------------+
|     data|array_contains|
+---------+--------------+
|[a, b, c]|          true|
|       []|         false|
+---------+--------------+
"""

数组函数说明

df = spark.createDataFrame([(([1, 2, 3], [2, 3, 4]))], ['vals1', 'vals2'])
df.show()
df_new = df.select(F.arrays_zip(df.vals1, df.vals2).alias('zipped'))
df_new.show()
row = df_new.collect()[0]
row['zipped'][0]['vals1'] == row['zipped'][0][0] == 1"""
+---------+---------+
|    vals1|    vals2|
+---------+---------+
|[1, 2, 3]|[2, 3, 4]|
+---------+---------++--------------------+
|              zipped|
+--------------------+
|[[1, 2], [2, 3], ...|
+--------------------+True
"""

列处理

  • coalesce
df = spark.createDataFrame([(None, None), (1, None), (None, 2)], ("a", "b"))
df.show()
df.withColumn('coalesce', F.coalesce(df.a, df.b)).show()"""
+----+----+
|   a|   b|
+----+----+
|null|null|
|   1|null|
|null|   2|
+----+----++----+----+--------+
|   a|   b|coalesce|
+----+----+--------+
|null|null|    null|
|   1|null|       1|
|null|   2|       2|
+----+----+--------+
"""
  • array
# 多列数据合并成单独一列数组
df = spark.createDataFrame([('2015-04-08', 1, )], ['dt', 'int'])
df.select(F.array([df.dt, df.int]).alias("arr")).show()"""
+---------------+
|            arr|
+---------------+
|[2015-04-08, 1]|
+---------------+
"""
  • concatconcat_ws
df = spark.createDataFrame([('abcd','123')], ['s', 'd'])
df.withColumn('concat', F.concat_ws('-', df.s, df.d).alias('s')).show()
"""
+----+---+--------+
|   s|  d|  concat|
+----+---+--------+
|abcd|123|abcd-123|
+----+---+--------+
"""
  • colcolumnlit
df = spark.createDataFrame([(11, 12), (21, 22), (31, 32)], ("a", "b"))
df.withColumn('a+100', F.col('a')  + F.lit(100)).show()"""
+---+---+-----+
|  a|  b|a+100|
+---+---+-----+
| 11| 12|  111|
| 21| 22|  121|
| 31| 32|  131|
+---+---+-----+
"""
  • explodeexplode_outerposexplodeposexplode_outer
# 将 array/map 展开成新 dataframe 的行df = spark.createDataFrame([(1,2,3)], ArrayType(IntegerType()))
df.select(F.explode(df.value).alias("int")).show()"""
+---+
|int|
+---+
|  1|
|  2|
|  3|
+---+
"""df = spark.createDataFrame([({'a': 1, 'b': 2})], MapType(StringType(), IntegerType()))
df.select(F.explode(df.value).alias('key', 'value')).show()"""
+---+-----+
|key|value|
+---+-----+
|  a|    1|
|  b|    2|
+---+-----+
"""
  • from_csvfrom_jsonget_json_object
# 从 json string 提取对应的字段并扩展成列
import json
data = {'a': 1, 'b': [1,2,3]}
data_s = json.dumps(data)schema = StructType([StructField('a', IntegerType(), True),StructField('b', ArrayType(IntegerType()), True)
])df= spark.createDataFrame([(data_s)], schema=StringType())
df.show()"""
+--------------------+
|               value|
+--------------------+
|{"a": 1, "b": [1,...|
+--------------------+
"""df_from_json = df.withColumn('json', F.from_json(df.value, schema=schema))df_from_json.select(df_from_json.value, df_from_json.json.a.alias('value.a'), df_from_json.json.b.alias('value.b')
).show()"""
+--------------------+-------+---------+
|               value|value.a|  value.b|
+--------------------+-------+---------+
|{"a": 1, "b": [1,...|      1|[1, 2, 3]|
+--------------------+-------+---------+
"""
data = [("1", '''{"f1": "value1", "f2": "value2"}'''), ("2", '''{"f1": "value12"}''')]
df = spark.createDataFrame(data, ("key", "jstring"))
df.select(df.key, F.get_json_object(df.jstring, '$.f1').alias("c0"), F.get_json_object(df.jstring, '$.f2').alias("c1") ).show()"""
---+-------+------+
|key|     c0|    c1|
+---+-------+------+
|  1| value1|value2|
|  2|value12|  null|
+---+-------+------+
"""
  • create_mapmap_from_arraysmap_from_entriesmap_concatmap_keysmap_valuesmap_entries
df = spark.createDataFrame([([2, 5], ['a', 'b'])], ['k', 'v'])
df.select(F.map_from_arrays(df.k, df.v).alias("map")).show()"""
+----------------+
|             map|
+----------------+
|[2 -> a, 5 -> b]|
+----------------+
"""
  • regexp_extractregexp_replace
# 正则提取与正则替换
df = spark.createDataFrame([('100-200',)], ['str'])
df.select('str', F.regexp_extract('str', r'(d+)-(d+)', 1).alias('first'),F.regexp_replace('str', r'(d+)-(d+)', "$2-$1").alias('swap'),
).show()"""
+-------+-----+-------+
|    str|first|   swap|
+-------+-----+-------+
|100-200|  100|200-100|
+-------+-----+-------+
"""
  • udf

Pyspark.sql.types

Base 类型

  • DataType

基本类型

  • NullType
  • StringType
  • BinaryType
  • BooleanType
  • DateType
  • TimestampType
  • DecimalType
  • DoubleType
  • FloatType
  • ByteType
  • IntegerType
  • LongType
  • ShortType

叠加类型

ArrayType

df = spark.createDataFrame([([1,2,3])], schema=ArrayType(IntegerType()) )
df.show()
# +---------+
# |    value|
# +---------+
# |[1, 2, 3]|
# +---------+df.collect()[0].value[0]
# 1
# 默认的 column name 为 value

MapType

df = spark.createDataFrame([({'a': 1, 'b': 2})], schema=MapType(StringType(), IntegerType()) )
df.show()
# +----------------+
# |           value|
# +----------------+
# |[a -> 1, b -> 2]|
# +----------------+df.collect()[0]['value']['a']
# 1

StructField

# 需要搭配 StructType 使用
StructField('column_name', DataType, is_nullable)

StructType

df = spark.createDataFrame([(1,)], schema=StructType([StructField('col', IntegerType())]))
df.show()
"""
+---+
|col|
+---+
|  1|
+---+
"""# 复杂一些的情况
df = spark.createDataFrame([({'a': [2,3,4]},)], schema=StructType([StructField('col', MapType(StringType(), ArrayType(IntegerType())))]))
df.show()
"""
+----------------+
|             col|
+----------------+
|[a -> [2, 3, 4]]|
+----------------+
"""df.collect()[0]['col']['a'][0]
# 2

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

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

相关文章

LeetCode【7--整数反转】 LeetCode【8--字符串转整数】

整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 解题思路 x%10 取一位,x/10下一位,注意越界, 代码实现 class Solution { public:int reverse(int x) {int sum 0;while(x){if(s…

word2003如何设置护眼模式_ERP系统上线,如何设置采购收货的模式,提升企业的采购效率...

如何合理的规划采购计划上次去拜访一个朋友,他们说公司既然出现没有下达采购订单,供应商也有送货过来的事情,对于公司来说,这个是非常严重的问题。若用了ERP系统之后,如何避免类似的事情发生,今天我们来分享…

LeetCode【9-- 回文数】LeetCode【10 --正则表达式的匹配】

回文数 题目描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 解题思路 判断该数的逆序数是不是和原数相同 代码实现 class Solution { public:bool isPalindrome(int x) {if(…

sun键盘没有stop键_请教Sun键盘

请教Sun键盘(2011-12-24 06:01:11)标签:计算机杂谈请教Sun键盘Sun键盘上,Help和F1之间的空白键是干啥的?Space旁边的两个菱形标志的呢?Compose呢?谢谢!请教Sun键盘Space旁边的两个菱形标志是一个类似Ctrl、Alt的修饰键,叫Meta。可以用Meta;键名来定义…

LeetCode【11--盛水最多的容器】LeetCode【12 -- 整数转罗马数字】

盛水最多的容器 题目描述 给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共…

LeetCode【13--罗马数字转整数】LeetCode【14--最长的公共前缀】

罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X II 。 27 写做 XXVII, 即为 XX…

linux 编译3g驱动_linux下使用3G拨号上网 以及3g驱动设置

中兴WCDMA模块 Linux拨号流程Version 1.0目录1. 测试准备……………………………………………………..…32. 拨号脚本………………………………………………………133. 拨号过程………………………………………………………161. 测试准备本文档测试模块:MF210(中兴W…

文件压缩(基于LZ77的压缩)

LZ77压缩原理 初始LZ77 LZ77是基于字节的通用压缩算法,它的原理就是将源文件中的重复字节(即在前文中出现的重复字节)使用(offset,length,nextchar)的三元组进行替换 这里的 长度–offset,距离—length,先行缓冲匹配…

好中的图像处理方面的期刊_约会中,注意这四个方面,帮助你把握好自己的真爱...

两个人想要拥有一段美好的感情,那么男生就要掌握好一些技巧去追求对方,在追求的过程中,两个人的约会也非常重要,毕竟只有约会过程中,女孩子才能够看到你光鲜亮丽的一面,才能够慢慢的接受你,如果…

kafka consumer配置拉取速度慢_Kafka消费者的使用和原理

这周我们学习下消费者,仍然还是先从一个消费者的Hello World学起:public class Consumer { public static void main(String[] args) { // 1. 配置参数 Properties properties new Properties(); properties.put("key.des…

前缀和

前缀和 输入一个长度为n的整数序列。 接下来再输入m个询问,每个询问输入一对l, r。 对于每个询问,输出原序列中从第l个数到第r个数的和。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数,表示整数数列。 接下来m行,…

子矩阵的和

题目描述 输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1, y1, x2, y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数n,m,q。 …

jmeter 循环取值赋值给form_JMeter系列(三)逻辑控制器详解

循环控制器:指定迭代次数,可以用具体数字,也可以通过变量控制永远:表示无限循环点击查看示例:Jmeter实例(四)_图片爬虫简单控制器:这是最基础的一个控制器,它可以让脚本分层,变成一个…

c 复杂的前置后置面试题_OPPO Reno拆解:优秀工艺由外而内,复杂用料不负旗舰之名...

OPPO的新系列Reno手机最近吸引了不少注意力,不管是消费者还是手机极客都对其优秀的性能和强大的配置抱有极大的兴趣。最近,知名数码博主爱玩客对Reno十倍变焦版进行了拆解,从内部结构向我们揭示了这部手机的强大之处。并且点评道:…

差分矩阵

题目描述 输入一个n行m列的整数矩阵,再输入q个操作,每个操作包含五个整数x1, y1, x2, y2, c,其中(x1, y1)和(x2, y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将选中的子矩阵中的每个元素的值加上c。 请你将进行完所有操作后…

python常用的开发环境包括_Python语言主要包括哪些集成开发环境?_学小易找答案...

【填空题】Python的标准随机数生成器模块是【简答题】Why does critical thinking matter?【简答题】采集瓶子的外形进行创意设计 用点、线、面进行装饰填充 A4纸手绘,构图要有新意,要饱满【简答题】How can a lack of critical thinking cause a loss of personal freedom?【…

最长连续不重复子序列

题目描述 给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续区间,输出它的长度。 输入格式 第一行包含整数n。 第二行包含n个整数(均在0~100000范围内),表示整数序列。 输出格式 共一行,包…

ocp跟oce的区别 oracle_Oracle视频10g 11g认证视频教程 OCA/OCP 从入门到精通 数据库DBA...

一、认证Oracle OCP认证(Database 10g Administrator Certified Professional)为Oracle公司的数据库专家的认证。拥有OCP认证说明你拥有了大型Oracle数据库管理的技术能力,具备了成为大型企业核心数据库系统管理员的资格。OCE 1Z0-051:Oracle Database 1…

小爱同学app安卓版_小爱同学app下载-小米小爱同学下载2.9.21安卓版-西西软件下载...

小米小爱同学是小米AI音箱的配套软件,小爱同学是AI音箱的拟人虚拟形象,是一个二次元的萌妹子,如果你购买了小米AI音箱可以通过跟小爱同学交流来让小米智能音箱帮你完成你想要的服务。小爱同学支持海量互联网内容,包括在线音乐&…

python画太极八卦图_先天太极八卦图的唯一正确画法

我们先百度一下先天太极八卦图.↑,看看结果百度出来的图片第一页上半部分,结果非常惊人,40张图片,没有一张是正确的。错误原因分为两大类:1.太极图旋转方向或阴阳鱼所在位置错误 2.八卦中每卦的三爻画法错误1. 先天太极…