Tutorial: Abfragen von HDFS in einem Big-Data-Cluster für SQL Server

Gilt für:yesSQL Server 2019 (15.x)

Wichtig

Das Microsoft SQL Server 2019-Big Data-Cluster-Add-On wird eingestellt. Der Support für SQL Server 2019-Big Data-Clusters endet am 28. Februar 2025. Weitere Informationen finden Sie unter Big Data-Optionen auf der Microsoft SQL Server-Plattform.

In diesem Tutorial erfahren Sie, wie Sie HDFS-Daten in einem SQL Server 2019: Big Data-Cluster abfragen.

In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer externen Tabelle, die auf HDFS-Daten in einem Big Data-Cluster zeigt
  • Verknüpfen dieser Daten mit hochwertigen Daten in der Masterinstanz

Tipp

Wenn Sie möchten, können Sie ein Skript für die Befehle in diesem Tutorial herunterladen und ausführen. Anweisungen finden Sie in den Beispielen zur Datenvirtualisierung auf GitHub.

Dieses 7-minütige Video führt Sie durch die Abfrage von HDFS-Daten in einem Big Data Cluster:

Voraussetzungen

Erstellen einer externen Tabelle für HDFS

Der Speicherpool enthält Daten zu Webclickstreams in einer in HDFS gespeicherten CSV-Datei. Führen Sie die folgenden Schritte aus, um eine externe Tabelle zu definieren, die auf die Daten in dieser Datei zugreifen kann.

  1. Stellen Sie in Azure Data Studio eine Verbindung mit der SQL Server-Masterinstanz Ihres Big Data-Clusters her. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit der SQL Server-Masterinstanz.

  2. Doppelklicken Sie im Fenster Server auf die Verbindung, um das Serverdashboard der SQL Server-Masterinstanz anzuzeigen. Wählen Sie Neue Abfrage aus.

    SQL Server master instance query

  3. Führen Sie den folgenden Transact-SQL-Befehl aus, um den Kontext in der Masterinstanz in die Sales-Datenbank zu ändern.

    USE Sales
    GO
    
  4. Definieren Sie das Format der CSV-Datei, die aus HDFS gelesen werden soll. Drücken Sie zum Ausführen der Anweisung die Taste F5.

    CREATE EXTERNAL FILE FORMAT csv_file
    WITH (
        FORMAT_TYPE = DELIMITEDTEXT,
        FORMAT_OPTIONS(
            FIELD_TERMINATOR = ',',
            STRING_DELIMITER = '"',
            FIRST_ROW = 2,
            USE_TYPE_DEFAULT = TRUE)
    );
    
  5. Erstellen Sie eine externe Datenquelle für den Speicherpool, wenn diese nicht bereits vorhanden ist.

    IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlStoragePool')
    BEGIN
      CREATE EXTERNAL DATA SOURCE SqlStoragePool
      WITH (LOCATION = 'sqlhdfs://controller-svc/default');
    END
    
  6. Erstellen Sie eine externe Tabelle, die /clickstream_data aus dem Speicherpool lesen kann. Auf den SqlStoragePool kann von der Masterinstanz eines Big Data-Clusters aus zugegriffen werden.

    CREATE EXTERNAL TABLE [web_clickstreams_hdfs]
    ("wcs_click_date_sk" BIGINT , "wcs_click_time_sk" BIGINT , "wcs_sales_sk" BIGINT , "wcs_item_sk" BIGINT , "wcs_web_page_sk" BIGINT , "wcs_user_sk" BIGINT)
    WITH
    (
        DATA_SOURCE = SqlStoragePool,
        LOCATION = '/clickstream_data',
        FILE_FORMAT = csv_file
    );
    GO
    

Abfragen der Daten

Führen Sie die folgende Abfrage aus, um die HDFS-Daten in der externen Tabelle web_clickstream_hdfs mit den relationalen Daten in der lokalen Datenbank Sales zu verknüpfen.

SELECT  
    wcs_user_sk,
    SUM( CASE WHEN i_category = 'Books' THEN 1 ELSE 0 END) AS book_category_clicks,
    SUM( CASE WHEN i_category_id = 1 THEN 1 ELSE 0 END) AS [Home & Kitchen],
    SUM( CASE WHEN i_category_id = 2 THEN 1 ELSE 0 END) AS [Music],
    SUM( CASE WHEN i_category_id = 3 THEN 1 ELSE 0 END) AS [Books],
    SUM( CASE WHEN i_category_id = 4 THEN 1 ELSE 0 END) AS [Clothing & Accessories],
    SUM( CASE WHEN i_category_id = 5 THEN 1 ELSE 0 END) AS [Electronics],
    SUM( CASE WHEN i_category_id = 6 THEN 1 ELSE 0 END) AS [Tools & Home Improvement],
    SUM( CASE WHEN i_category_id = 7 THEN 1 ELSE 0 END) AS [Toys & Games],
    SUM( CASE WHEN i_category_id = 8 THEN 1 ELSE 0 END) AS [Movies & TV],
    SUM( CASE WHEN i_category_id = 9 THEN 1 ELSE 0 END) AS [Sports & Outdoors]
  FROM [dbo].[web_clickstreams_hdfs]
  INNER JOIN item it ON (wcs_item_sk = i_item_sk
                        AND wcs_user_sk IS NOT NULL)
GROUP BY  wcs_user_sk;
GO

Bereinigung

Verwenden Sie den folgenden Befehl, um die in diesem Tutorial erstellte externe Tabelle zu entfernen.

DROP EXTERNAL TABLE [dbo].[web_clickstreams_hdfs];
GO

Nächste Schritte

Fahren Sie mit dem nächsten Artikel fort, um zu lernen, wie Sie Oracle aus einem Big Data-Cluster abfragen.