{"id":55205,"date":"2025-08-13T19:14:53","date_gmt":"2025-08-13T11:14:53","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/55205.html"},"modified":"2025-08-13T19:14:53","modified_gmt":"2025-08-13T11:14:53","slug":"%e5%90%8c%e6%a0%b7%e6%98%af%e8%ae%a1%e7%ae%97%e6%9c%ba%e6%af%95%e8%ae%be%ef%bc%9a%e4%b8%ba%e4%bb%80%e4%b9%88%e4%bb%96%e7%9a%84%e5%8c%bb%e5%ad%a6%e7%94%9f%e5%81%a5%e5%ba%b7%e6%95%b0%e6%8d%ae%e5%88%86","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/55205.html","title":{"rendered":"\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f"},"content":{"rendered":"<p>&#x1f496;&#x1f496;\u4f5c\u8005&#xff1a;\u8ba1\u7b97\u673a\u6bd5\u4e1a\u8bbe\u8ba1\u5c0f\u9014 &#x1f499;&#x1f499;\u4e2a\u4eba\u7b80\u4ecb&#xff1a;\u66fe\u957f\u671f\u4ece\u4e8b\u8ba1\u7b97\u673a\u4e13\u4e1a\u57f9\u8bad\u6559\u5b66&#xff0c;\u672c\u4eba\u4e5f\u70ed\u7231\u4e0a\u8bfe\u6559\u5b66&#xff0c;\u8bed\u8a00\u64c5\u957fJava\u3001\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u3001Python\u3001Golang\u3001\u5b89\u5353Android\u7b49&#xff0c;\u5f00\u53d1\u9879\u76ee\u5305\u62ec\u5927\u6570\u636e\u3001\u6df1\u5ea6\u5b66\u4e60\u3001\u7f51\u7ad9\u3001\u5c0f\u7a0b\u5e8f\u3001\u5b89\u5353\u3001\u7b97\u6cd5\u3002\u5e73\u5e38\u4f1a\u505a\u4e00\u4e9b\u9879\u76ee\u5b9a\u5236\u5316\u5f00\u53d1\u3001\u4ee3\u7801\u8bb2\u89e3\u3001\u7b54\u8fa9\u6559\u5b66\u3001\u6587\u6863\u7f16\u5199\u3001\u4e5f\u61c2\u4e00\u4e9b\u964d\u91cd\u65b9\u9762\u7684\u6280\u5de7\u3002\u5e73\u5e38\u559c\u6b22\u5206\u4eab\u4e00\u4e9b\u81ea\u5df1\u5f00\u53d1\u4e2d\u9047\u5230\u7684\u95ee\u9898\u7684\u89e3\u51b3\u529e\u6cd5&#xff0c;\u4e5f\u559c\u6b22\u4ea4\u6d41\u6280\u672f&#xff0c;\u5927\u5bb6\u6709\u6280\u672f\u4ee3\u7801\u8fd9\u4e00\u5757\u7684\u95ee\u9898\u53ef\u4ee5\u95ee\u6211&#xff01; &#x1f49b;&#x1f49b;\u60f3\u8bf4\u7684\u8bdd&#xff1a;\u611f\u8c22\u5927\u5bb6\u7684\u5173\u6ce8\u4e0e\u652f\u6301&#xff01; &#x1f49c;&#x1f49c; \u7f51\u7ad9\u5b9e\u6218\u9879\u76ee \u5b89\u5353\/\u5c0f\u7a0b\u5e8f\u5b9e\u6218\u9879\u76ee \u5927\u6570\u636e\u5b9e\u6218\u9879\u76ee \u6df1\u5ea6\u5b66\u4e60\u5b9e\u6218\u9879\u76ee<\/p>\n<\/p>\n<h4>\u76ee\u5f55<\/h4>\n<ul>\n<li>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u4ecb\u7ecd<\/li>\n<li>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u6f14\u793a\u89c6\u9891<\/li>\n<li>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u6f14\u793a\u56fe\u7247<\/li>\n<li>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u4ee3\u7801\u5c55\u793a<\/li>\n<li>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u6587\u6863\u5c55\u793a<\/li>\n<\/ul>\n<h2>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u4ecb\u7ecd<\/h2>\n<p>\u57fa\u4e8e\u5927\u6570\u636e\u7684\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u662f\u4e00\u5957\u91c7\u7528\u5148\u8fdb\u5927\u6570\u636e\u6280\u672f\u6808\u5f00\u53d1\u7684\u7efc\u5408\u6027\u5065\u5eb7\u6570\u636e\u5206\u6790\u5e73\u53f0&#xff0c;\u8be5\u7cfb\u7edf\u4ee5Hadoop\u5206\u5e03\u5f0f\u5b58\u50a8\u6846\u67b6\u548cSpark\u5927\u6570\u636e\u5904\u7406\u5f15\u64ce\u4e3a\u6838\u5fc3\u6280\u672f\u652f\u6491&#xff0c;\u7ed3\u5408Python\u6570\u636e\u79d1\u5b66\u5e93Pandas\u3001NumPy\u8fdb\u884c\u6df1\u5ea6\u6570\u636e\u6316\u6398\u4e0e\u5206\u6790\u5904\u7406\u3002\u7cfb\u7edf\u540e\u7aef\u91c7\u7528Django\u6846\u67b6\u6784\u5efa\u7a33\u5b9a\u7684\u6570\u636e\u670d\u52a1\u5c42&#xff0c;\u524d\u7aef\u8fd0\u7528Vue.js\u7ed3\u5408ElementUI\u7ec4\u4ef6\u5e93\u548cEcharts\u53ef\u89c6\u5316\u56fe\u8868\u5e93\u6253\u9020\u76f4\u89c2\u53cb\u597d\u7684\u7528\u6237\u4ea4\u4e92\u754c\u9762&#xff0c;\u6570\u636e\u6301\u4e45\u5316\u5b58\u50a8\u57fa\u4e8eMySQL\u5173\u7cfb\u578b\u6570\u636e\u5e93\u5b9e\u73b0\u3002\u7cfb\u7edf\u529f\u80fd\u6db5\u76d6\u5b8c\u6574\u7684\u7528\u6237\u7ba1\u7406\u4f53\u7cfb&#xff0c;\u5305\u62ec\u4e2a\u4eba\u4fe1\u606f\u7ef4\u62a4\u3001\u5bc6\u7801\u4fee\u6539\u7b49\u57fa\u7840\u529f\u80fd\u6a21\u5757&#xff0c;\u6838\u5fc3\u4e1a\u52a1\u805a\u7126\u4e8e\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u7684\u5168\u65b9\u4f4d\u5206\u6790&#xff0c;\u5177\u4f53\u5b9e\u73b0\u4e86\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u7ba1\u7406\u3001\u5026\u6020\u5171\u60c5\u80fd\u529b\u6df1\u5ea6\u5206\u6790\u3001\u4eba\u53e3\u5b66\u7279\u5f81\u7edf\u8ba1\u5206\u6790\u3001\u91cd\u70b9\u7fa4\u4f53\u7cbe\u51c6\u753b\u50cf\u5206\u6790\u3001\u5fc3\u7406\u5065\u5eb7\u79d1\u5b66\u8bc4\u4f30\u5206\u6790\u4ee5\u53ca\u5b66\u4e1a\u5065\u5eb7\u5173\u8054\u6027\u7814\u7a76\u5206\u6790\u7b49\u516d\u5927\u4e13\u4e1a\u5206\u6790\u6a21\u5757\u3002\u7cfb\u7edf\u8fd8\u914d\u5907\u4e86\u5927\u5c4f\u53ef\u89c6\u5316\u5c55\u793a\u529f\u80fd&#xff0c;\u901a\u8fc7\u4e30\u5bcc\u7684\u56fe\u8868\u5f62\u5f0f\u76f4\u89c2\u5448\u73b0\u5206\u6790\u7ed3\u679c&#xff0c;\u5229\u7528Hadoop HDFS\u5206\u5e03\u5f0f\u6587\u4ef6\u7cfb\u7edf\u786e\u4fdd\u6d77\u91cf\u5065\u5eb7\u6570\u636e\u7684\u5b89\u5168\u5b58\u50a8&#xff0c;\u901a\u8fc7Spark SQL\u5b9e\u73b0\u9ad8\u6548\u7684\u6570\u636e\u67e5\u8be2\u4e0e\u7edf\u8ba1\u5206\u6790&#xff0c;\u4e3a\u533b\u5b66\u9662\u6821\u63d0\u4f9b\u79d1\u5b66\u7684\u5b66\u751f\u5065\u5eb7\u72b6\u51b5\u76d1\u6d4b\u4e0e\u8bc4\u4f30\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n<h2>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u6f14\u793a\u89c6\u9891<\/h2>\n<\/p>\n<p>\u57fa\u4e8e\u5927\u6570\u636e\u7684\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf<\/p>\n<\/p>\n<h2>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u6f14\u793a\u56fe\u7247<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111444-689c73a472e2c.png\" alt=\"\u767b\u9646\u754c\u9762\" \/> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111445-689c73a586743.png\" alt=\"\u7528\u6237\u7ba1\u7406\" \/> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111446-689c73a63b8c3.png\" alt=\"\u5026\u6020\u5171\u60c5\u80fd\u529b\u5206\u6790\" \/> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111447-689c73a711b65.png\" alt=\"\u4eba\u53e3\u7279\u5f81\u5206\u6790\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111447-689c73a7d83ef.png\" alt=\"\u6570\u636e\u5927\u5c4f\" \/> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111448-689c73a8bb4d3.png\" alt=\"\u5fc3\u7406\u5065\u5eb7\u8bc4\u4f30\u5206\u6790\" \/> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111449-689c73a9833cc.png\" alt=\"\u5b66\u4e1a\u5065\u5eb7\u5173\u8054\u5206\u6790\" \/> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111450-689c73aa510a4.png\" alt=\"\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u7ba1\u7406\" \/> <img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111451-689c73ab21ff5.png\" alt=\"\u91cd\u70b9\u7fa4\u4f53\u753b\u50cf\u5206\u6790\" \/><\/p>\n<h2>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u4ee3\u7801\u5c55\u793a<\/h2>\n<p># \u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u7ba1\u7406\u6838\u5fc3\u529f\u80fd<\/p>\n<p>def <span class=\"token function\">manage_health_data<\/span><span class=\"token punctuation\">(<\/span>request<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><\/p>\n<p>    health_data <span class=\"token operator\">&#061;<\/span> request<span class=\"token punctuation\">.<\/span><span class=\"token constant\">POST<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>&#039;health_data&#039;<span class=\"token punctuation\">)<\/span><\/p>\n<p>    student_id <span class=\"token operator\">&#061;<\/span> request<span class=\"token punctuation\">.<\/span><span class=\"token constant\">POST<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>&#039;student_id&#039;<span class=\"token punctuation\">)<\/span><\/p>\n<p>    assessment_date <span class=\"token operator\">&#061;<\/span> request<span class=\"token punctuation\">.<\/span><span class=\"token constant\">POST<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>&#039;assessment_date&#039;<span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u6570\u636e\u9884\u5904\u7406\u548c\u6e05\u6d17<\/p>\n<p>    df <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\"><span class=\"token namespace\">pd<span class=\"token punctuation\">.<\/span><\/span>DataFrame<\/span><span class=\"token punctuation\">(<\/span>json<span class=\"token punctuation\">.<\/span><span class=\"token function\">loads<\/span><span class=\"token punctuation\">(<\/span>health_data<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    df<span class=\"token punctuation\">[<\/span><span class=\"token char\">&#039;bmi&#039;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> df<span class=\"token punctuation\">[<\/span><span class=\"token char\">&#039;weight&#039;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span><span class=\"token char\">&#039;height&#039;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span><span class=\"token operator\">*<\/span> <span class=\"token number\">2<\/span><\/p>\n<p>    df<span class=\"token punctuation\">[<\/span>&#039;health_score&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span>&#039;physical_score&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">0.4<\/span> <span class=\"token operator\">&#043;<\/span> df<span class=\"token punctuation\">[<\/span>&#039;mental_score&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">0.6<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    df <span class=\"token operator\">&#061;<\/span> df<span class=\"token punctuation\">.<\/span><span class=\"token function\">dropna<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u4f7f\u7528<span class=\"token class-name\">Spark<\/span> <span class=\"token constant\">SQL<\/span>\u8fdb\u884c\u6570\u636e\u5206\u6790<\/p>\n<p>    spark_df <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">createDataFrame<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">)<\/span><\/p>\n<p>    spark_df<span class=\"token punctuation\">.<\/span><span class=\"token function\">createOrReplaceTempView<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;health_records&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    analysis_result <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">sql<\/span><span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<\/p>\n<p>        SELECT student_id, <\/p>\n<p>               AVG(health_score) as avg_health_score,<\/p>\n<p>               MAX(health_score) as max_health_score,<\/p>\n<p>               MIN(health_score) as min_health_score,<\/p>\n<p>               COUNT(*) as record_count<\/p>\n<p>        FROM health_records <\/p>\n<p>        WHERE assessment_date &gt;&#061; date_sub(current_date(), 90)<\/p>\n<p>        GROUP BY student_id<\/p>\n<p>    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u5065\u5eb7\u7b49\u7ea7\u8bc4\u4f30\u7b97\u6cd5<\/p>\n<p>    <span class=\"token keyword\">for<\/span> <span class=\"token keyword\">record<\/span> in analysis_result<span class=\"token operator\">:<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> record<span class=\"token punctuation\">.<\/span>avg_health_score <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">80<\/span><span class=\"token operator\">:<\/span><\/p>\n<p>            health_level <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u4f18\u79c0&#034;<\/span><\/p>\n<p>        elif record<span class=\"token punctuation\">.<\/span>avg_health_score <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">70<\/span><span class=\"token operator\">:<\/span><\/p>\n<p>            health_level <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u826f\u597d&#034;<\/span><\/p>\n<p>        elif record<span class=\"token punctuation\">.<\/span>avg_health_score <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">60<\/span><span class=\"token operator\">:<\/span><\/p>\n<p>            health_level <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u4e00\u822c&#034;<\/span><\/p>\n<p>        <span class=\"token keyword\">else<\/span><span class=\"token operator\">:<\/span><\/p>\n<p>            health_level <span class=\"token operator\">&#061;<\/span> <span class=\"token string\">&#034;\u9700\u5173\u6ce8&#034;<\/span><\/p>\n<p>    # \u6570\u636e\u5b58\u50a8\u5230<span class=\"token class-name\">HDFS<\/span><\/p>\n<p>    hdfs_path <span class=\"token operator\">&#061;<\/span> f<span class=\"token string\">&#034;\/health_data\/{student_id}_{assessment_date}.json&#034;<\/span><\/p>\n<p>    health_record <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><\/p>\n<p>        &#039;student_id&#039;<span class=\"token operator\">:<\/span> student_id<span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;health_data&#039;<span class=\"token operator\">:<\/span> df<span class=\"token punctuation\">.<\/span><span class=\"token function\">to_dict<\/span><span class=\"token punctuation\">(<\/span>&#039;records&#039;<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;analysis_result&#039;<span class=\"token operator\">:<\/span> <span class=\"token punctuation\">[<\/span>row<span class=\"token punctuation\">.<\/span><span class=\"token function\">asDict<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> row in analysis_result<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;health_level&#039;<span class=\"token operator\">:<\/span> health_level<span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;created_at&#039;<span class=\"token operator\">:<\/span> datetime<span class=\"token punctuation\">.<\/span><span class=\"token function\">now<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">isoformat<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    # \u4fdd\u5b58\u5230<span class=\"token class-name\">MySQL<\/span>\u6570\u636e\u5e93<\/p>\n<p>    <span class=\"token class-name\">HealthRecord<\/span><span class=\"token punctuation\">.<\/span>objects<span class=\"token punctuation\">.<\/span><span class=\"token function\">create<\/span><span class=\"token punctuation\">(<\/span><\/p>\n<p>        student_id<span class=\"token operator\">&#061;<\/span>student_id<span class=\"token punctuation\">,<\/span><\/p>\n<p>        health_score<span class=\"token operator\">&#061;<\/span>record<span class=\"token punctuation\">.<\/span>avg_health_score<span class=\"token punctuation\">,<\/span><\/p>\n<p>        health_level<span class=\"token operator\">&#061;<\/span>health_level<span class=\"token punctuation\">,<\/span><\/p>\n<p>        assessment_date<span class=\"token operator\">&#061;<\/span>assessment_date<span class=\"token punctuation\">,<\/span><\/p>\n<p>        data_path<span class=\"token operator\">&#061;<\/span>hdfs_path<\/p>\n<p>    <span class=\"token punctuation\">)<\/span><\/p>\n<p># \u5fc3\u7406\u5065\u5eb7\u8bc4\u4f30\u5206\u6790\u6838\u5fc3\u529f\u80fd<\/p>\n<p>def <span class=\"token function\">psychological_health_analysis<\/span><span class=\"token punctuation\">(<\/span>request<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><\/p>\n<p>    student_ids <span class=\"token operator\">&#061;<\/span> request<span class=\"token punctuation\">.<\/span><span class=\"token constant\">POST<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">getlist<\/span><span class=\"token punctuation\">(<\/span>&#039;student_ids&#039;<span class=\"token punctuation\">)<\/span><\/p>\n<p>    analysis_period <span class=\"token operator\">&#061;<\/span> request<span class=\"token punctuation\">.<\/span><span class=\"token constant\">POST<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span><span class=\"token char\">&#039;period&#039;<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">30<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u4ece\u6570\u636e\u5e93\u83b7\u53d6\u5fc3\u7406\u5065\u5eb7\u6570\u636e<\/p>\n<p>    psychological_data <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">PsychologicalRecord<\/span><span class=\"token punctuation\">.<\/span>objects<span class=\"token punctuation\">.<\/span><span class=\"token function\">filter<\/span><span class=\"token punctuation\">(<\/span><\/p>\n<p>        student_id__in<span class=\"token operator\">&#061;<\/span>student_ids<span class=\"token punctuation\">,<\/span><\/p>\n<p>        created_at__gte<span class=\"token operator\">&#061;<\/span>timezone<span class=\"token punctuation\">.<\/span><span class=\"token function\">now<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> <span class=\"token function\">timedelta<\/span><span class=\"token punctuation\">(<\/span>days<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">(<\/span>analysis_period<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">values<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    df <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\"><span class=\"token namespace\">pd<span class=\"token punctuation\">.<\/span><\/span>DataFrame<\/span><span class=\"token punctuation\">(<\/span>psychological_data<span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u5fc3\u7406\u5065\u5eb7\u6307\u6807\u8ba1\u7b97<\/p>\n<p>    df<span class=\"token punctuation\">[<\/span>&#039;anxiety_index&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span>&#039;anxiety_score&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#8211;<\/span> df<span class=\"token punctuation\">[<\/span>&#039;anxiety_score&#039;<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">mean<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> df<span class=\"token punctuation\">[<\/span>&#039;anxiety_score&#039;<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">std<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    df<span class=\"token punctuation\">[<\/span>&#039;depression_index&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span>&#039;depression_score&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#8211;<\/span> df<span class=\"token punctuation\">[<\/span>&#039;depression_score&#039;<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">mean<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> df<span class=\"token punctuation\">[<\/span>&#039;depression_score&#039;<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">std<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    df<span class=\"token punctuation\">[<\/span>&#039;stress_index&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span>&#039;stress_score&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#8211;<\/span> df<span class=\"token punctuation\">[<\/span>&#039;stress_score&#039;<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">mean<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> df<span class=\"token punctuation\">[<\/span>&#039;stress_score&#039;<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">std<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    df<span class=\"token punctuation\">[<\/span>&#039;comprehensive_index&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">[<\/span>&#039;anxiety_index&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> df<span class=\"token punctuation\">[<\/span>&#039;depression_index&#039;<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;<\/span> df<span class=\"token punctuation\">[<\/span>&#039;stress_index&#039;<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">3<\/span><\/p>\n<p>    # \u4f7f\u7528<span class=\"token class-name\">Spark<\/span>\u8fdb\u884c\u6df1\u5ea6\u5206\u6790<\/p>\n<p>    spark_df <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">createDataFrame<\/span><span class=\"token punctuation\">(<\/span>df<span class=\"token punctuation\">)<\/span><\/p>\n<p>    spark_df<span class=\"token punctuation\">.<\/span><span class=\"token function\">createOrReplaceTempView<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;psychological_records&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    correlation_analysis <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">sql<\/span><span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<\/p>\n<p>        SELECT <\/p>\n<p>            corr(anxiety_score, depression_score) as anxiety_depression_corr,<\/p>\n<p>            corr(stress_score, academic_performance) as stress_performance_corr,<\/p>\n<p>            corr(sleep_quality, comprehensive_index) as sleep_mental_corr,<\/p>\n<p>            percentile_approx(comprehensive_index, 0.25) as q1_index,<\/p>\n<p>            percentile_approx(comprehensive_index, 0.75) as q3_index<\/p>\n<p>        FROM psychological_records<\/p>\n<p>    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>    # \u98ce\u9669\u7b49\u7ea7\u8bc4\u4f30<\/p>\n<p>    risk_assessment <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">sql<\/span><span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<\/p>\n<p>        SELECT student_id,<\/p>\n<p>               CASE <\/p>\n<p>                   WHEN comprehensive_index &gt; 1.5 THEN &#039;\u9ad8\u98ce\u9669&#039;<\/p>\n<p>                   WHEN comprehensive_index &gt; 0.5 THEN &#039;\u4e2d\u7b49\u98ce\u9669&#039;<\/p>\n<p>                   WHEN comprehensive_index &gt; -0.5 THEN &#039;\u8f7b\u5fae\u98ce\u9669&#039;<\/p>\n<p>                   ELSE &#039;\u6b63\u5e38&#039;<\/p>\n<p>               END as risk_level,<\/p>\n<p>               comprehensive_index<\/p>\n<p>        FROM psychological_records<\/p>\n<p>        ORDER BY comprehensive_index DESC<\/p>\n<p>    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u9884\u8b66\u673a\u5236<\/p>\n<p>    high_risk_students <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><\/p>\n<p>    <span class=\"token keyword\">for<\/span> student in risk_assessment<span class=\"token operator\">:<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> student<span class=\"token punctuation\">.<\/span>risk_level <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token char\">&#039;\u9ad8\u98ce\u9669&#039;<\/span><span class=\"token operator\">:<\/span><\/p>\n<p>            high_risk_students<span class=\"token punctuation\">.<\/span><span class=\"token function\">append<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span><\/p>\n<p>                &#039;student_id&#039;<span class=\"token operator\">:<\/span> student<span class=\"token punctuation\">.<\/span>student_id<span class=\"token punctuation\">,<\/span><\/p>\n<p>                &#039;risk_score&#039;<span class=\"token operator\">:<\/span> student<span class=\"token punctuation\">.<\/span>comprehensive_index<span class=\"token punctuation\">,<\/span><\/p>\n<p>                &#039;alert_time&#039;<span class=\"token operator\">:<\/span> datetime<span class=\"token punctuation\">.<\/span><span class=\"token function\">now<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>            # \u89e6\u53d1\u9884\u8b66\u901a\u77e5<\/p>\n<p>            <span class=\"token class-name\">PsychologicalAlert<\/span><span class=\"token punctuation\">.<\/span>objects<span class=\"token punctuation\">.<\/span><span class=\"token function\">create<\/span><span class=\"token punctuation\">(<\/span><\/p>\n<p>                student_id<span class=\"token operator\">&#061;<\/span>student<span class=\"token punctuation\">.<\/span>student_id<span class=\"token punctuation\">,<\/span><\/p>\n<p>                alert_type<span class=\"token operator\">&#061;<\/span>&#039;\u5fc3\u7406\u5065\u5eb7\u9ad8\u98ce\u9669&#039;<span class=\"token punctuation\">,<\/span><\/p>\n<p>                risk_score<span class=\"token operator\">&#061;<\/span>student<span class=\"token punctuation\">.<\/span>comprehensive_index<span class=\"token punctuation\">,<\/span><\/p>\n<p>                alert_status<span class=\"token operator\">&#061;<\/span><span class=\"token char\">&#039;\u5f85\u5904\u7406&#039;<\/span><\/p>\n<p>            <span class=\"token punctuation\">)<\/span><\/p>\n<p># \u5927\u5c4f\u53ef\u89c6\u5316\u6570\u636e\u5904\u7406\u6838\u5fc3\u529f\u80fd<\/p>\n<p>def <span class=\"token function\">dashboard_visualization_data<\/span><span class=\"token punctuation\">(<\/span>request<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><\/p>\n<p>    time_range <span class=\"token operator\">&#061;<\/span> request<span class=\"token punctuation\">.<\/span><span class=\"token constant\">GET<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>&#039;time_range<span class=\"token char\">&#039;, &#039;<\/span><span class=\"token number\">30<\/span>&#039;<span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u83b7\u53d6\u603b\u4f53\u5065\u5eb7\u6570\u636e\u7edf\u8ba1<\/p>\n<p>    total_students <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">HealthRecord<\/span><span class=\"token punctuation\">.<\/span>objects<span class=\"token punctuation\">.<\/span><span class=\"token function\">filter<\/span><span class=\"token punctuation\">(<\/span><\/p>\n<p>        created_at__gte<span class=\"token operator\">&#061;<\/span>timezone<span class=\"token punctuation\">.<\/span><span class=\"token function\">now<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> <span class=\"token function\">timedelta<\/span><span class=\"token punctuation\">(<\/span>days<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">(<\/span>time_range<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">values<\/span><span class=\"token punctuation\">(<\/span>&#039;student_id&#039;<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">distinct<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">count<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    health_distribution <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">HealthRecord<\/span><span class=\"token punctuation\">.<\/span>objects<span class=\"token punctuation\">.<\/span><span class=\"token function\">filter<\/span><span class=\"token punctuation\">(<\/span><\/p>\n<p>        created_at__gte<span class=\"token operator\">&#061;<\/span>timezone<span class=\"token punctuation\">.<\/span><span class=\"token function\">now<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> <span class=\"token function\">timedelta<\/span><span class=\"token punctuation\">(<\/span>days<span class=\"token operator\">&#061;<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">(<\/span>time_range<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">values<\/span><span class=\"token punctuation\">(<\/span>&#039;health_level&#039;<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">annotate<\/span><span class=\"token punctuation\">(<\/span>count<span class=\"token operator\">&#061;<\/span><span class=\"token class-name\">Count<\/span><span class=\"token punctuation\">(<\/span><span class=\"token char\">&#039;id&#039;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u4f7f\u7528<span class=\"token class-name\">Spark<\/span>\u8fdb\u884c\u590d\u6742\u6570\u636e\u805a\u5408<\/p>\n<p>    health_df <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\"><span class=\"token namespace\">pd<span class=\"token punctuation\">.<\/span><\/span>DataFrame<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">HealthRecord<\/span><span class=\"token punctuation\">.<\/span>objects<span class=\"token punctuation\">.<\/span><span class=\"token function\">all<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">values<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    spark_health_df <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">createDataFrame<\/span><span class=\"token punctuation\">(<\/span>health_df<span class=\"token punctuation\">)<\/span><\/p>\n<p>    spark_health_df<span class=\"token punctuation\">.<\/span><span class=\"token function\">createOrReplaceTempView<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;all_health_records&#034;<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u5065\u5eb7\u8d8b\u52bf\u5206\u6790<\/p>\n<p>    trend_analysis <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">sql<\/span><span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<\/p>\n<p>        SELECT <\/p>\n<p>            date_format(assessment_date, &#039;yyyy-MM&#039;) as month,<\/p>\n<p>            AVG(health_score) as avg_score,<\/p>\n<p>            COUNT(*) as record_count,<\/p>\n<p>            COUNT(DISTINCT student_id) as student_count<\/p>\n<p>        FROM all_health_records<\/p>\n<p>        WHERE assessment_date &gt;&#061; date_sub(current_date(), 365)<\/p>\n<p>        GROUP BY date_format(assessment_date, &#039;yyyy-MM&#039;)<\/p>\n<p>        ORDER BY month<\/p>\n<p>    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u4e13\u4e1a\u7ef4\u5ea6\u5065\u5eb7\u5206\u6790<\/p>\n<p>    major_analysis <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">sql<\/span><span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<\/p>\n<p>        SELECT <\/p>\n<p>            major,<\/p>\n<p>            AVG(health_score) as avg_health_score,<\/p>\n<p>            AVG(physical_score) as avg_physical_score,<\/p>\n<p>            AVG(mental_score) as avg_mental_score,<\/p>\n<p>            COUNT(*) as total_records<\/p>\n<p>        FROM all_health_records hr<\/p>\n<p>        JOIN students s ON hr.student_id &#061; s.id<\/p>\n<p>        GROUP BY major<\/p>\n<p>        ORDER BY avg_health_score DESC<\/p>\n<p>    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u5e74\u7ea7\u5bf9\u6bd4\u5206\u6790<\/p>\n<p>    grade_comparison <span class=\"token operator\">&#061;<\/span> spark<span class=\"token punctuation\">.<\/span><span class=\"token function\">sql<\/span><span class=\"token punctuation\">(<\/span><span class=\"token triple-quoted-string string\">&#034;&#034;&#034;<\/p>\n<p>        SELECT <\/p>\n<p>            grade,<\/p>\n<p>            health_level,<\/p>\n<p>            COUNT(*) as count,<\/p>\n<p>            ROUND(COUNT(*) * 100.0 \/ SUM(COUNT(*)) OVER (PARTITION BY grade), 2) as percentage<\/p>\n<p>        FROM all_health_records hr<\/p>\n<p>        JOIN students s ON hr.student_id &#061; s.id<\/p>\n<p>        GROUP BY grade, health_level<\/p>\n<p>        ORDER BY grade, health_level<\/p>\n<p>    &#034;&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    # \u5b9e\u65f6\u6570\u636e\u66f4\u65b0<\/p>\n<p>    real_time_stats <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><\/p>\n<p>        &#039;total_assessments_today&#039;<span class=\"token operator\">:<\/span> <span class=\"token class-name\">HealthRecord<\/span><span class=\"token punctuation\">.<\/span>objects<span class=\"token punctuation\">.<\/span><span class=\"token function\">filter<\/span><span class=\"token punctuation\">(<\/span><\/p>\n<p>            created_at__date<span class=\"token operator\">&#061;<\/span>timezone<span class=\"token punctuation\">.<\/span><span class=\"token function\">now<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">date<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">count<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;high_risk_alerts&#039;<span class=\"token operator\">:<\/span> <span class=\"token class-name\">PsychologicalAlert<\/span><span class=\"token punctuation\">.<\/span>objects<span class=\"token punctuation\">.<\/span><span class=\"token function\">filter<\/span><span class=\"token punctuation\">(<\/span><\/p>\n<p>            alert_status<span class=\"token operator\">&#061;<\/span><span class=\"token char\">&#039;\u5f85\u5904\u7406&#039;<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>            created_at__gte<span class=\"token operator\">&#061;<\/span>timezone<span class=\"token punctuation\">.<\/span><span class=\"token function\">now<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&#8211;<\/span> <span class=\"token function\">timedelta<\/span><span class=\"token punctuation\">(<\/span>hours<span class=\"token operator\">&#061;<\/span><span class=\"token number\">24<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>        <span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">count<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;system_health_score&#039;<span class=\"token operator\">:<\/span> np<span class=\"token punctuation\">.<\/span>random<span class=\"token punctuation\">.<\/span><span class=\"token function\">uniform<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">85<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">95<\/span><span class=\"token punctuation\">)<\/span><\/p>\n<p>    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    # \u6784\u5efa\u53ef\u89c6\u5316\u6570\u636e\u7ed3\u6784<\/p>\n<p>    visualization_data <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">{<\/span><\/p>\n<p>        &#039;health_distribution<span class=\"token char\">&#039;: [{&#039;<\/span>name&#039;<span class=\"token operator\">:<\/span> item<span class=\"token punctuation\">[<\/span>&#039;health_level<span class=\"token char\">&#039;], &#039;<\/span>value&#039;<span class=\"token operator\">:<\/span> item<span class=\"token punctuation\">[<\/span><span class=\"token char\">&#039;count&#039;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span> <\/p>\n<p>                               <span class=\"token keyword\">for<\/span> item in health_distribution<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;trend_data<span class=\"token char\">&#039;: [{&#039;<\/span>month&#039;<span class=\"token operator\">:<\/span> row<span class=\"token punctuation\">.<\/span>month<span class=\"token punctuation\">,<\/span> <span class=\"token char\">&#039;score&#039;<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">float<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">.<\/span>avg_score<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token char\">&#039;count&#039;<\/span><span class=\"token operator\">:<\/span> row<span class=\"token punctuation\">.<\/span>student_count<span class=\"token punctuation\">}<\/span> <\/p>\n<p>                      <span class=\"token keyword\">for<\/span> row in trend_analysis<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;major_ranking<span class=\"token char\">&#039;: [{&#039;<\/span>major&#039;<span class=\"token operator\">:<\/span> row<span class=\"token punctuation\">.<\/span>major<span class=\"token punctuation\">,<\/span> <span class=\"token char\">&#039;score&#039;<\/span><span class=\"token operator\">:<\/span> <span class=\"token keyword\">float<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">.<\/span>avg_health_score<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span> <\/p>\n<p>                         <span class=\"token keyword\">for<\/span> row in major_analysis<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;grade_stats<span class=\"token char\">&#039;: [{&#039;<\/span>grade&#039;<span class=\"token operator\">:<\/span> row<span class=\"token punctuation\">.<\/span>grade<span class=\"token punctuation\">,<\/span> <span class=\"token char\">&#039;level&#039;<\/span><span class=\"token operator\">:<\/span> row<span class=\"token punctuation\">.<\/span>health_level<span class=\"token punctuation\">,<\/span> <\/p>\n<p>                        <span class=\"token char\">&#039;count&#039;<\/span><span class=\"token operator\">:<\/span> row<span class=\"token punctuation\">.<\/span>count<span class=\"token punctuation\">,<\/span> &#039;percentage&#039;<span class=\"token operator\">:<\/span> <span class=\"token keyword\">float<\/span><span class=\"token punctuation\">(<\/span>row<span class=\"token punctuation\">.<\/span>percentage<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span> <\/p>\n<p>                       <span class=\"token keyword\">for<\/span> row in grade_comparison<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span><\/p>\n<p>        &#039;real_time&#039;<span class=\"token operator\">:<\/span> real_time_stats<\/p>\n<p>    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token keyword\">return<\/span> <span class=\"token class-name\">JsonResponse<\/span><span class=\"token punctuation\">(<\/span>visualization_data<span class=\"token punctuation\">)<\/span><\/p>\n<h2>\u533b\u5b66\u751f\u5065\u5eb7\u7a0b\u5ea6\u6570\u636e\u53ef\u89c6\u5316\u5206\u6790\u7cfb\u7edf\u6587\u6863\u5c55\u793a<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111452-689c73ac2b139.png\" alt=\"\u6587\u6863\" \/><\/p>\n<p>&#x1f496;&#x1f496;\u4f5c\u8005&#xff1a;\u8ba1\u7b97\u673a\u6bd5\u4e1a\u8bbe\u8ba1\u5c0f\u9014 &#x1f499;&#x1f499;\u4e2a\u4eba\u7b80\u4ecb&#xff1a;\u66fe\u957f\u671f\u4ece\u4e8b\u8ba1\u7b97\u673a\u4e13\u4e1a\u57f9\u8bad\u6559\u5b66&#xff0c;\u672c\u4eba\u4e5f\u70ed\u7231\u4e0a\u8bfe\u6559\u5b66&#xff0c;\u8bed\u8a00\u64c5\u957fJava\u3001\u5fae\u4fe1\u5c0f\u7a0b\u5e8f\u3001Python\u3001Golang\u3001\u5b89\u5353Android\u7b49&#xff0c;\u5f00\u53d1\u9879\u76ee\u5305\u62ec\u5927\u6570\u636e\u3001\u6df1\u5ea6\u5b66\u4e60\u3001\u7f51\u7ad9\u3001\u5c0f\u7a0b\u5e8f\u3001\u5b89\u5353\u3001\u7b97\u6cd5\u3002\u5e73\u5e38\u4f1a\u505a\u4e00\u4e9b\u9879\u76ee\u5b9a\u5236\u5316\u5f00\u53d1\u3001\u4ee3\u7801\u8bb2\u89e3\u3001\u7b54\u8fa9\u6559\u5b66\u3001\u6587\u6863\u7f16\u5199\u3001\u4e5f\u61c2\u4e00\u4e9b\u964d\u91cd\u65b9\u9762\u7684\u6280\u5de7\u3002\u5e73\u5e38\u559c\u6b22\u5206\u4eab\u4e00\u4e9b\u81ea\u5df1\u5f00\u53d1\u4e2d\u9047\u5230\u7684\u95ee\u9898\u7684\u89e3\u51b3\u529e\u6cd5&#xff0c;\u4e5f\u559c\u6b22\u4ea4\u6d41\u6280\u672f&#xff0c;\u5927\u5bb6\u6709\u6280\u672f\u4ee3\u7801\u8fd9\u4e00\u5757\u7684\u95ee\u9898\u53ef\u4ee5\u95ee\u6211&#xff01; &#x1f49b;&#x1f49b;\u60f3\u8bf4\u7684\u8bdd&#xff1a;\u611f\u8c22\u5927\u5bb6\u7684\u5173\u6ce8\u4e0e\u652f\u6301&#xff01; &#x1f49c;&#x1f49c; \u7f51\u7ad9\u5b9e\u6218\u9879\u76ee \u5b89\u5353\/\u5c0f\u7a0b\u5e8f\u5b9e\u6218\u9879\u76ee \u5927\u6570\u636e\u5b9e\u6218\u9879\u76ee \u6df1\u5ea6\u5b66\u4e60\u5b9e\u6218\u9879\u76ee<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1k\u6b21\uff0c\u70b9\u8d5e23\u6b21\uff0c\u6536\u85cf15\u6b21\u3002\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f<\/p>\n","protected":false},"author":2,"featured_media":55195,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[779,81,365,87,323,5670,1520,938],"topic":[],"class_list":["post-55205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-hadoop","tag-python","tag-spark","tag-87","tag-323","tag-5670","tag-1520","tag-938"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/55205.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1k\u6b21\uff0c\u70b9\u8d5e23\u6b21\uff0c\u6536\u85cf15\u6b21\u3002\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/55205.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-13T11:14:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111444-689c73a472e2c.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/55205.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/55205.html\",\"name\":\"\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2025-08-13T11:14:53+00:00\",\"dateModified\":\"2025-08-13T11:14:53+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/55205.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/55205.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/55205.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/55205.html","og_locale":"zh_CN","og_type":"article","og_title":"\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1k\u6b21\uff0c\u70b9\u8d5e23\u6b21\uff0c\u6536\u85cf15\u6b21\u3002\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f","og_url":"https:\/\/www.wsisp.com\/helps\/55205.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2025-08-13T11:14:53+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/08\/20250813111444-689c73a472e2c.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/55205.html","url":"https:\/\/www.wsisp.com\/helps\/55205.html","name":"\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2025-08-13T11:14:53+00:00","dateModified":"2025-08-13T11:14:53+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/55205.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/55205.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/55205.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u540c\u6837\u662f\u8ba1\u7b97\u673a\u6bd5\u8bbe\uff1a\u4e3a\u4ec0\u4e48\u4ed6\u7684\u533b\u5b66\u751f\u5065\u5eb7\u6570\u636e\u5206\u6790\u7cfb\u7edf\u7528\u4e86Hadoop+Spark\u5c31\u80fd\u8131\u9896\u800c\u51fa\uff1f"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/55205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=55205"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/55205\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/55195"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=55205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=55205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=55205"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=55205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}