DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Big Data Zone»Partie 2 – Comment créer une ruche sur GCP à l’aide de Google DataProc et de Cloud Storage
    Big Data Zone

    Partie 2 – Comment créer une ruche sur GCP à l’aide de Google DataProc et de Cloud Storage

    novembre 14, 2021
    Partie 2 - Comment créer une ruche sur GCP à l'aide de Google DataProc et de Cloud Storage
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Dans la première partie de cette série, nous avons vu comment créer un cluster Google Dataproc, créer des tables externes dans HIVE, pointer vers les données stockées sur le stockage cloud et effectuer une analyse exploratoire des données dans un environnement de transfert. Dans le cadre de cette analyse, nous avons découvert que nos exemples d’ensembles de données comportaient environ :

    • ~ 11% des enregistrements non confirmatifs pour l’ensemble de données Green Taxi Y2019
    • ~ 33% des enregistrements non confirmatifs pour l’ensemble de données Yellow Taxi Y2019

    L’identification des enregistrements non confirmatifs est l’une des étapes importantes de l’analyse exploratoire des données, car elles peuvent conduire à une interprétation erronée ou erronée des résultats. Ainsi, dans le cadre de l’étape suivante, nous allons créer un nouvel environnement, c’est-à-dire de nouvelles tables externes dans HIVE avec uniquement les données valides requises pour une analyse approfondie et éliminer les enregistrements non confirmatifs.

    Étape 5: Créer de nouvelles tables externes HIVE (principales) et télécharger des données filtrées pour une analyse détaillée

    Le partitionnement dans Hive signifie diviser le tableau en plusieurs parties en fonction des valeurs d’une colonne particulière comme la date, le cours, la ville ou le pays. L’avantage du partitionnement est que puisque les données sont stockées en tranches, le temps de réponse aux requêtes devient plus rapide. Dans cet exercice, nous allons créer de nouvelles tables externes HIVE partitionnées par mois. On peut aussi partitionner par jour, semaine, année, etc.

    Créez une table externe Green Taxi (ny_green_taxi) et téléchargez des données valides de stg_ny_green_taxi dans cette table pour une analyse détaillée. La table est partitionnée par mois et pointée vers le nouvel emplacement « gs://2019ah04024/tlc_parted/Les données/Taxi vert« 

    /*Green Taxi*/
    CREATE EXTERNAL TABLE IF NOT EXISTS ny_green_taxi (
                  vendor_id int, lpep_pickup_datetime string, lpep_dropoff_datetime string,
                  store_and_fwd_flag string, rate_code_id smallint, pu_location_id int,
                  do_location_id int, passenger_count int, trip_distance double, 
                  fare_amount double, extra_charge double, mta_tax double,
                  tip_amount double, tolls_amount double, ehail_fee double,
                  improvement_surcharge double, total_amount double, 
                  payment_type smallint,trip_type smallint, congestion_surcharge double
           )
    PARTITIONED BY (mnth int)
    STORED AS ORC
    LOCATION 'gs://2019ah04024/tlc_parted/data/GreenTaxi/'
    TBLPROPERTIES ("orc.compress" = "SNAPPY");
    
    /* Insert valid & confirming records from staging to main*/
    INSERT INTO TABLE ny_green_taxi PARTITION(mnth)
    SELECT vendor_id, lpep_pickup_datetime, lpep_dropoff_datetime, store_and_fwd_flag,
           rate_code_id, pu_location_id, do_location_id, passenger_count, trip_distance, 
           fare_amount, extra_charge, mta_tax, tip_amount, tolls_amount, ehail_fee, 
           improvement_surcharge, total_amount, payment_type, trip_type, congestion_surcharge,
           month(lpep_pickup_datetime) as mnth
    from stg_ny_green_taxi
    where year(lpep_pickup_datetime) =2019 and year(lpep_dropoff_datetime) =2019 and
           unix_timestamp(lpep_pickup_datetime) < unix_timestamp(lpep_dropoff_datetime) and
           passenger_count in (1,2,3,4,5,6,7,8,9) and trip_distance > 0.0 and 
           rate_code_id in (1,2,3,4,5,6) andpayment_type in (1,2,3,4,5,6) and 
           fare_amount > 0 and extra_charge in (0,0.5,1) and mta_tax in (0,0.5) and 
           tip_amount > 0.0 and tolls_amount >= 0.0 and improvement_surcharge in (0,0.3) and        
           total_amount > 0 and vendor_id is not null

    De la même manière, nous allons créer une table externe Yellow Taxi (ny_yellow_taxi) et télécharger des données valides de stg_ny_yellow_taxi dans cette table pour une analyse détaillée. La table est partitionnée par mois et pointée vers le nouvel emplacement « gs://2019ah04024/tlc_parted/Les données/Taxi jaune« 

    /* Yellow Tax */
    CREATE EXTERNAL TABLE IF NOT EXISTS ny_yellow_taxi (
                  vendor_id int, tpep_pickup_datetime string, tpep_dropoff_datetime string,
                  passenger_count int, trip_distance double, rate_code_id smallint,
                  store_and_fwd_flag string, pu_location_id int,  do_location_id int,
                  payment_type smallint, fare_amount double, extra_charge double,
                  mta_tax double, tip_amount double, tolls_amount double,
                  improvement_surcharge double, total_amount double, 
                  congestion_surcharge double)
    PARTITIONED BY (mnth int)
    STORED AS ORC
    LOCATION 'gs://2019ah04024/tlc_parted/data/YellowTaxi/'
    TBLPROPERTIES ("orc.compress" = "SNAPPY");
    
    /* insert valid & confirming records from staging to main */
    INSERT INTO TABLE ny_yellow_taxi PARTITION(mnth)
    SELECT vendor_id, tpep_pickup_datetime, tpep_dropoff_datetime, passenger_count,
           trip_distance, rate_code_id, store_and_fwd_flag, pu_location_id,
           do_location_id, payment_type, fare_amount, extra_charge, mta_tax,
           tip_amount, tolls_amount, improvement_surcharge, total_amount,
           congestion_surcharge, month(tpep_pickup_datetime) as mnth
    from stg_ny_yellow_taxi
    where year(tpep_pickup_datetime)=2019 and year(tpep_dropoff_datetime)=2019 and 
          unix_timestamp(tpep_pickup_datetime) < unix_timestamp(tpep_dropoff_datetime) and 
          passenger_count in (1,2,3,4,5,6,7,8,9) and trip_distance > 0.0 and 
          rate_code_id in (1,2,3,4,5,6) and payment_type in (1,2,3,4,5,6) and 
          fare_amount > 0 and extra_charge in (0,0.5,1) and mta_tax in(0,0.5) and 
          tip_amount>=0.0 and tolls_amount >= 0.0 and improvement_surcharge in (0,0.3) and 
          total_amount > 0 and vendor_id is not null;

    Une chose à noter est qu’en effectuant le partitionnement, à l’intérieur du nouvel emplacement de stockage Google Cloud « tlc_parted/Les données/YellowTaxi ou /GreenTaxi », les fichiers de données seront désormais mappés et regroupés sous des dossiers enfants par mois.

    Il existe également un ensemble de données de recherche fourni par la société New York Taxi qui contient des détails communs pouvant être utilisés par tous les fournisseurs, tels que l’emplacement, l’arrondissement, la zone de service, etc. Nous utiliserons également ce fichier pour effectuer notre analyse approfondie. Comme indiqué dans les étapes 1 et 2, nous allons télécharger ce fichier dans le stockage cloud, créer une autre table externe pour l’emplacement – « lk_location » et pointer vers cet emplacement.

    CREATE EXTERNAL TABLE lk_location (
                  location_id int, borough string,
                  tlc_zone string, service_zone string)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY 'n'
    STORED AS TEXTFILE
    LOCATION 'gs://2019ah04024/tlc/data/LookUp/'
    tblproperties ("skip.header.line.count"="1");

    Étape 6 : Effectuer une analyse en profondeur réelle

    Maintenant, les tables externes – « ny_green_taxi » et « ny_yellow_taxi » sont les tables contenant les enregistrements filtrés et confirmant. Toute organisation comme UBER ou OLA qui traite avec Taxi souhaite analyser les informations telles que

    • Top des itinéraires les plus fréquentés desservis
    • Heures les plus chargées de la journée pour les taxis
    • Mode de paiement préféré des passagers
    • La tendance hebdomadaire observée pour les modes de paiement
    • Nombre de trajets mensuels, distance moyenne et nombre moyen de passagers à partir des trajets effectués
    • Quel fournisseur fournit les données les plus utiles

    Remarque : Pour toutes les requêtes ci-dessus, j’avais exporté la sortie des résultats HIVE et créé des visualisations/graphiques dans Excel.

    Analyse 1 : quel fournisseur fournit les données les plus utiles ?

    Vérifions quel fournisseur a fourni les enregistrements les plus probants :

    /*Green Taxi*/
    SELECT sum(CASE when vendor_id = 1 THEN 1 ELSE 0 END)as Creative_Mobile_Tech,
           sum(CASE when vendor_id = 2 THEN 1 ELSE 0 END)as Verifone_Inc,
    count(*)as Total_Vendors from ny_green_taxi;

    La sortie est la suivante :

    Analyse de l'authenticité des données

    /* Yellow Taxi */
    SELECT sum(CASE when vendor_id = 1 THEN 1 ELSE 0 END)as Creative_Mobile_Tech,
           sum(CASE when vendor_id = 2 THEN 1 ELSE 0 END)as Verifone_Inc,
    count(*)as Total_Vendors from ny_yellow_taxi;

    La sortie est la suivante :

    Analyse de l'authenticité des données

    Pour les taxis verts et jaunes, le vendeur Verifone Inc a fourni les données les plus utiles avec des enregistrements de confirmation de 4641694 (87 % du total) pour un taxi vert et de 52661660 (92 % du total) pour un taxi jaune.

    Analyse de données utiles

    Analyse 2 : Trouver le nombre de trajets mensuels, la distance moyenne et le nombre moyen de passagers à partir des trajets effectués par les taxis jaunes et verts en 2019.

    /*Green Taxi*/
    select mnth_activity.mnth as month, sum(mnth_activity.trips) as trips_count,
           round(avg(mnth_activity.trip_dist),2) as Avg_trip_Dist,
           round(avg(mnth_activity.psngr_cnt),1) as passenger_count
    from (select month(lpep_pickup_datetime) as mnth, 
           pu_location_id, do_location_id, 
           count(*) as trips, 
           avg(trip_distance) as trip_dist, 
           avg(passenger_count) as psngr_cnt
    from ny_green_taxi
    group by month(lpep_pickup_datetime), pu_location_id, do_location_id) as mnth_activity
    group by mnth_activity.mnth
    order by mnth_activity.mnth;
    
    hive -e 'select month(lpep_pickup_datetime) as mnth, pu_location_id, do_location_id, count(*) as trips, avg(trip_distance) as trip_dist, avg(passenger_count) as psngr_cnt from ny_green_taxi group by month(lpep_pickup_datetime), pu_location_id, do_location_id' | sed 's/[[:space:]]+/,/g' > gt_monthly_trend.csv;
    gsutil mv gt_monthly_trend.csv gs://2019ah04024/csv/data/GreenTaxi/

    Analyse mensuelle du nombre de déplacements

    /* Yellow Taxi */
    select mnth_activity.mnth as month, sum(mnth_activity.trips) as trips_count,
           round(avg(mnth_activity.trip_dist),2) as Avg_trip_Dist,
           round(avg(mnth_activity.psngr_cnt),1) as passenger_count
    from (select month(tpep_pickup_datetime) as mnth, 
           pu_location_id, do_location_id, 
           count(*) as trips, 
           avg(trip_distance) as trip_dist, 
           avg(passenger_count) as psngr_cnt
    from ny_yellow_taxi
    group by month(tpep_pickup_datetime), pu_location_id, do_location_id) as mnth_activity
    group by mnth_activity.mnth
    order by mnth_activity.mnth;
    
    hive -e 'select month(tpep_pickup_datetime) as mnth, pu_location_id, do_location_id, count(*) as trips, avg(trip_distance) as trip_dist, avg(passenger_count) as psngr_cnt from ny_yellow_taxi group by month(tpep_pickup_datetime), pu_location_id, do_location_id' | sed 's/[[:space:]]+/,/g' > yt_monthly_trend.csv;
    gsutil mv yt_monthly_trend.csv gs://2019ah04024/csv/data/YellowTaxi/

    Analyse mensuelle du nombre de déplacements

    • La distance moyenne du trajet pour les taxis verts varie entre 7,87 et 10,29, tandis que pour les jaunes varie entre 8,9 et 10,1
    • Le nombre de trajets mensuels est maximum pour janvier, février et mars pour les taxis verts. Pour le taxi jaune, c’est en janvier.
    • Le nombre moyen de passagers pour le taxi vert est de 1 et le taxi jaune est de 2

    Analyse 3 : Connaître les cinq itinéraires les plus fréquentés des taxis jaunes et verts au cours de l’année 2019 avec le nom des points de départ et de dépose à fournir.

    /* Green Taxi */
    select loc1.borough as Pickup_Borough, loc1.tlc_zone as Pickup_Zone, 
           loc2.borough as Dropof_Borough, loc2.tlc_zone as Dropof_Zone, count(*) as trip_count 
    from ny_green_taxi gt 
    join lk_location loc1 
         on (gt.pu_location_id = loc1.location_id) 
    join lk_location loc2
         on (gt.do_location_id = loc2.location_id) 
    group by loc1.borough, loc1.tlc_zone,loc2.borough, loc2.tlc_zone
    order by trip_count desc limit 5;

      Analyse des itinéraires les plus fréquentés

    /* Yellow Taxi */
    select loc1.borough as Pickup_Borough, loc1.tlc_zone as Pickup_Zone, 
           loc2.borough as Dropof_Borough, loc2.tlc_zone as Dropof_Zone, count(*) as trip_count 
    from ny_yellow_taxi yt 
    join lk_location loc1 
         on (yt.pu_location_id = loc1.location_id) 
    join lk_location loc2
         on (yt.do_location_id = loc2.location_id) 
    group by loc1.borough, loc1.tlc_zone,loc2.borough, loc2.tlc_zone
    order by trip_count desc limit 5;

    Analyse des routes les plus fréquentées

    Analyse 4 : Quelles sont les 3 heures les plus chargées de la journée pour les taxis ?

    /* Green Taxi */
    select...
    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.