Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az oktatóanyagban egy nyers CSV-adatfájlt tölt le nyilvánosan elérhető repülési adatokból. Importálja a HDInsight-fürttárolóba, majd az Azure HDInsight interaktív lekérdezéseivel alakítja át az adatokat. Az adatok átalakítása után betölti az adatokat egy Azure SQL Database-adatbázisba Apache Sqoophasználatával.
Ez az oktatóanyag a következő feladatokat mutatja be:
- A repülési mintaadatok letöltése
- Adatok feltöltése HDInsight-fürtbe
- Adatok átalakítása interaktív lekérdezéssel
- Tábla létrehozása adatbázisban az Azure SQL Database-ben
- Adatok exportálása adatbázisba a Sqoop használatával az Azure SQL Database-ben
Előfeltételek
Interaktív lekérdezésfürt az HDInsighton. Lásd: Apache Hadoop-fürtök létrehozása az Azure portal használatával, és válassza a Interaktív lekérdezés lehetőséget fürttípushoz.
Adatbázis az Azure SQL Database-ben. Az adatbázist céladattárként használja. Ha nem rendelkezik adatbázissal az Azure SQL Database-ben, tekintse meg Adatbázis létrehozása az Azure SQL Database-ben az Azure Portalon.
Egy SSH-ügyfél. További információért lásd: Csatlakozás a HDInsighthoz (Apache Hadoop) SSH-val.
A repülőjárat-adatok letöltése
Keresse meg Kutatási és Innovatív Technológiai Adminisztráció, Közlekedési Statisztikai Hivatal.
Törölje az összes mezőt a lapon, majd válassza ki a következő értékeket:
Név Érték Év szűrése 2019 Szűrési időszak Január Mezők Year, FlightDate, Reporting_Airline, DOT_ID_Reporting_Airline, Flight_Number_Reporting_Airline, OriginAirportID, Origin, OriginCityName, OriginState, DestAirportID, Dest, DestCityName, DestState, DepDelayMinutes, ArrDelay, ArrDelayMinutes, CarrierDelay, WeatherDelay, NASDelay, SecurityDelay, LateAircraftDelay.Válassza a Letöltés lehetőséget. A rendszer letölt egy .zip fájlt a kiválasztott adatmezőkkel.
Adatok feltöltése HDInsight-fürtbe
Az HDInsight fürthöz társított tárolóba számos módon tölthet fel adatokat. Ebben a szakaszban a scp használatával tölthet fel adatokat. Az adatok feltöltésének egyéb módjairól további információt Adatok feltöltése a HDInsightbacímű témakörben talál.
Töltse fel a .zip fájlt a HDInsight-fürt főcsomópontjára. Az alábbi parancsot szerkessze úgy, hogy cseréli le a
FILENAMEhelyére a .zip fájl nevét, és aCLUSTERNAMEhelyére a HDInsight-fürt nevét. Ezután nyisson meg egy parancssort, állítsa be a munkakönyvtárat a fájl helyére, majd írja be a következő parancsot:scp FILENAME.zip sshuser@CLUSTERNAME-ssh.azurehdinsight.net:FILENAME.zipHa a rendszer kéri, adja meg az igent vagy a nemet a folytatáshoz. A szöveg beíráskor nem látható az ablakban.
Miután a feltöltés befejeződött, csatlakozzon a fürthöz az SSH-val. Az alábbi parancsot szerkessze úgy, hogy a
CLUSTERNAME-t az HDInsight-fürt nevére cseréli le. Ezután írja be a következő parancsot:ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.netA környezeti változó beállítása SSH-kapcsolat létesítése után. Cserélje le
FILE_NAME,SQL_SERVERNAME,SQL_DATABASE,SQL_USERésSQL_PASWORDa megfelelő értékekre. Ezután adja meg a következő parancsot:export FILENAME=FILE_NAME export SQLSERVERNAME=SQL_SERVERNAME export DATABASE=SQL_DATABASE export SQLUSER=SQL_USER export SQLPASWORD='SQL_PASWORD'Bontsa ki a .zip fájlt az alábbi parancs beírásával:
unzip $FILENAME.zipHozzon létre egy könyvtárat a HDInsight Storage-on, majd másolja a .csv fájlt a könyvtárba az alábbi parancs megadásával:
hdfs dfs -mkdir -p /tutorials/flightdelays/data hdfs dfs -put $FILENAME.csv /tutorials/flightdelays/data/
Adatok átalakítása Hive-lekérdezéssel
A Hive-feladatokat számos módon futtathatja egy HDInsight-fürtön. Ebben a szakaszban a Beeline-t használja egy Hive-feladat futtatásához. További információ a Hive-feladatok futtatásának egyéb módszereiről: Az Apache Hive használata a HDInsighton.
A Hive-feladat részeként importálja az adatokat a .csv fájlból egy Delaysnevű Hive-táblába.
A HDInsight-fürthöz már telepített SSH-parancssorból az alábbi paranccsal hozzon létre és szerkesszen egy új fájlt flightdelays.hql:
nano flightdelays.hqlA fájl tartalma legyen a következő szöveg:
DROP TABLE delays_raw; -- Creates an external table over the csv file CREATE EXTERNAL TABLE delays_raw ( YEAR string, FL_DATE string, UNIQUE_CARRIER string, CARRIER string, FL_NUM string, ORIGIN_AIRPORT_ID string, ORIGIN string, ORIGIN_CITY_NAME string, ORIGIN_CITY_NAME_TEMP string, ORIGIN_STATE_ABR string, DEST_AIRPORT_ID string, DEST string, DEST_CITY_NAME string, DEST_CITY_NAME_TEMP string, DEST_STATE_ABR string, DEP_DELAY_NEW float, ARR_DELAY_NEW float, CARRIER_DELAY float, WEATHER_DELAY float, NAS_DELAY float, SECURITY_DELAY float, LATE_AIRCRAFT_DELAY float) -- The following lines describe the format and location of the file ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/tutorials/flightdelays/data'; -- Drop the delays table if it exists DROP TABLE delays; -- Create the delays table and populate it with data -- pulled in from the CSV file (via the external table defined previously) CREATE TABLE delays AS SELECT YEAR AS year, FL_DATE AS flight_date, substring(UNIQUE_CARRIER, 2, length(UNIQUE_CARRIER) -1) AS unique_carrier, substring(CARRIER, 2, length(CARRIER) -1) AS carrier, substring(FL_NUM, 2, length(FL_NUM) -1) AS flight_num, ORIGIN_AIRPORT_ID AS origin_airport_id, substring(ORIGIN, 2, length(ORIGIN) -1) AS origin_airport_code, substring(ORIGIN_CITY_NAME, 2) AS origin_city_name, substring(ORIGIN_STATE_ABR, 2, length(ORIGIN_STATE_ABR) -1) AS origin_state_abr, DEST_AIRPORT_ID AS dest_airport_id, substring(DEST, 2, length(DEST) -1) AS dest_airport_code, substring(DEST_CITY_NAME,2) AS dest_city_name, substring(DEST_STATE_ABR, 2, length(DEST_STATE_ABR) -1) AS dest_state_abr, DEP_DELAY_NEW AS dep_delay_new, ARR_DELAY_NEW AS arr_delay_new, CARRIER_DELAY AS carrier_delay, WEATHER_DELAY AS weather_delay, NAS_DELAY AS nas_delay, SECURITY_DELAY AS security_delay, LATE_AIRCRAFT_DELAY AS late_aircraft_delay FROM delays_raw;A fájl mentéséhez nyomja le Ctrl + X, majd y, majd írja be.
A Hive elindításához és a flightdelays.hql fájl futtatásához használja a következő parancsot:
beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -f flightdelays.hqlMiután a flightdelays.hql szkript fut, az alábbi paranccsal nyisson meg egy interaktív Beeline-munkamenetet:
beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http'Amikor a
jdbc:hive2://localhost:10001/>parancssor megjelenik, a következő lekérdezéssel nyerhet ki adatokat az importált repülőjárat-késési adatokból:INSERT OVERWRITE DIRECTORY '/tutorials/flightdelays/output' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' SELECT regexp_replace(origin_city_name, '''', ''), avg(weather_delay) FROM delays WHERE weather_delay IS NOT NULL GROUP BY origin_city_name;Ez a lekérdezés lekéri azon városok listáját, ahol időjárás miatti késések történtek, valamint a késések átlagos idejét, és menti ezeket az adatokat a következő helyen:
/tutorials/flightdelays/output. Később a Sqoop erről a helyről olvassa be az adatokat, amelyeket exportál az Azure SQL Database-be.A Beeline-ból való kilépéshez írja be a parancssorba a
!quitparancsot.
SQL Database-tábla létrehozása
Számos módon csatlakozhat az SQL Database-hez, majd hozhat létre egy táblát. A következő lépések során a FreeTDS eszközt használjuk a HDInsight-fürtről.
A FreeTDS telepítéséhez használja a következő parancsot a klaszterhez való megnyitott SSH-kapcsolatból:
sudo apt-get --assume-yes install freetds-dev freetds-binA telepítés befejezése után az alábbi paranccsal csatlakozzon az SQL Database-hez:
TDSVER=8.0 tsql -H $SQLSERVERNAME.database.windows.net -U $SQLUSER -p 1433 -D $DATABASE -P $SQLPASWORDA kimenet a következő szöveghez fog hasonlítani:
locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" Default database being set to <yourdatabase> 1>Az
1>parancssorban írja be a következő sorokat:CREATE TABLE [dbo].[delays]( [origin_city_name] [nvarchar](50) NOT NULL, [weather_delay] float, CONSTRAINT [PK_delays] PRIMARY KEY CLUSTERED ([origin_city_name] ASC)) GOA
GOutasítás megadásakor a rendszer kiértékeli az előző utasításokat. Ez az utasítás létrehoz egy nevű táblát, amely egy fürtözött indexet tartalmaz.A következő lekérdezés használatával ellenőrizze, hogy a tábla létrejött-e:
SELECT * FROM information_schema.tables GOA kimenet az alábbi szöveghez hasonló:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE databaseName dbo delays BASE TABLEA tsql eszközből való kilépéshez írja be az
exitkifejezést az1>parancssorba.
Adatok exportálása AZ SQL Database-be az Apache Sqoop használatával
Az előző szakaszokban átmásolta az átalakított adatokat a(z) /tutorials/flightdelays/outputszámú helyre. Ebben a szakaszban a Sqoop használatával exportálja az adatokat a /tutorials/flightdelays/output-ból az Azure SQL Database-ben létrehozott táblába.
Ellenőrizze, hogy a Sqoop látja-e az SQL-adatbázist az alábbi parancs beírásával:
sqoop list-databases --connect jdbc:sqlserver://$SQLSERVERNAME.database.windows.net:1433 --username $SQLUSER --password $SQLPASWORDEz a parancs visszaadja az adatbázisok listáját, beleértve azt az adatbázist is, amelyben korábban létrehozta a
delaystáblát.Adatok exportálása
/tutorials/flightdelays/outputadelaystáblába az alábbi paranccsal:sqoop export --connect "jdbc:sqlserver://$SQLSERVERNAME.database.windows.net:1433;database=$DATABASE" --username $SQLUSER --password $SQLPASWORD --table 'delays' --export-dir '/tutorials/flightdelays/output' --fields-terminated-by '\t' -m 1A Sqoop a
delaystáblát tartalmazó adatbázishoz csatlakozik, és adatokat exportál a/tutorials/flightdelays/outputkönyvtárból adelaystáblába.A sqoop parancs befejeződése után a tsql segédprogrammal csatlakozzon az adatbázishoz az alábbi parancs beírásával:
TDSVER=8.0 tsql -H $SQLSERVERNAME.database.windows.net -U $SQLUSER -p 1433 -D $DATABASE -P $SQLPASWORDAz alábbi utasítások segítségével ellenőrizheti, hogy az adatok exportálva lett-e a késési táblába:
SELECT * FROM delays GOA táblában látnia kell az adatok listáját. A tábla a városok nevét és az egyes városokhoz tartozó átlagos késések idejét tartalmazza.
Írja be a
exita tsql segédprogramból való kilépéshez.
Erőforrások tisztítása
Az oktatóanyag befejezése után érdemes törölni a klasztert. A HDInsight használatával az adatok az Azure Storage-ban lesznek tárolva, így biztonságosan törölheti a fürtöt, ha nincs használatban. A HDInsight-fürtökért is díjat számítunk fel, még akkor is, ha nincs használatban. Mivel a fürt díjai sokkal magasabbak, mint a tárolási díjak, érdemes törölni a fürtöket, amikor nincsenek használatban.
Egy HDInsight-fürt törléséről a böngésző, a PowerShell vagy az Azure CLI használatával a HDInsight-fürt törlése című részben olvashat.
Következő lépések
Ebben az oktatóanyagban egy nyers CSV-adatfájlt vett fel, egy HDInsight-fürttárolóba importálta, majd az Azure HDInsight interaktív lekérdezésével átalakította az adatokat. Lépjen tovább a következő oktatóanyagra az Apache Hive Warehouse-összekötő megismeréséhez.