Przekształcanie danych przy użyciu działania pig w Azure Data Factory

Uwaga

Ten artykuł dotyczy wersji 1 usługi Data Factory. Jeśli używasz bieżącej wersji usługi Data Factory, zobacz przekształcanie danych przy użyciu działania pig w usłudze Data Factory.

Działanie usługi HDInsight Pig w potoku usługi Data Factory wykonuje zapytania pig na własnym lub na żądanie Windows/opartym na systemie Linux klastrze usługi HDInsight. Ten artykuł opiera się na artykule dotyczącym działań przekształcania danych , który przedstawia ogólny przegląd transformacji danych i obsługiwanych działań przekształcania.

Uwaga

Jeśli jesteś nowym użytkownikiem Azure Data Factory, zapoznaj się z artykułem Wprowadzenie do Azure Data Factory i wykonaj samouczek: Tworzenie pierwszego potoku danych przed przeczytaniem tego artykułu.

Składnia

{
  "name": "HiveActivitySamplePipeline",
  "properties": {
    "activities": [
      {
        "name": "Pig Activity",
        "description": "description",
        "type": "HDInsightPig",
        "inputs": [
          {
            "name": "input tables"
          }
        ],
        "outputs": [
          {
            "name": "output tables"
          }
        ],
        "linkedServiceName": "MyHDInsightLinkedService",
        "typeProperties": {
          "script": "Pig script",
          "scriptPath": "<pathtothePigscriptfileinAzureblobstorage>",
          "defines": {
            "param1": "param1Value"
          }
        },
        "scheduler": {
          "frequency": "Day",
          "interval": 1
        }
      }
    ]
  }
}

Szczegóły składni

Właściwość Opis Wymagane
name Nazwa działania Tak
description (opis) Tekst opisujący, do czego służy działanie Nie
typ HDinsightPig Tak
Wejścia Co najmniej jeden element wejściowy używany przez działanie Pig Nie
Wyjść Co najmniej jeden wynik generowany przez działanie Pig Tak
linkedServiceName Odwołanie do klastra usługi HDInsight zarejestrowanego jako połączona usługa w usłudze Data Factory Tak
skrypt Określanie wbudowanego skryptu pig Nie
scriptPath Zapisz skrypt pig w magazynie obiektów blob platformy Azure i podaj ścieżkę do pliku. Użyj właściwości "script" lub "scriptPath". Oba te elementy nie mogą być używane razem. W nazwie pliku jest uwzględniana wielkość liter. Nie
Definiuje Określanie parametrów jako par klucz/wartość na potrzeby odwoływania się do skryptu pig Nie

Przykład

Rozważmy przykład analizy dzienników gier, w których chcesz zidentyfikować czas spędzony przez graczy grających w gry uruchamiane przez firmę.

Poniższy przykładowy dziennik gier jest plikiem rozdzielanym przecinkami (,). Zawiera następujące pola: ProfileID, SessionStart, Duration, SrcIPAddress i GameType.

1809,2014-05-04 12:04:25.3470000,14,221.117.223.75,CaptureFlag
1703,2014-05-04 06:05:06.0090000,16,12.49.178.247,KingHill
1703,2014-05-04 10:21:57.3290000,10,199.118.18.179,CaptureFlag
1809,2014-05-04 05:24:22.2100000,23,192.84.66.141,KingHill
.....

Skrypt pig do przetwarzania tych danych:

PigSampleIn = LOAD 'wasb://adfwalkthrough@anandsub14.blob.core.windows.net/samplein/' USING PigStorage(',') AS (ProfileID:chararray, SessionStart:chararray, Duration:int, SrcIPAddress:chararray, GameType:chararray);

GroupProfile = Group PigSampleIn all;

PigSampleOut = Foreach GroupProfile Generate PigSampleIn.ProfileID, SUM(PigSampleIn.Duration);

Store PigSampleOut into 'wasb://adfwalkthrough@anandsub14.blob.core.windows.net/sampleoutpig/' USING PigStorage (',');

Aby wykonać ten skrypt pig w potoku usługi Data Factory, wykonaj następujące czynności:

  1. Utwórz połączoną usługę, aby zarejestrować własny klaster obliczeniowy usługi HDInsight lub skonfigurować klaster obliczeniowy usługi HDInsight na żądanie. Wywołajmy tę połączoną usługę HDInsightLinkedService.

  2. Utwórz połączoną usługę , aby skonfigurować połączenie z usługą Azure Blob Storage hostujących dane. Wywołajmy tę połączoną usługę StorageLinkedService.

  3. Tworzenie zestawów danych wskazujących dane wejściowe i wyjściowe. Wywołajmy wejściowy zestaw danych PigSampleIn i wyjściowy zestaw danych PigSampleOut.

  4. Skopiuj zapytanie Pig w pliku Azure Blob Storage skonfigurowane w kroku 2. Jeśli magazyn platformy Azure hostujący dane różni się od tego, który hostuje plik zapytania, utwórz oddzielną połączoną usługę Azure Storage. Zapoznaj się z połączoną usługą w konfiguracji działania. Użyj scriptPath , aby określić ścieżkę do pliku skryptu pig i scriptLinkedService.

    Uwaga

    Możesz również podać skrypt Pig w tekście w definicji działania przy użyciu właściwości script . Nie zalecamy jednak takiego podejścia, ponieważ wszystkie znaki specjalne w skrytecie muszą zostać usunięte i mogą powodować problemy z debugowaniem. Najlepszym rozwiązaniem jest wykonanie kroku 4.

  5. Utwórz potok za pomocą działania HDInsightPig. To działanie przetwarza dane wejściowe, uruchamiając skrypt Pig w klastrze usługi HDInsight.

    {
      "name": "PigActivitySamplePipeline",
      "properties": {
        "activities": [
          {
            "name": "PigActivitySample",
            "type": "HDInsightPig",
            "inputs": [
              {
                "name": "PigSampleIn"
              }
            ],
            "outputs": [
              {
                "name": "PigSampleOut"
              }
            ],
            "linkedServiceName": "HDInsightLinkedService",
            "typeproperties": {
              "scriptPath": "adfwalkthrough\\scripts\\enrichlogs.pig",
              "scriptLinkedService": "StorageLinkedService"
            },
            "scheduler": {
              "frequency": "Day",
              "interval": 1
            }
          }
        ]
      }
    }
    
  6. Wdróż potok. Aby uzyskać szczegółowe informacje, zobacz artykuł Creating pipelines (Tworzenie potoków ).

  7. Monitorowanie potoku przy użyciu widoków monitorowania i zarządzania fabryki danych. Aby uzyskać szczegółowe informacje, zobacz artykuł Monitorowanie potoków usługi Data Factory i zarządzanie nimi .

Określanie parametrów skryptu pig

Rozważmy następujący przykład: dzienniki gier są pozyskiwane codziennie do Azure Blob Storage i przechowywane w folderze podzielonym na partycje na podstawie daty i godziny. Chcesz sparametryzować skrypt pig i dynamicznie przekazać lokalizację folderu wejściowego w czasie wykonywania, a także wygenerować dane wyjściowe partycjonowane z datą i godziną.

Aby użyć sparametryzowanego skryptu pig, wykonaj następujące czynności:

  • Zdefiniuj parametry w definicji.

    {
      "name": "PigActivitySamplePipeline",
      "properties": {
        "activities": [
          {
            "name": "PigActivitySample",
            "type": "HDInsightPig",
            "inputs": [
              {
                "name": "PigSampleIn"
              }
            ],
            "outputs": [
              {
                "name": "PigSampleOut"
              }
            ],
            "linkedServiceName": "HDInsightLinkedService",
            "typeproperties": {
              "scriptPath": "adfwalkthrough\\scripts\\samplepig.hql",
              "scriptLinkedService": "StorageLinkedService",
              "defines": {
                "Input": "$$Text.Format('wasb: //adfwalkthrough@<storageaccountname>.blob.core.windows.net/samplein/yearno={0: yyyy}/monthno={0:MM}/dayno={0: dd}/',SliceStart)",
                "Output": "$$Text.Format('wasb://adfwalkthrough@<storageaccountname>.blob.core.windows.net/sampleout/yearno={0:yyyy}/monthno={0:MM}/dayno={0:dd}/', SliceStart)"
              }
            },
            "scheduler": {
              "frequency": "Day",
              "interval": 1
            }
          }
        ]
      }
    }
    
  • W skrygcie pig odwołaj się do parametrów przy użyciu polecenia "$parameterName", jak pokazano w poniższym przykładzie:

    PigSampleIn = LOAD '$Input' USING PigStorage(',') AS (ProfileID:chararray, SessionStart:chararray, Duration:int, SrcIPAddress:chararray, GameType:chararray);
    GroupProfile = Group PigSampleIn all;
    PigSampleOut = Foreach GroupProfile Generate PigSampleIn.ProfileID, SUM(PigSampleIn.Duration);
    Store PigSampleOut into '$Output' USING PigStorage (','); 
    

Zobacz też