1047. Spark データクリーニングモジュール C: データクリーニングとマイニング分析 (3)

プロジェクトの背景説明

食品配達プラットフォームの核となる価値は配達に反映され、配達の価値は販売者と顧客の間の双方向の選択に依存します。通常、フード デリバリー プラットフォームは、コンテンツを通じて消費者グループと販売者グループの両方の活動を活性化します。消費者はプラットフォームに表示されるコンテンツを参照して加盟店を選択し、加盟店も消費者の評価とプラットフォームの統計に基づいて戦略を調整することで、より多くのユーザーが注文してコメントするという好循環が形成されます。配信の適時性と品質を保証することは、ユーザー エクスペリエンスを最適化するという観点から、より多くのユーザーを参加に引き付け、マーチャントが定着し続けるように駆り立てることです。その結果、マーチャント、消費者、およびライダーは、プラットフォーム上でますます真正で信頼できるデータを形成し、消費者がより良い消費決定を下すのを助け、マーチャントがサービス品質を向上させるよう促進します。このプラットフォームは、データを通じてサービスを継続的に調整および最適化し、それによってこの多国間ネットワーク効果を継続的に改善します。ネットワーク効果の改善の直接的な結果は、ユーザーとマーチャントの規模の大幅な増加であり、これは顧客獲得のコストを削減し、効率を改善し、業界の障壁を継続的に改善する規模効果を形成します。

主要な食品配達プラットフォームの市場戦略とビジネス モデルを調査するために、「id、request_id、walle_id、retailer_id、retailer_name、retailer_address、etailer_location、city_id、city_name、grid_id、carrier_id を含む元のデータ セットをプラットフォームから取得しました、team_id、application_id、application_name、first_auditor_role、first_auditor_candidate_ids、first_auditor_id、first_auditor_name、second_auditor_role、second_auditor_candidate_ids、second_auditor_id、second_auditor_name、status、max_distance_before_edit、min_distance_before_edit、max_distance_after_edit、min_distance_after_edit、area_before _edit、area_after_edit、created_at、updated_at、適用時間、作成時間」およびその他のフィールド、ユーザーを保護するために、プライバシーおよび業界の機密情報はデータに対して鈍感にされています。データ脱感作とは、機密性の高い個人データを確実に保護するために、脱感作ルールを使用して特定の機密情報を変換することです。顧客のセキュリティ データや一部の商業機密データの場合、実際のデータが変換されてテスト用に提供されます。ID 番号や携帯電話番号などの個人の機密情報は、感度を下げる必要があります。この質問では、鈍感化されたデータは master node/chinaskills ディレクトリに保存されています。タスク内のすべてのコマンドは、絶対パスを使用する必要があります。

タスク 2: データ マイニング分析

タスクの背景:

食品配送の配送範囲は、通常、食品配送プラットフォームの事業者が販売者のために設定します。販売者は、実際の状況に応じて配送範囲を変更するためにプラットフォームに申請することもできます。流通範囲の変更を申請する場合、審査員は、実際の道路制限、総合的な輸送能力コスト、顧客の待ち時間などを考慮して、流通範囲の変更申請を検討し、最終的に合否を決定します。 /拒絶。第 1 レベルの監査人は通常、地域のチャネル マネージャーであり、輸送能力などの包括的な要因に基づいて監査記録を検討します。第 2 レベルの監査人は、食品配達プラットフォームのフルタイムの監査人であり、包括的に検討します。配信範囲の合理性とユーザーエクスペリエンスの変化。審査官による審査には一定の期限があり、審査の効率は協力商人プラットフォームの活動と商人の協力経験に直接影響します。次に、タスクの特定の要件に従って、範囲を分析し、関連するデータを確認します。

ミッションの詳細:

データクリーニングの結論のデータソース (/diliveryoutput2) に従って Spark プログラムを作成し、次の要件に従ってデータ分析を実装し、結果を HDFS ファイルシステムに出力してください。

1) データ クリーニング タスクの結果データセットを解析する

2) 納入範囲申請の審査時間を計算する

3) 配信範囲の変更範囲が監査結果に与える影響を分析する

4) プログラムがパッケージ化され、Spark プラットフォームで実行され、結果が HDFS ファイル システム (/diliveryoutput3) に出力されます。

特定のタスク要件:

1. 審査申請から審査完了までの時間差は、審査レコード1件分の処理時間です.Sparkプログラムを作成して、すべての申請レコードの平均処理時間を計算してください.プログラムでそれを出力しますステートメントは結果を出力します。印刷物をコピーして、対応するレポートに貼り付けます。(コピーされる内容は、print文の出力結果の動作ログの上下5行を含む必要があります)。

フォーマット例:

=== アプリケーションの平均処理時間は*分です ===

package eat

import org.apache.spark.sql.{DataFrame, SparkSession}

import java.text.SimpleDateFormat
import java.util.Date

object three_1 {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SparkSession.builder().master("local[6]").appName("three_1").config("spark.sql.warehouse.dir", "C:/").getOrCreate()

    val datas: DataFrame = spark.read.json("data/output/diliveryoutput2")

    val data = datas.rdd.map(item => {
      (item(41).toString.substring(0, 16), item(80).toString.substring(0, 16)) //创建时间  申请时间
    })

    val time = data.map(item => {
      val format = new SimpleDateFormat("yyyy-MM-dd hh:mm")
      val data1: Date = format.parse(item._1)
      val data2: Date = format.parse(item._2)
      (data2.getTime - data1.getTime) / (60 * 1000)
    })

    val result: Double = time.sum() / time.count()

    println(s"===平均申请处理时长为${result}分钟===")

  }
}


おすすめ

転載: blog.csdn.net/m0_54925305/article/details/128639704