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

Spark学习 day8 - 呓语

对各省销售指标,每个省的销售额进行统计
TOP3销售省份中,有多少家店铺日均销售额 > 1000
TOP3省份中各个省份的平均单单价
TOP3省份中,各个省份的支付类型比例

image

#coding:utf8
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
from pyspark.storagelevel import StorageLevel
from  pyspark.sql.types import StringTypeif __name__ == '__main__':spark = SparkSession.builder.\appName("SparkSQL Example").\master("local[*]").\config("spark.sql.shuffle.partitions", "2").\config("spark.sql.warehouse.dir", "hdfs://node1:8020/user/hive/warehouse").\config("hive.metastore.uris", "thrift://node3:9083").\enableHiveSupport().\getOrCreate()df = spark.read.format("json").load("../../data/input/mini.json").\dropna(thresh=1, subset=['storeProvince']).\filter("storeProvince != 'null'").\filter("receivable < 10000").\select("storeProvince", "storeID", "receivable", "dateTS", "payType")province_sale_df = df.groupBy("storeProvince").sum("receivable").\withColumnRenamed("sum(receivable)", "money").\withColumn("money", F.round("money", 2)).\orderBy("money", ascending=False)province_sale_df.show(truncate=False)province_sale_df.write.mode("overwrite").\format("jdbc").\option("url", "jdbc:mysql://node1:3306/bigdata?useSSL=false&useUnicode=true&characterEncoding=utf8").\option("dbtable", "province_sale").\option("user", "root").\option("password", "123456").\option("encoding", "utf-8").\save()province_sale_df.write.mode("overwrite").saveAsTable("default.province_sale", "parquet")top3_province_df = province_sale_df.limit(3).select("storeProvince").withColumnRenamed("storeProvince", "top3_province")top3_province_df_joined = df.join(top3_province_df, on = df['storeProvince'] == top3_province_df['top3_province'])top3_province_df_joined.persist(StorageLevel.MEMORY_AND_DISK)province_hot_store_count_df = top3_province_df_joined.groupBy("storeProvince", "storeID",F.from_unixtime(df['dateTS'].substr(0,10), "yyyy-MM-dd").alias("day")).\sum("receivable").withColumnRenamed("sum(receivable)", "money").\filter("money > 1000").\dropDuplicates(subset=["storeID"]).\groupBy("storeProvince").count()province_hot_store_count_df.write.mode("overwrite").\format("jdbc").\option("url", "jdbc:mysql://node1:3306/bigdata?useSSL=false&useUnicode=true&characterEncoding=utf8").\option("dbtable", "province_hot_store_count").\option("user", "root").\option("password", "123456").\option("encoding", "utf-8").\save()province_hot_store_count_df.write.mode("overwrite").saveAsTable("default.province_hot_store_count", "parquet")top3_province_order_avg_df = top3_province_df_joined.groupBy("storeProvince").\avg("receivable").\withColumnRenamed("avg(receivable)", "money").\withColumn("money", F.round("money", 2)).\orderBy("money", ascending=False)top3_province_order_avg_df.show(truncate=False)top3_province_order_avg_df.write.mode("overwrite").\format("jdbc").\option("url", "jdbc:mysql://node1:3306/bigdata?useSSL=false&useUnicode=true&characterEncoding=utf8").\option("dbtable", "top3_province_order_avg").\option("user", "root").\option("password", "123456").\option("encoding", "utf-8").\save()top3_province_order_avg_df.write.mode("overwrite").saveAsTable("default.top3_province_order_avg", "parquet")top3_province_df_joined.createTempView("province_pay")def udf_func(percent):return str(round(percent * 100, 2)) + "%"my_udf = F.udf(udf_func, StringType())pay_type_df = spark.sql("""SELECT storeProvince, payType, (COUNT(payType) / total) AS percent FROM(SELECT storeProvince, payType, count(1) OVER(PARTITION BY storeProvince) AS total FROM province_pay) AS subGROUP BY storeProvince, payType, total""").withColumn("percent", my_udf("percent"))pay_type_df.show()pay_type_df.write.mode("overwrite").\format("jdbc").\option("url", "jdbc:mysql://node1:3306/bigdata?useSSL=false&useUnicode=true&characterEncoding=utf8").\option("dbtable", "pay_type").\option("user", "root").\option("password", "123456").\option("encoding", "utf-8").\save()pay_type_df.write.mode("overwrite").saveAsTable("default.pay_type", "parquet")top3_province_df_joined.unpersist()

image

http://www.jsqmd.com/news/355022/

相关文章:

  • YAW-100型微机控制电液伺服多功能加载试验系统
  • 解读成都高性价比的教育机构,美国雪兰多大学教学质量排名 - mypinpai
  • 盘锦市英语雅思培训辅导机构推荐;2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 阜新市英语雅思培训辅导机构推荐\2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 盘锦市英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 基于FPGA的自定义控制命令的串口收发功能 实现pc电脑与fpga的参数控制,可设置波特率,实...
  • 2026年分析广州的西班牙CEDEU学院优质机构费用怎么算 - 工业品牌热点
  • 从辰包装纸箱厂推荐哪家,在河北地区有什么独特的服务亮点? - 工业推荐榜
  • 国研控股办理美国雪兰多大学留学靠谱吗 - mypinpai
  • 铁岭市英语雅思培训辅导机构推荐:2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 2026年北京海淀专业的大巴包车公司排名,哪家性价比高? - myqiye
  • 2026男士温和洗面奶宝藏清单|油皮/敏肌闭眼入,告别油光紧绷不踩雷 - 品牌测评鉴赏家
  • 2.1 链式法则
  • 2026防脱精华液排名:科学护理,守护健康发丝 - 品牌排行榜
  • 2026年唐山地方菜饭店性价比排名,醋溜遵化大饹馇店上榜 - 工业品网
  • 型男必看!解锁肌肤清爽密码的男士沐浴露合集 - 品牌测评鉴赏家
  • AI证书避雷,需认准官方资质与行业口碑两大核心
  • 2026年有实力的高强度螺丝,压铆螺丝,标准螺丝厂家口碑推荐 - 品牌鉴赏师
  • 铁岭市英语雅思培训辅导机构推荐;2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 铁岭市英语雅思培训辅导机构推荐、2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 含金量高的AI认证,2026最全
  • 2026防脱精华红榜:口碑之选帮你摆脱脱发困扰 - 品牌排行榜
  • 2026年靠谱的注塑件制造商,骄阳橡塑来图定制 - 工业推荐榜
  • 了解启鑫科技基本情况,高性价比压痕条选购有啥技巧? - mypinpai
  • 朝阳市英语雅思培训辅导机构推荐;2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 2026防脱精华液怎么选?从成分到效果的实用指南 - 品牌排行榜
  • 铁岭市英语雅思培训辅导机构推荐/2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育
  • 梳理好用的缠绕膜供应商排名,靠谱制造商推荐 - 工业品牌热点
  • 2026年气力输送公司推荐指南/气力输送设备,气力输送系统,粉体气力输送设备 - 品牌策略师
  • 2026年推荐亲测好用的防脱精华液真实体验 - 品牌排行榜