Öğretici: Azure Data Lake Depolama 2. Nesil, Azure Databricks & Spark
Bu öğreticide, Azure Databricks kümenizi Azure Data Lake Depolama 2. Nesil'in etkin olduğu bir Azure depolama hesabında depolanan verilere nasıl bağlayacağını gösterir. Bu bağlantı, verileriniz üzerinde kümenizin sorgularını ve analizlerini yerel olarak çalıştırmanızı sağlar.
Bu öğreticide şunları yapacaksınız:
- Databricks kümesi oluşturma
- Yapılandırılmamış verileri bir depolama hesabına alma
- Blob depolamada verileriniz üzerinde analiz çalıştırma
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
Azure Data Lake Depolama 2. Nesil hesabı oluşturun.
Bkz. Azure Data Lake ile kullanmak için depolama hesabı oluşturma Depolama 2. Nesil.
Kullanıcı hesabınıza blob verisi katkıda bulunan Depolama rolü atandığından emin olun.
AzCopy v10'ı yükleyin. Bkz. AzCopy v10 ile veri aktarma
Hizmet sorumlusu oluşturun. Bkz. Nasıl: Portalı kullanarak kaynaklara erişen bir Azure AD uygulaması ve hizmet sorumlusu oluşturma.
Bu makaledeki adımları gerçekleştirmeniz için gerçekleştirmeniz gereken birkaç özel işlem vardır.
✔️ Uygulamayı bir role atama makalesinde yer alan adımları gerçekleştirerek Blob Verileri Katılımcısı rolünü hizmet sorumlusuna Depolama emin olun.
Önemli
Rolü Data Lake Depolama 2. Nesil depolama hesabı kapsamında atayın. Üst kaynak grubuna veya aboneliğe rol atabilirsiniz, ancak bu rol atamaları depolama hesabına yaynana kadar izinlerle ilgili hatalar alırsınız.
✔️ Makalenin Oturum açma için değerleri al bölümündeki adımları gerçekleştirerek kiracı kimliğini, uygulama kimliğini ve gizli istemci değerlerini bir metin dosyasına yapıştırın. Yakında buna ihtiyacınız olacak.
Uçuş verilerini indirme
Bu öğreticide ETL işleminin nasıl gerçekleştiriliş gösteriliştirilen Ulaşım İstatistikleri Bürosu'ndan gelen uçuş verileri kullanılır. Öğreticiyi tamamlamak için bu verileri indirmeniz gerekir.
Araştırma ve Yenilikçi Teknoloji Yönetimi, Ulaşım İstatistikleri Bürosu'na gidin.
Tüm veri alanlarını seçmek için Önceden Sıkıştırılmış Dosya onay kutusunu seçin.
İndir düğmesini seçin ve sonuçları bilgisayarınıza kaydedin.
Sıkıştırılmış dosyanın içeriğinin sıkıştırması açın ve dosyanın adını ve yolunu not kaydedin. Bu bilgilere sonraki bir adımda ihtiyacınız olacak.
Azure Databricks oluşturma
Bu bölümde, Azure Databricks kullanarak bir Azure portal hizmeti Azure portal.
Kaynak Azure portal Kaynak analizi oluştur'Azure Databricks. > >

Hizmet Azure Databricks altında, bir Databricks hizmeti oluşturmak için aşağıdaki değerleri sağlar:
Özellik Açıklama Çalışma alanı adı Databricks çalışma alanınız için bir ad sağlayın. Abonelik Açılan listeden Azure aboneliğinizi seçin. Kaynak grubu Yeni bir kaynak grubu oluşturmayı veya mevcut bir kaynak grubunu kullanmayı seçin. Kaynak grubu, bir Azure çözümüne ilişkin kaynakları tutan bir kapsayıcıdır. Daha fazla bilgi için bkz. Azure Kaynak Grubuna genel bakış. Konum Batı ABD 2'yi seçin. Kullanılabilir diğer bölgeler için bkz. Bölgeye göre kullanılabilir Azure hizmetleri. Fiyatlandırma Katmanı Standart'ı seçin. 
Hesabın oluşturulması birkaç dakika sürer. İşlem durumunu izlemek için üstteki ilerleme çubuğunu görüntüleme.
Panoya sabitle’yi ve sonra Oluştur’u seçin.
Azure Databricks’te Spark kümesi oluşturma
Veri Azure portal oluşturduğunuz Databricks hizmetine gidin ve Çalışma Alanını Başlat'ı seçin.
Azure Databricks portalına yönlendiriliyoruz. Portaldan Küme’yi seçin.

Yeni küme sayfasında, bir küme oluşturmak için değerleri girin.

Aşağıdaki alanlara değerleri girin ve diğer alanlar için varsayılan değerleri kabul edin:
Küme için bir ad girin.
120 dakika işlem yapılmadığında sonlandır onay kutusunu seçtiğinizden emin olun. Küme kullanılmazsa kümenin sonlandırılması için biz süre (dakika cinsinden) belirtin.
Küme oluştur'a seçin. Küme çalıştır edildikten sonra, kümeye not defterleri iliştirin ve Spark işlerini çalıştırabilirsiniz.
Veriyi çekme
Kaynak verilerini depolama hesabına kopyalama
.csvDosyanız'dan Data Lake Depolama 2. Nesil hesabınıza veri kopyalamak için AzCopy kullanın.
Bir komut istemi penceresi açın ve depolama hesabınızla oturum açmak için aşağıdaki komutu girin.
azcopy loginKullanıcı hesabınız için kimlik doğrulaması yapmak için komut istemi penceresinde görünen yönergeleri izleyin.
.csv hesabından veri kopyalamak için aşağıdaki komutu girin.
azcopy cp "<csv-folder-path>" https://<storage-account-name>.dfs.core.windows.net/<container-name>/folder1/On_Time.csvYer tutucu
<csv-folder-path>değerini, dosyanın .csvdeğiştirin.yer
<storage-account-name>tutucu değerini depolama hesabının adıyla değiştirin.yer
<container-name>tutucusunu depolama hesabınıza kapsayıcının adıyla değiştirin.
Kapsayıcı oluşturma ve bağlama
Bu bölümde, depolama hesabınız içinde bir kapsayıcı ve klasör oluşturacaksınız.
Uygulama Azure portal,oluşturduğunuz Azure Databricks hizmetine gidin ve Çalışma Alanını Başlat'ı seçin.
Sol tarafta Çalışma Alanı'ı seçin. Çalışma Alanı açılır listesinden Oluştur > Not Defteri’ni seçin.

Not Defteri Oluştur iletişim kutusunda, not defterinizin adını girin. Dil olarak Python'ı ve ardından daha önce oluşturduğunuz Spark kümesi'ni seçin.
Oluştur’u seçin.
Aşağıdaki kod bloğuna kopyalayıp ilk hücreye yapıştırın, ancak henüz bu kodu çalıştırmayın.
configs = {"fs.azure.account.auth.type": "OAuth", "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider", "fs.azure.account.oauth2.client.id": "<appId>", "fs.azure.account.oauth2.client.secret": "<clientSecret>", "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<tenant>/oauth2/token", "fs.azure.createRemoteFileSystemDuringInitialization": "true"} dbutils.fs.mount( source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/folder1", mount_point = "/mnt/flightdata", extra_configs = configs)Bu kod bloğunda, bu kod bloğundaki , , ve yer tutucu değerlerini bu öğreticinin önkoşullarını tamamladıktan sonra
appIdclientSecrettenantstorage-account-nametoplanmış değerlerle değiştirin. yercontainer-nametutucu değerini kapsayıcının adıyla değiştirin.Bu blokta kodu çalıştırmak için SHIFT + ENTER tuşlarına basın.
Daha sonra komut ekleyeceğimiz için bu not defterini açık durumda tutabilirsiniz.
Databricks Not Defteri'ni kullanarak CSV'yi Parquet biçimine dönüştürme
Daha önce oluşturduğunuz not defterinde yeni bir hücre ekleyin ve aşağıdaki kodu bu hücreye yapıştırın.
# Use the previously established DBFS mount point to read the data.
# create a data frame to read data.
flightDF = spark.read.format('csv').options(
header='true', inferschema='true').load("/mnt/flightdata/*.csv")
# read the airline csv file and write the output to parquet format for easy query.
flightDF.write.mode("append").parquet("/mnt/flightdata/parquet/flights")
print("Done")
Verileri inceleme
AzCopy aracılığıyla karşıya yüklenen CSV dosyalarının listesini almak için yeni bir hücreye aşağıdaki kodu yapıştırın.
import os.path
import IPython
from pyspark.sql import SQLContext
display(dbutils.fs.ls("/mnt/flightdata"))
Yeni bir dosya oluşturmak ve parquet/flights klasöründeki dosyaları listelemek için şu betiği çalıştırın:
dbutils.fs.put("/mnt/flightdata/1.txt", "Hello, World!", True)
dbutils.fs.ls("/mnt/flightdata/parquet/flights")
Bu kod örnekleriyle Data Lake Storage 2. Nesil etkin bir depolama hesabında depolanan verileri kullanarak HDFS’nin hiyerarşik özelliklerini keşfettiniz.
Verileri sorgulama
Bir sonraki adımda depolama hesabınıza yüklediğiniz verileri sorgulamaya başlayabilirsiniz. Aşağıdaki kod bloklarını Cmd 1 bölümüne girin ve Cmd + Enter tuşlarına basarak Python betiğini çalıştırın.
Veri kaynaklarınız için veri çerçeveleri oluşturmak için aşağıdaki betiği çalıştırın:
<csv-folder-path>Yer tutucu değerini .csv dosyasının yoluyla değiştirin.
# Copy this into a Cmd cell in your notebook.
acDF = spark.read.format('csv').options(
header='true', inferschema='true').load("/mnt/flightdata/On_Time.csv")
acDF.write.parquet('/mnt/flightdata/parquet/airlinecodes')
# read the existing parquet file for the flights database that was created earlier
flightDF = spark.read.format('parquet').options(
header='true', inferschema='true').load("/mnt/flightdata/parquet/flights")
# print the schema of the dataframes
acDF.printSchema()
flightDF.printSchema()
# print the flight database size
print("Number of flights in the database: ", flightDF.count())
# show the first 20 rows (20 is the default)
# to show the first n rows, run: df.show(n)
acDF.show(100, False)
flightDF.show(20, False)
# Display to run visualizations
# preferably run this in a separate cmd cell
display(flightDF)
Verilerin bazı temel analiz sorgularını çalıştırmak için bu betiği girin.
# Run each of these queries, preferably in a separate cmd cell for separate analysis
# create a temporary sql view for querying flight information
FlightTable = spark.read.parquet('/mnt/flightdata/parquet/flights')
FlightTable.createOrReplaceTempView('FlightTable')
# create a temporary sql view for querying airline code information
AirlineCodes = spark.read.parquet('/mnt/flightdata/parquet/airlinecodes')
AirlineCodes.createOrReplaceTempView('AirlineCodes')
# using spark sql, query the parquet file to return total flights in January and February 2016
out1 = spark.sql("SELECT * FROM FlightTable WHERE Month=1 and Year= 2016")
NumJan2016Flights = out1.count()
out2 = spark.sql("SELECT * FROM FlightTable WHERE Month=2 and Year= 2016")
NumFeb2016Flights = out2.count()
print("Jan 2016: ", NumJan2016Flights, " Feb 2016: ", NumFeb2016Flights)
Total = NumJan2016Flights+NumFeb2016Flights
print("Total flights combined: ", Total)
# List out all the airports in Texas
out = spark.sql(
"SELECT distinct(OriginCityName) FROM FlightTable where OriginStateName = 'Texas'")
print('Airports in Texas: ', out.show(100))
# find all airlines that fly from Texas
out1 = spark.sql(
"SELECT distinct(Reporting_Airline) FROM FlightTable WHERE OriginStateName='Texas'")
print('Airlines that fly to/from Texas: ', out1.show(100, False))
Kaynakları temizleme
Artık gerekli olmadığında kaynak grubunu ve tüm ilgili kaynakları silin. Bunu yapmak için depolama hesabına ait kaynak grubunu seçin ve Sil' i seçin.