Öğretici: Spark kullanarak Azure Databricks Data Lake Storage 2. verilere erişmeTutorial: Access Data Lake Storage Gen2 data with Azure Databricks using Spark

Bu öğreticide, Azure Databricks kümenizi Azure Data Lake Storage 2. etkin olan bir Azure depolama hesabında depolanan verilere nasıl bağlayabilmeniz gösterilmektedir.This tutorial shows you how to connect your Azure Databricks cluster to data stored in an Azure storage account that has Azure Data Lake Storage Gen2 enabled. Bu bağlantı, verilerinizde kümenizdeki sorguları ve Analizi yerel olarak çalıştırmanızı sağlar.This connection enables you to natively run queries and analytics from your cluster on your data.

Bu öğreticide şunları yapacaksınız:In this tutorial, you will:

  • Databricks kümesi oluşturmaCreate a Databricks cluster
  • Yapılandırılmamış verileri bir depolama hesabına almaIngest unstructured data into a storage account
  • Blob depolamada verileriniz üzerinde analiz çalıştırmaRun analytics on your data in Blob storage

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.If you don’t have an Azure subscription, create a free account before you begin.

ÖnkoşullarPrerequisites

Uçuş verilerini indirmeDownload the flight data

Bu öğretici, bir ETL işleminin nasıl gerçekleştirileceğini göstermek için, taşıma Istatistikleri bürolarından uçuş verilerini kullanır.This tutorial uses flight data from the Bureau of Transportation Statistics to demonstrate how to perform an ETL operation. Öğreticiyi tamamlayabilmeniz için bu verileri indirmeniz gerekir.You must download this data to complete the tutorial.

  1. Araştırma ve yenilikçi teknoloji yönetimi, nakliye Istatistikleri Bürosu 'na gidin.Go to Research and Innovative Technology Administration, Bureau of Transportation Statistics.

  2. Tüm veri alanlarını seçmek için önceden daraltılmış dosya onay kutusunu seçin.Select the Prezipped File check box to select all data fields.

  3. İndir düğmesini seçin ve sonuçları bilgisayarınıza kaydedin.Select the Download button and save the results to your computer.

  4. Daraltılmış dosyanın içeriğini açın ve dosyanın adını ve yolunu bir yere ayıklayın.Unzip the contents of the zipped file and make a note of the file name and the path of the file. Daha sonraki bir adımda bu bilgilere ihtiyacınız vardır.You need this information in a later step.

Azure Databricks hizmeti oluşturmaCreate an Azure Databricks service

Bu bölümde, Azure portal kullanarak bir Azure Databricks hizmeti oluşturursunuz.In this section, you create an Azure Databricks service by using the Azure portal.

  1. Azure portalında Kaynak oluşturun > Analiz > Azure Databricks'i seçin.In the Azure portal, select Create a resource > Analytics > Azure Databricks.

    Azure portalında DatabricksDatabricks on Azure portal

  2. Azure Databricks hizmetialtında, Databricks hizmeti oluşturmak için aşağıdaki değerleri sağlayın:Under Azure Databricks Service, provide the following values to create a Databricks service:

    ÖzellikProperty AçıklamaDescription
    Çalışma alanı adıWorkspace name Databricks çalışma alanınız için bir ad sağlayın.Provide a name for your Databricks workspace.
    AbonelikSubscription Açılan listeden Azure aboneliğinizi seçin.From the drop-down, select your Azure subscription.
    Kaynak grubuResource group Yeni bir kaynak grubu oluşturmayı veya mevcut bir kaynak grubunu kullanmayı seçin.Specify whether you want to create a new resource group or use an existing one. Kaynak grubu, bir Azure çözümü için ilgili kaynakları bir arada tutan kapsayıcıdır.A resource group is a container that holds related resources for an Azure solution. Daha fazla bilgi için bkz. Azure Kaynak Grubuna genel bakış.For more information, see Azure Resource Group overview.
    LocationLocation Batı ABD 2'yi seçin.Select West US 2. Kullanılabilir diğer bölgeler için bkz. Bölgeye göre kullanılabilir Azure hizmetleri.For other available regions, see Azure services available by region.
    Fiyatlandırma KatmanıPricing Tier Standart' ı seçin.Select Standard.

    Azure Databricks çalışma alanı oluşturmaCreate an Azure Databricks workspace

  3. Hesabın oluşturulması birkaç dakika sürer.The account creation takes a few minutes. İşlem durumunu izlemek için üstteki ilerleme çubuğunu görüntüleyin.To monitor the operation status, view the progress bar at the top.

  4. Panoya sabitle’yi ve sonra Oluştur’u seçin.Select Pin to dashboard and then select Create.

Azure Databricks’te Spark kümesi oluşturmaCreate a Spark cluster in Azure Databricks

  1. Azure portal, oluşturduğunuz Databricks hizmetine gidin ve çalışma alanını Başlat' ı seçin.In the Azure portal, go to the Databricks service that you created, and select Launch Workspace.

  2. Azure Databricks portalına yönlendirilirsiniz.You're redirected to the Azure Databricks portal. Portaldan Küme’yi seçin.From the portal, select Cluster.

    Azure’da DatabricksDatabricks on Azure

  3. Yeni küme sayfasında, bir küme oluşturmak için değerleri girin.In the New cluster page, provide the values to create a cluster.

    Azure’da Databricks Spark kümesi oluşturmaCreate Databricks Spark cluster on Azure

  4. Aşağıdaki alanlara değerleri girin ve diğer alanlar için varsayılan değerleri kabul edin:Fill in values for the following fields, and accept the default values for the other fields:

    • Küme için bir ad girin.Enter a name for the cluster.

    • Bu makalede, 5,1 çalışma zamanına sahip bir küme oluşturun.For this article, create a cluster with the 5.1 runtime.

    • Etkinliksizlik süresi _ dolduktan sonra _ Sonlandır onay kutusunu seçtiğinizden emin olun.Make sure you select the Terminate after __ minutes of inactivity check box. Küme kullanılmıyorsa, kümeyi sonlandırmak için bir süre (dakika cinsinden) belirtin.If the cluster isn't being used, provide a duration (in minutes) to terminate the cluster.

    • Küme oluştur’u seçin.Select Create cluster. Küme çalıştırıldıktan sonra, kümeye Not defterleri ekleyebilir ve Spark işleri çalıştırabilirsiniz.After the cluster is running, you can attach notebooks to the cluster and run Spark jobs.

Veriyi çekmeIngest data

Kaynak verilerini depolama hesabına kopyalamaCopy source data into the storage account

. Csv dosyanızdaki verileri Data Lake Storage 2. hesabınıza kopyalamak Için AzCopy kullanın.Use AzCopy to copy data from your .csv file into your Data Lake Storage Gen2 account.

  1. Bir komut istemi penceresi açın ve depolama hesabınızda oturum açmak için aşağıdaki komutu girin.Open a command prompt window, and enter the following command to log into your storage account.

    azcopy login
    

    Kullanıcı hesabınızın kimliğini doğrulamak için komut istemi penceresinde görüntülenen yönergeleri izleyin.Follow the instructions that appear in the command prompt window to authenticate your user account.

  2. . Csv hesabındaki verileri kopyalamak için aşağıdaki komutu girin.To copy data from the .csv account, enter the following command.

    azcopy cp "<csv-folder-path>" https://<storage-account-name>.dfs.core.windows.net/<file-system-name>/folder1/On_Time.csv
    
    • Yer tutucu değerini . csv dosyasının yoluyla değiştirin. <csv-folder-path>Replace the <csv-folder-path> placeholder value with the path to the .csv file.

    • <storage-account-name> Yer tutucu değerini depolama hesabınızın adıyla değiştirin.Replace the <storage-account-name> placeholder value with the name of your storage account.

    • Yer tutucusunu <file-system-name> , dosya sisteminize vermek istediğiniz herhangi bir adla değiştirin.Replace the <file-system-name> placeholder with any name that you want to give your file system.

Bir dosya sistemi oluşturun ve bağlayınCreate a file system and mount it

Bu bölümde, depolama hesabınızda bir dosya sistemi ve bir klasör oluşturacaksınız.In this section, you'll create a file system and a folder in your storage account.

  1. Azure Portal, oluşturduğunuz Azure Databricks hizmetine gidin ve çalışma alanını Başlat' ı seçin.In the Azure portal, go to the Azure Databricks service that you created, and select Launch Workspace.

  2. Sol tarafta çalışma alanı' nı seçin.On the left, select Workspace. Çalışma Alanı açılır listesinden Oluştur > Not Defteri’ni seçin.From the Workspace drop-down, select Create > Notebook.

    Databricks 'te Not defteri oluşturmaCreate a notebook in Databricks

  3. Not Defteri Oluştur iletişim kutusunda, not defterinizin adını girin.In the Create Notebook dialog box, enter a name for the notebook. Dil olarak Python ' ı seçin ve daha önce oluşturduğunuz Spark kümesini seçin.Select Python as the language, and then select the Spark cluster that you created earlier.

  4. Oluştur’u seçin.Select Create.

  5. Aşağıdaki kod bloğunu kopyalayıp ilk hücreye yapıştırın, ancak henüz bu kodu çalıştırmayın.Copy and paste the following code block into the first cell, but don't run this code yet.

    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": "<password>",
           "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<tenant>/oauth2/token",
           "fs.azure.createRemoteFileSystemDuringInitialization": "true"}
    
    dbutils.fs.mount(
    source = "abfss://<file-system-name>@<storage-account-name>.dfs.core.windows.net/folder1",
    mount_point = "/mnt/flightdata",
    extra_configs = configs)
    
  6. Bu kod bloğunda, bu kod bloğundaki appId tenant, password, ve storage-account-name yer tutucu değerlerini, Bu öğreticinin önkoşullarını tamamlarken topladığınız değerlerle değiştirin.In this code block, replace the appId, password, tenant, and storage-account-name placeholder values in this code block with the values that you collected while completing the prerequisites of this tutorial. Yer tutucu file-system-name değerini, önceki adımda ADLS dosya sistemine verdiğiniz adla değiştirin.Replace the file-system-name placeholder value with the name that you gave to the ADLS File System on the previous step.

Bu değerleri, belirtilen yer tutucuları değiştirmek için kullanın.Use these values to replace the mentioned placeholders.

  • appId, Vepassword , hizmet sorumlusu oluşturmanın bir parçası olarak Active Directory ile kaydettiğiniz uygulamadan alınır.The appId, and password are from the app that you registered with active directory as part of creating a service principal.

  • , tenant-id Aboneliğinizden.The tenant-id is from your subscription.

  • , storage-account-name Azure Data Lake Storage 2. depolama hesabınızın adıdır.The storage-account-name is the name of your Azure Data Lake Storage Gen2 storage account.

  • Yer tutucusunu file-system-name , dosya sisteminize vermek istediğiniz herhangi bir adla değiştirin.Replace the file-system-name placeholder with any name that you want to give your file system.

Not

Bir üretim ayarında parolanızı Azure Databricks ' de depolamayı göz önünde bulundurun.In a production setting, consider storing your password in Azure Databricks. Ardından, parola yerine kod blosonra bir arama anahtarı ekleyin.Then, add a look up key to your code block instead of the password. Bu hızlı başlangıcı tamamladıktan sonra, bu yaklaşımın örneklerini görmek için Azure Databricks Web sitesindeki Azure Data Lake Storage 2. makalesine bakın.After you've completed this quickstart, see the Azure Data Lake Storage Gen2 article on the Azure Databricks Website to see examples of this approach.

  1. Bu bloktaki kodu çalıştırmak için SHIFT + enter tuşlarına basın.Press the SHIFT + ENTER keys to run the code in this block.

Daha sonra komutlara ekleyebileceğiniz bu not defterini açık tutun.Keep this notebook open as you will add commands to it later.

Databricks Not Defteri'ni kullanarak CSV'yi Parquet biçimine dönüştürmeUse Databricks Notebook to convert CSV to Parquet

Daha önce oluşturduğunuz not defterinde, yeni bir hücre ekleyin ve aşağıdaki kodu bu hücreye yapıştırın.In the notebook that you previously created, add a new cell, and paste the following code into that cell.

# 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 incelemeExplore data

Yeni bir hücrede, AzCopy aracılığıyla karşıya yüklenen CSV dosyalarının listesini almak için aşağıdaki kodu yapıştırın.In a new cell, paste the following code to get a list of CSV files uploaded via AzCopy.

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:To create a new file and list files in the parquet/flights folder, run this script:

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.With these code samples, you have explored the hierarchical nature of HDFS using data stored in a storage account with Data Lake Storage Gen2 enabled.

Verileri sorgulamaQuery the data

Bir sonraki adımda depolama hesabınıza yüklediğiniz verileri sorgulamaya başlayabilirsiniz.Next, you can begin to query the data you uploaded into your storage account. 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.Enter each of the following code blocks into Cmd 1 and press Cmd + Enter to run the Python script.

Veri kaynaklarınız için veri çerçeveleri oluşturmak için aşağıdaki betiği çalıştırın:To create data frames for your data sources, run the following script:

  • Yer tutucu değerini . csv dosyasının yoluyla değiştirin. <csv-folder-path>Replace the <csv-folder-path> placeholder value with the path to the .csv file.
# 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.Enter this script to run some basic analysis queries against the data.

# 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ı temizlemeClean up resources

Artık gerekli olmadığında kaynak grubunu ve tüm ilgili kaynakları silin.When they're no longer needed, delete the resource group and all related resources. Bunu yapmak için depolama hesabına ait kaynak grubunu seçin ve Sil' i seçin.To do so, select the resource group for the storage account and select Delete.

Sonraki adımlarNext steps