Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam tutorial ini, Anda mengunduh file data CSV mentah dari data penerbangan yang tersedia untuk umum. Impor ke penyimpanan kluster HDInsight, lalu ubah data menggunakan Interactive Query di Azure HDInsight. Setelah data diubah, Anda memuat data tersebut ke dalam database di Azure SQL Database menggunakan Apache Sqoop.
Tutorial ini mencakup tugas-tugas berikut:
- Mengunduh sampel data penerbangan
- Mengunggah data ke kluster HDInsight
- Mengubah data menggunakan Interactive Query
- Membuat tabel dalam database di Azure SQL Database
- Menggunakan Sqoop untuk mengekspor data ke database di Azure SQL Database
Prasyarat
Kluster Query Interaktif di HDInsight. Lihat Membuat kluster Apache Hadoop menggunakan portal Microsoft Azure dan pilih Kueri Interaktif untuk jenis Kluster.
Sebuah database di Azure SQL Database. Anda menggunakan database sebagai penyimpanan data tujuan. Jika Anda tidak memiliki database di Azure SQL Database, lihat Membuat database di Azure SQL Database di portal Microsoft Azure.
Klien SSH. Untuk informasi selengkapnya, lihat Menyambungkan ke HDInsight (Apache Hadoop) menggunakan SSH.
Unduh data penerbangan
Telusuri Administrasi Teknologi Inovatif dan Penelitian, Biro Statistik Transportasi.
Pada halaman, hapus semua bidang, lalu pilih nilai berikut:
Nama Nilai Tahun Filter 2019 Periode Penyaringan Januari Bidang 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.Pilih Unduh. File .zip diunduh dengan bidang data yang Anda pilih.
Mengunggah data ke kluster HDInsight
Ada banyak cara untuk mengunggah data ke penyimpanan yang terkait dengan kluster HDInsight. Di bagian ini, Anda menggunakan scp untuk mengunggah data. Untuk mempelajari cara lain untuk mengunggah data, lihat Mengunggah data ke HDInsight.
Unggah file .zip ke simpul kepala kluster HDInsight. Edit perintah di bawah ini dengan mengganti
FILENAMEdengan nama file .zip, danCLUSTERNAMEdengan nama kluster HDInsight. Kemudian buka perintah, atur direktori kerja Anda ke lokasi file, lalu masukkan perintah:scp FILENAME.zip sshuser@CLUSTERNAME-ssh.azurehdinsight.net:FILENAME.zipMasukkan ya atau tidak untuk melanjutkan jika diminta. Teks tidak terlihat di jendela saat Anda mengetik.
Setelah pengunggahan selesai, sambungkan ke kluster dengan menggunakan SSH. Edit perintah di bawah ini dengan mengganti
CLUSTERNAMEdengan nama kluster HDInsight. Masukkan perintah berikut:ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.netSiapkan variabel lingkungan setelah koneksi SSH dibuat. Ganti
FILE_NAME, ,SQL_DATABASESQL_SERVERNAME,SQL_USER, danSQL_PASWORDdengan nilai yang sesuai. Kemudian masukkan perintah:export FILENAME=FILE_NAME export SQLSERVERNAME=SQL_SERVERNAME export DATABASE=SQL_DATABASE export SQLUSER=SQL_USER export SQLPASWORD='SQL_PASWORD'Unzip file .zip dengan memasukkan perintah di bawah ini:
unzip $FILENAME.zipBuat direktori pada penyimpanan HDInsight, lalu salin file .csv ke direktori dengan memasukkan perintah di bawah ini:
hdfs dfs -mkdir -p /tutorials/flightdelays/data hdfs dfs -put $FILENAME.csv /tutorials/flightdelays/data/
Mengubah data menggunakan kueri Apache Hive
Ada banyak cara untuk menjalankan tugas Hive pada kluster HDInsight. Di bagian ini, Anda menggunakan Beeline untuk menjalankan tugas Hive. Untuk informasi tentang metode lain untuk menjalankan pekerjaan Apache Hive, lihat Menggunakan Apache Hive di HDInsight.
Sebagai bagian dari pekerjaan Apache Hive, Anda mengimpor data dari file .csv ke dalam tabel Apache Hive bernama Penundaan.
Dari perintah SSH yang sudah Anda miliki untuk kluster HDInsight, gunakan perintah berikut untuk membuat, dan edit file baru bernama flightdelays.hql:
nano flightdelays.hqlGunakan teks berikut sebagai konten file:
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;Untuk menyimpan file, tekan Ctrl + X, lalu y, lalu masukkan.
Untuk memulai Apache Hive dan menjalankan file flightdelays.hql , gunakan perintah berikut:
beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http' -f flightdelays.hqlSetelah skrip flightdelays.hql selesai berjalan, gunakan perintah berikut untuk membuka sesi Beeline interaktif:
beeline -u 'jdbc:hive2://localhost:10001/;transportMode=http'Saat Anda menerima prompt
jdbc:hive2://localhost:10001/>, gunakan kueri berikut untuk mengambil data dari data keterlambatan penerbangan yang diimpor: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;Kueri ini mengambil daftar kota yang mengalami keterlambatan cuaca, bersama dengan waktu keterlambatan rata-rata, dan menyimpannya ke
/tutorials/flightdelays/output. Kemudian, Sqoop membaca data dari lokasi ini dan mengekspornya ke Azure SQL Database.Untuk keluar dari Beeline, masukkan
!quitdi perintah.
Membuat tabel database SQL
Ada banyak cara untuk menyambungkan ke SQL Database dan membuat tabel. Langkah-langkah berikut menggunakan FreeTDS dari kluster HDInsight.
Untuk menginstal FreeTDS, gunakan perintah berikut dari koneksi SSH terbuka ke kluster:
sudo apt-get --assume-yes install freetds-dev freetds-binSetelah penginstalan selesai, gunakan perintah berikut untuk menyambungkan ke SQL Database:
TDSVER=8.0 tsql -H $SQLSERVERNAME.database.windows.net -U $SQLUSER -p 1433 -D $DATABASE -P $SQLPASWORDAnda akan menerima output yang mirip dengan teks berikut:
locale is "en_US.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" Default database being set to <yourdatabase> 1>Di perintah
1>, masukkan baris berikut:CREATE TABLE [dbo].[delays]( [origin_city_name] [nvarchar](50) NOT NULL, [weather_delay] float, CONSTRAINT [PK_delays] PRIMARY KEY CLUSTERED ([origin_city_name] ASC)) GOKetika pernyataan
GOdimasukkan, pernyataan sebelumnya dievaluasi. Pernyataan ini membuat tabel bernama penundaan, dengan indeks berkluster.Gunakan kueri berikut untuk memverifikasi bahwa tabel telah dibuat:
SELECT * FROM information_schema.tables GOOutputnya mirip dengan teks berikut:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE databaseName dbo delays BASE TABLEMasukkan
exitpada prompt1>untuk keluar dari utilitas tsql.
Mengekspor data ke SQL Database menggunakan Apache Sqoop
Di bagian sebelumnya, Anda menyalin data yang diubah di /tutorials/flightdelays/output. Di bagian ini, Anda menggunakan Sqoop untuk mengekspor data dari /tutorials/flightdelays/output ke tabel yang Anda buat di Azure SQL Database.
Verifikasi bahwa Sqoop dapat melihat database SQL Anda dengan memasukkan perintah di bawah ini:
sqoop list-databases --connect jdbc:sqlserver://$SQLSERVERNAME.database.windows.net:1433 --username $SQLUSER --password $SQLPASWORDPerintah ini mengembalikan daftar database, termasuk database tempat Anda membuat
delaystabel sebelumnya.Ekspor data dari
/tutorials/flightdelays/outputkedelaystabel dengan memasukkan perintah di bawah ini: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 1Sqoop tersambung ke database yang berisi
delaystabel, dan mengekspor data dari/tutorials/flightdelays/outputdirektori kedelaystabel.Setelah perintah sqoop selesai, gunakan utilitas tsql untuk menyambungkan ke database dengan memasukkan perintah di bawah ini:
TDSVER=8.0 tsql -H $SQLSERVERNAME.database.windows.net -U $SQLUSER -p 1433 -D $DATABASE -P $SQLPASWORDGunakan pernyataan berikut untuk memverifikasi bahwa data diekspor ke tabel penundaan:
SELECT * FROM delays GOAnda akan melihat daftar data dalam tabel. Tabel ini mencakup nama kota dan waktu keterlambatan penerbangan rata-rata untuk kota tersebut.
Ketik
exituntuk keluar dari utilitas tsql.
Membersihkan sumber daya
Setelah Anda menyelesaikan tutorial, Anda dapat menghapus kluster. Dengan HDInsight, data Anda disimpan di Azure Storage, sehingga Anda dapat menghapus kluster dengan aman saat tidak digunakan. Anda juga dikenakan biaya untuk klaster HDInsight, bahkan saat tidak digunakan. Karena biaya untuk kluster berkali-kali lebih banyak daripada biaya untuk penyimpanan, masuk akal secara ekonomis untuk menghapus kluster saat tidak digunakan.
Untuk menghapus kluster, lihat Hapus kluster HDInsight menggunakan browser, PowerShell, atau Azure CLI Anda.
Langkah berikutnya
Dalam tutorial ini, Anda mengambil file data CSV mentah, mengimpornya ke penyimpanan kluster HDInsight, lalu mengubah data menggunakan Interactive Query di Azure HDInsight. Lanjutkan ke tutorial berikutnya untuk mempelajari tentang Apache Hive Warehouse Connector.