Wywoływanie programów MapReduce z usługi 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 MapReduce w usłudze Data Factory.

Działanie MapReduce usługi HDInsight w potoku usługi Data Factory wykonuje programy MapReduce samodzielnie lub na żądanie Windows/klastra usługi HDInsight opartego na systemie Linux. Ten artykuł opiera się na artykule dotyczącym działań przekształcania danych , który przedstawia ogólne omówienie transformacji danych i obsługiwanych działań przekształcania.

Uwaga

Jeśli dopiero zaczynasz 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.

Wprowadzenie

Potok w fabryce danych platformy Azure przetwarza dane w połączonych usługach magazynu przy użyciu połączonych usług obliczeniowych. Zawiera sekwencję działań, w których każde działanie wykonuje określoną operację przetwarzania. W tym artykule opisano używanie działania MapReduce usługi HDInsight.

Aby uzyskać szczegółowe informacje na temat uruchamiania skryptów Pig/Hive w klastrze hdinsight opartym na systemie Windows/Linux, zobacz Szczegółowe informacje na temat uruchamiania skryptów pig/Hive opartych na systemie Linux przy użyciu usługi HDInsight Pig i działań hive.

Kod JSON dla działania usługi HDInsight MapReduce

W definicji JSON działania usługi HDInsight:

  1. Ustaw typdziałania na wartość HDInsight.

  2. Określ nazwę klasy dla właściwości className .

  3. Określ ścieżkę do pliku JAR, w tym nazwę pliku dla właściwości jarFilePath .

  4. Określ połączoną usługę, która odwołuje się do Azure Blob Storage, która zawiera plik JAR dla właściwości jarLinkedService.

  5. Określ wszystkie argumenty programu MapReduce w sekcji argumentów. W czasie wykonywania zostanie wyświetlonych kilka dodatkowych argumentów (na przykład mapreduce.job.tags) z platformy MapReduce. Aby odróżnić argumenty za pomocą argumentów MapReduce, rozważ użycie zarówno opcji, jak i wartości jako argumentów, jak pokazano w poniższym przykładzie (s, --input, --output itp., są opcjami natychmiast po ich wartościach).

    {
        "name": "MahoutMapReduceSamplePipeline",
        "properties": {
            "description": "Sample Pipeline to Run a Mahout Custom Map Reduce Jar. This job calcuates an Item Similarity Matrix to determine the similarity between 2 items",
            "activities": [
                {
                    "type": "HDInsightMapReduce",
                    "typeProperties": {
                        "className": "org.apache.mahout.cf.taste.hadoop.similarity.item.ItemSimilarityJob",
                        "jarFilePath": "adfsamples/Mahout/jars/mahout-examples-0.9.0.2.2.7.1-34.jar",
                        "jarLinkedService": "StorageLinkedService",
                        "arguments": [
                            "-s",
                            "SIMILARITY_LOGLIKELIHOOD",
                            "--input",
                            "wasb://adfsamples@spestore.blob.core.windows.net/Mahout/input",
                            "--output",
                            "wasb://adfsamples@spestore.blob.core.windows.net/Mahout/output/",
                            "--maxSimilaritiesPerItem",
                            "500",
                            "--tempDir",
                            "wasb://adfsamples@spestore.blob.core.windows.net/Mahout/temp/mahout"
                        ]
                    },
                    "inputs": [
                        {
                            "name": "MahoutInput"
                        }
                    ],
                    "outputs": [
                        {
                            "name": "MahoutOutput"
                        }
                    ],
                    "policy": {
                        "timeout": "01:00:00",
                        "concurrency": 1,
                        "retry": 3
                    },
                    "scheduler": {
                        "frequency": "Hour",
                        "interval": 1
                    },
                    "name": "MahoutActivity",
                    "description": "Custom Map Reduce to generate Mahout result",
                    "linkedServiceName": "HDInsightLinkedService"
                }
            ],
            "start": "2017-01-03T00:00:00Z",
            "end": "2017-01-04T00:00:00Z"
        }
    }
    

    Możesz użyć działania MapReduce usługi HDInsight, aby uruchomić dowolny plik jar MapReduce w klastrze usługi HDInsight. W poniższej przykładowej definicji JSON potoku działanie usługi HDInsight jest skonfigurowane do uruchamiania Mahout pliku JAR.

Przykład w GitHub

Przykładowy przykład można pobrać przy użyciu działania usługi HDInsight MapReduce w witrynie: Przykłady usługi Data Factory w GitHub.

Uruchamianie programu zliczającego wyrazy

Potok w tym przykładzie uruchamia program Word Count Map/Reduce w klastrze usługi Azure HDInsight.

Połączone usługi

Najpierw utworzysz połączoną usługę, aby połączyć usługę Azure Storage, która jest używana przez klaster usługi Azure HDInsight do fabryki danych Azure. Jeśli skopiujesz/wklejesz następujący kod, nie zapomnij zastąpić nazwy konta i klucza konta nazwą i kluczem usługi Azure Storage.

Połączona usługa Azure Storage

{
    "name": "StorageLinkedService",
    "properties": {
        "type": "AzureStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>"
        }
    }
}

Połączona usługa Azure HDInsight

Następnie utworzysz połączoną usługę, aby połączyć klaster usługi Azure HDInsight z fabryką danych Azure. Jeśli skopiujesz/wklejesz następujący kod, zastąp nazwę klastra usługi HDInsight nazwą klastra usługi HDInsight , a następnie zmień wartości nazwy użytkownika i hasła.

{
    "name": "HDInsightLinkedService",
    "properties": {
        "type": "HDInsight",
        "typeProperties": {
            "clusterUri": "https://<HDInsight cluster name>.azurehdinsight.net",
            "userName": "admin",
            "password": "**********",
            "linkedServiceName": "StorageLinkedService"
        }
    }
}

Zestawy danych

Wyjściowy zestaw danych

Potok w tym przykładzie nie pobiera żadnych danych wejściowych. Należy określić wyjściowy zestaw danych dla działania usługi HDInsight MapReduce. Ten zestaw danych jest tylko fikcyjnym zestawem danych wymaganym do napędzania harmonogramu potoku.

{
    "name": "MROutput",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": "StorageLinkedService",
        "typeProperties": {
            "fileName": "WordCountOutput1.txt",
            "folderPath": "example/data/",
            "format": {
                "type": "TextFormat",
                "columnDelimiter": ","
            }
        },
        "availability": {
            "frequency": "Day",
            "interval": 1
        }
    }
}

Potok

Potok w tym przykładzie ma tylko jedno działanie o typie: HDInsightMapReduce. Niektóre z ważnych właściwości w formacie JSON to:

Właściwość Uwagi
typ Typ musi być ustawiony na HDInsightMapReduce.
Classname Nazwa klasy to: wordcount
jarFilePath Ścieżka do pliku jar zawierającego klasę. Jeśli skopiujesz/wklejesz następujący kod, nie zapomnij zmienić nazwy klastra.
jarLinkedService Połączona usługa azure Storage zawierająca plik jar. Ta połączona usługa odwołuje się do magazynu skojarzonego z klastrem usługi HDInsight.
Argumenty Program wordcount przyjmuje dwa argumenty, dane wejściowe i dane wyjściowe. Plik wejściowy jest plikiem davinci.txt.
frequency/interval Wartości tych właściwości są zgodne z wyjściowym zestawem danych.
linkedServiceName odnosi się do utworzonej wcześniej połączonej usługi HDInsight.
{
    "name": "MRSamplePipeline",
    "properties": {
        "description": "Sample Pipeline to Run the Word Count Program",
        "activities": [
            {
                "type": "HDInsightMapReduce",
                "typeProperties": {
                    "className": "wordcount",
                    "jarFilePath": "<HDInsight cluster name>/example/jars/hadoop-examples.jar",
                    "jarLinkedService": "StorageLinkedService",
                    "arguments": [
                        "/example/data/gutenberg/davinci.txt",
                        "/example/data/WordCountOutput1"
                    ]
                },
                "outputs": [
                    {
                        "name": "MROutput"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1,
                    "retry": 3
                },
                "scheduler": {
                    "frequency": "Day",
                    "interval": 1
                },
                "name": "MRActivity",
                "linkedServiceName": "HDInsightLinkedService"
            }
        ],
        "start": "2014-01-03T00:00:00Z",
        "end": "2014-01-04T00:00:00Z"
    }
}

Uruchamianie programów Spark

Możesz użyć działania MapReduce, aby uruchomić programy platformy Spark w klastrze usługi HDInsight Spark. Zobacz Wywoływanie programów platformy Spark z usługi Azure Data Factory.

Zobacz też