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

织梦网站做关键词石家庄做网站公司

织梦网站做关键词,石家庄做网站公司,店铺设计叫什么,wordpress企业模版配置前言 pyspark中很多常用的功能,过段时间没有使用就容易忘记,需要去网上搜索,这里总结一下,省的以后还去去搜,供自己以后参考。 withColumn def hot_func(info_str):if info_str:eturn "1"return "0&…

前言

pyspark中很多常用的功能,过段时间没有使用就容易忘记,需要去网上搜索,这里总结一下,省的以后还去去搜,供自己以后参考。

withColumn

def hot_func(info_str):if info_str:eturn "1"return "0"
df = df.withColumn("is_hot", F.udf(hot_func, StringType())(F.col("your_col_name")))

自定义函数

from pyspark.sql.functions import udf  
# 定义并注册函数
@udf(returnType=StringType())
def f_parse_category(info):x = json.loads(info)['category']return x if x is not None else ''
spark.udf.register('f_parse_category', f_parse_category)
# 在sql中使用注册的函数
sql = """
select *, f_parse_category(info) category, 
from your_table
where info is not null 
"""
df = spark.sql(sql).cache()

groupby处理

按groupby处理,保留goupby字段,并对groupby的结果处理。正常情况下,使用df.groupBy即可,但需要处理多列并逻辑较为复杂时,可以使用这种方式。

from pyspark.sql.functions import pandas_udf                                                         
from pyspark.sql.functions import PandasUDFType 
from pyspark.sql.types import StructField, LongType, StringType, StructType
from collections import Counterpattern = re.compile(r'\b\w+(?:' + '|'.join(['_size', '_sum']) + r')\b')group_cols = ['category']
value_cols = ['sales_sum', 'stat_size']schema = StructType(                                                                                [StructField(col, LongType()) if len(re.findall(pattern, col))>0 else StructField(col, StringType())  for col in group_cols+value_cols],)@pandas_udf(schema, functionType=PandasUDFType.GROUPED_MAP)                                          
def group_stat(df):# 获取l = [df[item].iloc[0] for item in group_cols]df = df[[col for col in df.columns if col not in group_cols]]sales_sum = df['sales'].sum().item()stat_size = len(df)# d: {"key": "value"}df['first_attr'] = df['attr'].transform(lambda d: list(json.loads(d).keys())[0])attr_dict = json.dumps({k:v for k, v in Counter(df['first_attr'].value_counts().to_dict()).most_common()}, ensure_ascii=0)counter = sum(df['brand_name'].apply(lambda x:Counter(json.loads(x))), Counter())ct = len(counter)brand_list = df["brand"].to_list()values = [sales_sum, stat_size, attr_dict, ct, infobox_brand_stat, brand_list]return pd.DataFrame([l + values])# df 包含字段:category, sales, attr, brand_name, brand
df = df.groupby(group_cols).apply(group_stat).cache()

patition By & orderBy

from pyspark.sql.window import Window
from pyspark.sql.functions import row_number, dense_rank
# 根据department分区,然后按salary排序编号
windowSpec  = Window.partitionBy("department").orderBy("salary")
df.withColumn("row_number",row_number().over(windowSpec)) \.show(truncate=False)
# dense_rank: 相同值排序编号一致

sql的方式:

select name, category, sales, DENSE_RANK() OVER (PARTITION BY category ORDER BY b.sales DESC) as sales_rank
from your_tb

dataframe转正rdd处理行

该中情况一般在需要处理过个行的情况下使用,如果是少数的行处理,可以使用withColumn

def hot_func(info_str):if info_str:eturn "1"return "0"
df = df.withColumn("is_hot", F.udf(hot_func, StringType())(F.col("your_col_name")))
转为rdd的处理方式为:
def gen_norm(row):# 转为字段处理row_dict = row.asDict(recursive=True)process_key = row_dict["key"]row_dict["process_key"] = process_keyreturn Row(**row_dict)
# sampleRatio=0.01 为推断列类型的抽样数据比例
df = df.rdd.map(gen_norm).toDF(sampleRatio=0.01).cache()
df.show()
http://www.yayakq.cn/news/792168/

相关文章:

  • 医疗网站优化公司浏览器在线打开网页
  • 建设网站对企业有什么好处襄樊建设网站
  • 网站模板下载地址新闻发布的网站
  • 建设部网站监理公告志鸿优化设计
  • 怎么做网站推广线下怎么建设大型商务网站
  • 建设通网站的信息是哪里来的网站页面设计论文
  • 网站备案查询你市场营销策划书500字
  • 福州网站备案制作网站得多少钱
  • 学做网站制作网页微信小程序
  • 潍坊模板建站平台wordpress导航站模板
  • 网站的栏目建设在哪里帮传销做网站
  • 出名的建站网站滁州注册公司流程和费用
  • 淮安网站建设淮安网站制作百度网站html验证
  • 仁寿建设局网站网站建设规划书主题
  • 凉山州住房与城乡建设局网站什么是网络营销它与传统营销相比有何特征
  • 静态手机网站建设的基本特点网站维护提醒php文件
  • 开发技术网站开发技术路线微信笔记转wordpress
  • 企业网站建设需要准备资料网站怎样添加友情链接
  • 企业网站要怎么做黄岩网站建设
  • 江苏 网站集约化建设方案WordPress邀请码注册插件
  • 做网站需要了解什么东西贵州贵州省住房和城乡建设厅网站
  • 梁山网站建设电话网站版面的美化原则
  • SharePoint做网站好吗中国城乡建设厅网站
  • 文字排版都用哪些网站免费建手机个人网站
  • 网站建设经网上工作平台
  • 外贸论坛买家信息网优化大师破解版app
  • 城镇建设部网站哪有做建筑设计的网站
  • 常州网站开发搜索引擎营销的方式
  • 做网站要准备什么iis部署网站提示建设中
  • 建站官网模板网站可信认证