码字小白菜努力中 2024-03-15 23:46 采纳率: 88%
浏览 5
已结题

用spark分析rdd函数统计数量,但是有些语句能够运行出结果有些却不行,请问怎么解决

分析代码


import os

from pyspark import SparkConf
from pyspark.sql import SparkSession, types
os.environ['PYSPARK_PYTHON'] = "C:\\Users\\Sam\\anaconda3\\python.exe"

if __name__ == '__main__':
    #初始化
    conf = SparkConf().setAppName('work').setMaster('local[*]')
    spark = SparkSession.builder.config(conf=conf).getOrCreate()
    sc = spark.sparkContext
    sc.setLogLevel('WARN')

    #----------苏菲------------------------
    #加载数据
    rdd = sc.textFile('sf01_data.csv')

    #数据清洗  /去除缺失值/去除第一行字段名称/去除重复值
    rdd = rdd.map(lambda x: x.split(','))\
        .filter(lambda x: len(x) == 10)\
        .filter(lambda x: x[0] != "sf_guid")
    #rdd.foreach(print)
    #rdd.saveAsTextFile("./sufei_data")

    #1. 苏菲的评论年份特征-折线图-长    #选取时间这一列并获取年份信息/进行统计个数/通过年份进行排序,更加直观
    print("------------------------")
    print("苏菲的评论日期特征")
    rdd1 = rdd.map(lambda x: (x[3][:4], 1))\
        .reduceByKey(lambda x, y: x + y)\
        .sortByKey()

    rdd1.foreach(print)

    #2. 苏菲的评论时间特征-折线图-长
    print("------------------------")
    print("苏菲的评论时间特征")
    rdd2 = rdd.map(lambda x: ((x[3].split(" ")[1][:2]), 1))\
        .reduceByKey(lambda x,y: x+y)

    rdd2.foreach(print)

    #3.苏菲的评分特征-饼状图-正方形
    print("------------------------")
    print("苏菲的评分特征")
    rdd3 = rdd.map(lambda x: (x[5], 1)).reduceByKey(lambda x,y: x+y)
    rdd3.foreach(print)

    #4. 苏菲的客户端特征-扇形图-小
    print("------------------------")
    print("苏菲的客户端特征")
    rdd4 = rdd.map(lambda x: (x[6], 1)).reduceByKey(lambda x,y: x+y)
    rdd4.foreach(print)

    #5. 苏菲的用户评论地理位置-地理图
    print("------------------------")
    print("苏菲的用户评论地理位置")
    rdd5 = rdd.map(lambda x: (x[9], 1))\
        .reduceByKey(lambda x,y:x+y)\
        .sortBy(lambda x: x[1])
    rdd5.foreach(print)

    #6. 苏菲的产品不同颜色或款式统计-柱状图-长   #有些数据为空需去除/根据销量排序选择top5
    print("------------------------")
    print("苏菲的产品不同颜色或款式统计")
    rdd6 = rdd.map(lambda x: (x[4], 1))\
        .filter(lambda x: x[0] != '')\
        .reduceByKey(lambda x, y: x+y)\
        .sortBy(lambda x: -x[1]).take(5)

    for a in rdd6:
        print(a)

    #7.苏菲的评论周期
    print("------------------------")
    print("苏菲的评论周期")
    rdd7 = rdd.map(lambda x: (x[7], 1))\
        .reduceByKey(lambda x, y: x+y)\
        .sortBy(lambda x: -x[1])\
        .take(10)

    for b in rdd7:
        print(b)

运行结果

------------------------
苏菲的评论日期特征
------------------------
苏菲的评论时间特征
------------------------
苏菲的评分特征
------------------------
苏菲的客户端特征
------------------------
苏菲的用户评论地理位置
------------------------
苏菲的产品不同颜色或款式统计
('精选日夜组合68片', 1070)
('420mm夜用12片【4片/6片随机发】', 979)
('290mm 20片', 958)
('超值日夜组合100片', 836)
('日夜组合86片', 823)
------------------------
苏菲的评论周期
('4', 6078)
('3', 5933)
('5', 5071)
('6', 4668)
('7', 3976)
('2', 3928)
('8', 3452)
('9', 2885)
('1', 2728)
('10', 2481)

sf01_data.csv文件部分数据

img

sf_guid,sf_nickname,sf_content,sf_creationTime,sf_productColor,sf_score,sf_userClient,sf_days,sf_imageCount,sf_location
79dc24f4671602528a3cbe37a8025df8,鬼***鑫,京东物流发货速度快已经买了好多次了质量没问题有保障护舒宝大品牌值得信赖舒适度高透气性好耐用性强性价比很高,2024-02-18 23:08:37,超熟睡裸感肌 290mm 8片,5.0,4.0,31,4.0,北京
37c34f6e2e36f5fb81937c99ab84f2ce,s***7,这款卫生巾老牌子了一直是我信赖的品牌京东太方便了每次都是家里没用的了直接在京东自营店购买去超市的时间都省下来了太幸福了,2024-02-02 07:32:16,超熟睡柔棉感 350mm 8片,5.0,4.0,5,4.0,北京
5d31f15927f0d90cbf68704e76d47ec7,淡***n,平常都是用的护舒宝这次换个牌子试试一次性买了好几包多买就有优惠简直是太划算了而且比超市还便宜些特别喜欢京东的物流真是神速这么冷的天还下着雨还送来了真是喜欢啊,2024-02-21 23:27:39,超熟睡裸感肌 350mm 8片,5.0,4.0,1,3.0,湖北
0512fb700742a611c8d5c55da701a0cc,n***k,包装好物流快价格实惠比超市便宜多了实用性和颜值都非常的赞我很喜欢还会再来买的宝贝收到了质量很不错包装精致材质优秀比想象中好送礼自用非常合适下次继续购买,2024-02-18 22:09:36,超熟睡柔棉感 350mm 8片,5.0,4.0,34,3.0,天津
a295a342b228d68c3b6161970b3dadd5,古***3,好用一直买的品牌质量不错非常好长期回购很好很不错姨妈期量大苏菲不侧漏舒服实用用完再接着买一次囤好多了helliphellip,2024-01-28 17:13:35,柔棉纤巧 420mm 8片,5.0,4.0,11,2.0,贵州
4e69e0f487c719ea067a9952cdcaa0c1,小***a,夜用卫生巾首选苏菲350的长度很有安全感一整夜不怕侧漏睡的安心用的放心推荐给大家有活动价格一定要多囤几包,2024-01-28 13:46:06,超熟睡裸感肌 350mm 8片,5.0,2.0,5,2.0,广东
b071977aa0cbef0663bcfcccda86afcd,爱***E,自己一直用这个品牌透气性很好薄厚适中价格也合理是一款物美价廉值得信赖的大众品牌自认为性价比还算比较高值得信赖的产品,2024-01-28 09:20:02,柔棉纤巧 420mm 8片,5.0,4.0,24,2.0,河北
0b58f5e5e56683c1797c56a434992019,j***6,苏菲大品牌质量有保障就认准这个牌子了绵柔材质的很舒适质量很好用着放心很透气赶上活动买很合适送货也快值得购买,2024-02-01 23:31:11,超熟睡裸感肌 350mm 8片,5.0,4.0,4,2.0,北京
a5845d93f9d448426b84787b5aa47031,j***9,一直都用这个品牌还是很喜欢这款卫生巾的好用还不贵赶上京东搞活动更是很优惠很赞每次赶上京东搞活动都会购买一些京东的到货速度也是很快的一般当天下单转天就到货了,2024-02-06 23:29:08,超熟睡柔棉感 350mm 8片,5.0,2.0,1,3.0,天津
df1af82c1f874dac09ad6d85a98b370b,j***9,非常好用的卫生巾安睡一整晚赶上京东搞活动立刻下单购买很赞而且物流也是很快的一般当天下单转天就到货了还是很赞的不错的购物体验,2024-02-06 23:35:55,超熟睡柔棉感 290mm 10片,5.0,2.0,2,3.0,天津
bc7f361fd38f9994abf389eec0ae75ad,y***8,苏菲卫生巾国际大品牌质量非常好非常舒适而且不会侧漏价廉物美物流及时一次很好的购物体验还会再买,2024-02-09 17:32:24,柔棉纤巧 420mm 8片,5.0,4.0,1,2.0,上海
4b5afcd6da160fd3c277508b5df85894,晨***8,宝贝已经收到很满意质量很好包装精细日期很好价格实惠谢谢卖家谢谢物流谢谢快递员赞赞赞,2024-02-06 14:07:26,超熟睡裸感肌 420mm 8片,5.0,4.0,2,3.0,辽宁
de0507d55ff383773c2c326bb6184c85,硕***弟,很喜欢苏菲自从来这个之后一直都是选择苏菲厚款 薄款 日用 夜用 护垫都是用的苏菲在京东下单也特别快下单的第二天就会直接送到门了非常方便,2024-02-03 20:08:44,超熟睡柔棉感 350mm 8片,5.0,4.0,38,2.0,广东
59d6045cb559feebef9ebbaa8ed8391b,h***y,大品牌值得信赖京东物流也很给力服务很贴心服务很贴心非常不错的一次购物体验可以推荐给身边的朋友下次还会一如既往的支持与回购的,2024-02-15 12:50:09,超熟睡柔棉感 350mm 8片,5.0,2.0,1,2.0,新疆

  • 写回答

2条回答 默认 最新

  • Kwan的解忧杂货铺 2024-03-15 23:49
    关注

    码字小白菜努力中 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    根据您提供的代码和问题描述,我发现您的代码中存在一些问题,导致有些语句无法执行并输出结果。

    具体来说,您的代码中没有对RDD执行action操作的语句。在Spark中,RDD上的转换操作(例如map、filter、reduceByKey等)是惰性求值的,只有当执行action操作(如foreach、collect等)时,才会触发计算并输出结果。

    为了解决这个问题,您可以参考以下解决方案:

    1. 在每个需要输出结果的RDD操作之后,添加一个action操作(如foreach、collect等),以触发计算并输出结果。

    修改后的代码示例:

    # 1. 苏菲的评论年份特征-折线图-长
    print("------------------------")
    print("苏菲的评论日期特征")
    rdd1 = rdd.map(lambda x: (x[3][:4], 1))\
        .reduceByKey(lambda x, y: x + y)\
        .sortByKey()
    
    rdd1.foreach(print)  # 添加action操作
    
    # 2. 苏菲的评论时间特征-折线图-长
    print("------------------------")
    print("苏菲的评论时间特征")
    rdd2 = rdd.map(lambda x: ((x[3].split(" ")[1][:2]), 1))\
        .reduceByKey(lambda x,y: x+y)
    
    rdd2.foreach(print)  # 添加action操作
    
    # ... 其他RDD操作及对应的action操作
    
    
    1. 如果您希望将所有结果一次性输出到控制台或保存到文件中,可以使用collect()方法将所有结果收集到驱动程序中,然后进行遍历输出。

    修改后的代码示例:

    # 1. 苏菲的评论年份特征-折线图-长
    print("------------------------")
    print("苏菲的评论日期特征")
    rdd1 = rdd.map(lambda x: (x[3][:4], 1))\
        .reduceByKey(lambda x, y: x + y)\
        .sortByKey()
    
    result1 = rdd1.collect()  # 收集结果到驱动程序
    for record in result1:
        print(record)
    
    # 2. 苏菲的评论时间特征-折线图-长
    print("------------------------")
    print("苏菲的评论时间特征")
    rdd2 = rdd.map(lambda x: ((x[3].split(" ")[1][:2]), 1))\
        .reduceByKey(lambda x,y: x+y)
    
    result2 = rdd2.collect()  # 收集结果到驱动程序
    for record in result2:
        print(record)
    
    # ... 其他RDD操作及对应的结果收集和遍历输出操作
    
    

    综上所述,您可以按照上述两种方式之一来修改代码,以便正确执行并输出结果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月16日
  • 已采纳回答 3月16日
  • 修改了问题 3月15日
  • 修改了问题 3月15日
  • 展开全部

悬赏问题

  • ¥30 为什么会失败呢,该如何调整
  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析