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

用py做网站写wordpress

用py做网站,写wordpress,自助众筹网站建设,网站访客分析作业03-SparkSQL开发一、数据读取与转换操作从HDFS路径/dw/accounts读取accounts数据文件,并选取id、address(第6列)字段,创建DataFrame,名为acctdf(字段名分别为userid、address)。val acct s…

作业03-SparkSQL开发


一、数据读取与转换操作

  1. 从HDFS路径/dw/accounts读取accounts数据文件,并选取id、address(第6列)字段,创建DataFrame,名为acctdf(字段名分别为userid、address)。
val acct = sc.textFile("/dw/accounts/*")val acctdf = acctRDD.map(line => {val fields = line.split(",")(fields(0), fields(5)) // 提取id和address
}).toDF("userid", "address")acctdf.printSchema()
acctdf.show(2)

从HDFS路径/dw/accounts/读取所有文件,创建RDD[String]
每行是一个字符串,代表一条账户记录对每条记录进行映射转换:
使用,分割字符串
提取第1个字段(id)和第6个字段(address)首先输入的是line,经过split被分割程数组fields
再将fields(0)当做key,fields(5)当做value输出为一个pairRdd将RDD转换为DataFrame,并命名列名为"userid"和"address"
在调用 toDF() 之后,它就变成了一个普通的DataFrame,不再保留键值对的特性。

    转换过程:第一行: "1,2008-10-23...,2275 Washburn Street,..."
    split(",") → Array("1", "2008-10-23...", ..., "2275 Washburn Street", ...)
    取第0个和第5个元素 → ("1", "2275 Washburn Street")
    1. 上传日志数据$DATA_EXERCISE/weblogs到HDFS的/dw/weblogs目录,从HDFS路径/dw/weblogs读取日志数据,提取用户id(第3个字段),统计每个用户的请求次数,生成(userid, reqs)的RDD。
    2. 将上述RDD转换为DataFrame,名为userdf,字段名为userid、reqs。
    // 2. 处理weblogs数据,创建userdf DataFrame
    val logsRDD = sc.textFile("/dw/weblogs")
    // 提取用户id(第3个字段)并统计每个用户的请求次数
    val userReqRDD = logsRDD.map(line => {val fields = line.split(" ")(fields(2), 1) // (userid, 1)
    }).reduceByKey(_ + _) // 按userid聚合计算总请求数// 将RDD转换为DataFrame
    val userdf = spark.createDataFrame(userReqRDD.map{case (userid, reqs) => Row(userid, reqs)}, StructType(Seq(StructField("userid", StringType, false),StructField("reqs", IntegerType, false)))// 显示userdf结构
    userdf.printSchema()
    userdf.show(2)
    对每条日志记录进行映射转换:
    使用空格分割字符串
    提取第3个字段(userid)作为键,值为1
    使用reduceByKey对相同userid的记录进行求和,得到每个用户的总请求数map 操作:
    输入:logsRDD 的每一行 line(假设是日志字符串)
    对每行按空格分割成数组 fields
    提取 fields(2) 作为 key(假设是 userid),1 作为 value
    → 生成一个 PairRDD[(String, Int)],形式为 (userid, 1)
    reduceByKey 操作:
    对相同 userid(key)的所有 1(value)进行求和(_ + _)
    → 最终得到每个 userid 的总请求次数,形式为 (userid, total_requests)
    结果:
    userReqRDD 是一个不可变的 PairRDD,内容为 (userid, 总请求数)。将RDD转换为DataFrame:
    使用Row对象封装每行数据
    定义Schema:userid(字符串类型,非空)和reqs(整数类型,非空)map{case (userid, reqs) => Row(userid, reqs)}
    对 userReqRDD 的每个键值对进行映射,将 (userid, reqs) 转换为 Spark 的 Row 对象。
    Row 是 DataFrame 中一行数据的容器,类似于数据库中的一行记录。
    例如:("user1", 5) → Row("user1", 5)

    代码的等价简化写法

    如果觉得 Row 和 StructType 的写法较复杂,可以用更简洁的方式实现相同功能:

    val userdf = userReqRDD.toDF("userid", "reqs")

    转换过程:
    第一行: "34.28.1.122 - 65255 [01/Mar/2014..."
    split(" ") → Array("34.28.1.122", "-", "65255", "[01/Mar/2014...", ...)
    取第2个元素 → ("65255", 1)
    对相同userid的值求和 → ("65255", 2)

    提示:

    使用spark.createDataFrame实现将RDD转换为DataFrame

    使用toDF来更名


    二、数据关联与分析操作

    1. 将userdf与acctdf按用户id进行关联,生成包含userid、reqs、address字段的新DataFrame。
    2. 对关联结果进行过滤,仅保留请求次数大于5次的用户。
    3. 按照reqs字段降序排列并显示出前10行数据
    // 1. 关联两个 DataFrame
    val joinedDF = userdf.join(acctdf, "userid")// 2. 过滤请求次数 > 5 的用户
    val filteredDF = joinedDF.filter("reqs > 5")// 3. 按 reqs 降序排序,并显示前 10 行
    val resultDF = filteredDF.orderBy($"reqs".desc).limit(10)
    resultDF.show()


    http://www.dtcms.com/a/613808.html

    相关文章:

  1. 12. C语言高级编程-内存管理(2)
  2. 【复习】计网每日一题1115---IPv6地址的简洁表示、::
  3. RHCSA做项目:基于LAMP环境搭建Web应用(Discuz!论坛)的基础环境与部署流程
  4. 南昌网站搭建公司 赣ICP温州排名推广
  5. 前端使用TensorFlow.js reactjs调用本地模型 实现图像、文本、音频/声音、视频相关识别
  6. 香蕉派 BPI-2K3000 工业计算机开发板采用龙芯2K3000芯片设计
  7. C语言-数据结构-单链表程序-增删改查
  8. vip广告网站建设摄影网站开题报告
  9. 进程概念(上)
  10. 网络水果有哪些网站可以做中国国家人事人才培训网
  11. 开启智能未来之门:华为HCIA-AI认证培训与考试全方位深度解析
  12. 记事本源代码分析ALT+F4调试记录详细分析
  13. 【Java基础07】链表
  14. DDL数据
  15. 北京驾校网站建设方一凡和磊儿做家教的网站
  16. 电的帝国与时空的编程:从基础属性到人工场革命的宏伟蓝图
  17. C语言入门(十七):指针(3)
  18. 共绩算力全面研究报告:破解算力 “不可能三角“ 的创新实践
  19. 网络:5.应用层协议HTTP
  20. python 要如何快速拥有可用python的编程能力
  21. 网站跳出率房地产的未来趋势分析
  22. 家庭网络建站广告设计公司服务不到位
  23. SAP FICO工单成本分析报表
  24. 破解版网站建设营销运营推广服务
  25. 告别“在我电脑上能跑”:Docker入门与核心概念解析
  26. 2. YOLOv5 搭建一个完整的目标检测系统核心步骤
  27. discuz培训网站模板下载wordpress直接显示文章
  28. R语言编程基础与应用 | 探索数据分析的无限可能
  29. 北京网站设计网站设计公司价格工商做年报网站
  30. 商丘网站建设网站推广镇江做网站的