Kopiowanie danych do i z Data Lake Storage Gen1 przy użyciu 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 łącznik Azure Data Lake Storage Gen1 w wersji 2.

W tym artykule wyjaśniono, jak używać działania kopiowania w usłudze Azure Data Factory do przenoszenia danych do i z usługi Azure Data Lake Storage Gen1 (wcześniej znanej jako Azure Data Lake Store). Jest on oparty na artykule Działania przenoszenia danych — omówienie przenoszenia danych za pomocą działania kopiowania.

Obsługiwane scenariusze

Dane z usługi Azure Data Lake Store można skopiować do następujących magazynów danych:

Kategoria Magazyn danych
Azure Azure Blob Storage
Usługa Azure Data Lake Storage 1. generacji
Azure Cosmos DB (interfejs API SQL)
Azure SQL Database
Azure Synapse Analytics
indeks Azure Cognitive Search
Azure Table storage
Bazy danych SQL Server
Oracle
Plik System plików

Możesz skopiować dane z następujących magazynów danych do usługi Azure Data Lake Store:

Kategoria Magazyn danych
Azure Azure Blob Storage
Azure Cosmos DB (interfejs API SQL)
Usługa Azure Data Lake Storage 1. generacji
Azure SQL Database
Azure Synapse Analytics
Azure Table storage
Bazy danych Amazon Redshift
DB2
MySQL
Oracle
PostgreSQL
SAP Business Warehouse
SAP HANA
SQL Server
Sybase
Teradata
NoSQL Cassandra
MongoDB
Plik Amazon S3
System plików
FTP
HDFS
SFTP
Inne Ogólne HTTP
Ogólne OData
Ogólne ODBC
Salesforce
Tabela internetowa (tabela z kodu HTML)

Uwaga

Utwórz konto usługi Data Lake Store przed utworzeniem potoku za pomocą działania kopiowania. Aby uzyskać więcej informacji, zobacz Wprowadzenie z usługą Azure Data Lake Store.

Obsługiwane typy uwierzytelniania

Łącznik usługi Data Lake Store obsługuje następujące typy uwierzytelniania:

  • Uwierzytelnianie jednostki usługi
  • Uwierzytelnianie poświadczeń użytkownika (OAuth)

Zalecamy używanie uwierzytelniania jednostki usługi, szczególnie w przypadku zaplanowanej kopii danych. Zachowanie wygasania tokenu może wystąpić w przypadku uwierzytelniania poświadczeń użytkownika. Aby uzyskać szczegółowe informacje o konfiguracji, zobacz sekcję Właściwości połączonej usługi .

Rozpoczęcie pracy

Potok można utworzyć za pomocą działania kopiowania, które przenosi dane do/z usługi Azure Data Lake Store przy użyciu różnych narzędzi/interfejsów API.

Najprostszym sposobem utworzenia potoku do kopiowania danych jest użycie Kreatora kopiowania. Aby zapoznać się z samouczkiem dotyczącym tworzenia potoku przy użyciu Kreatora kopiowania, zobacz Samouczek: tworzenie potoku przy użyciu Kreatora kopiowania.

Do utworzenia potoku można również użyć następujących narzędzi: Visual Studio, Azure PowerShell, szablon usługi Azure Resource Manager, interfejs API platformy .NET i interfejs API REST. Zobacz samouczek działanie Kopiuj, aby uzyskać instrukcje krok po kroku dotyczące tworzenia potoku za pomocą działania kopiowania.

Niezależnie od tego, czy używasz narzędzi, czy interfejsów API, należy wykonać następujące kroki, aby utworzyć potok, który przenosi dane z magazynu danych źródłowych do magazynu danych ujścia:

  1. Tworzenie fabryki danych. Fabryka danych może zawierać co najmniej jeden potok.
  2. Utwórz połączone usługi , aby połączyć wejściowe i wyjściowe magazyny danych z fabryką danych. Jeśli na przykład kopiujesz dane z usługi Azure Blob Storage do usługi Azure Data Lake Store, utworzysz dwie połączone usługi w celu połączenia konta usługi Azure Storage i usługi Azure Data Lake Store z fabryką danych. Aby uzyskać informacje o połączonych właściwościach usługi specyficznych dla usługi Azure Data Lake Store, zobacz sekcję właściwości połączonej usługi .
  3. Utwórz zestawy danych do reprezentowania danych wejściowych i wyjściowych dla operacji kopiowania. W przykładzie wymienionym w ostatnim kroku utworzysz zestaw danych w celu określenia kontenera obiektów blob i folderu zawierającego dane wejściowe. Następnie utworzysz inny zestaw danych, aby określić folder i ścieżkę pliku w usłudze Data Lake Store, w której przechowywane są dane skopiowane z magazynu obiektów blob. Aby uzyskać informacje o właściwościach zestawu danych specyficznych dla usługi Azure Data Lake Store, zobacz sekcję właściwości zestawu danych .
  4. Utwórz potok z działaniem kopiowania, które pobiera zestaw danych jako dane wejściowe i zestaw danych jako dane wyjściowe. W podanym wcześniej przykładzie jako źródło i azureDataLakeStoreSink jako ujście działania kopiowania należy użyć obiektu BlobSource. Podobnie w przypadku kopiowania z usługi Azure Data Lake Store do Azure Blob Storage użyjesz usług AzureDataLakeStoreSource i BlobSink w działaniu kopiowania. Aby uzyskać informacje o właściwościach działania kopiowania specyficznych dla usługi Azure Data Lake Store, zobacz sekcję właściwości działania kopiowania . Aby uzyskać szczegółowe informacje na temat używania magazynu danych jako źródła lub ujścia, kliknij link w poprzedniej sekcji dla magazynu danych.

Podczas korzystania z kreatora definicje JSON dla tych jednostek usługi Data Factory (połączone usługi, zestawy danych i potok) są tworzone automatycznie. W przypadku korzystania z narzędzi/interfejsów API (z wyjątkiem interfejsu API platformy .NET) te jednostki usługi Data Factory są definiowane przy użyciu formatu JSON. Przykłady z definicjami JSON dla jednostek usługi Data Factory, które są używane do kopiowania danych do/z usługi Azure Data Lake Store, zobacz sekcję przykładów JSON w tym artykule.

Poniższe sekcje zawierają szczegółowe informacje o właściwościach JSON, które są używane do definiowania jednostek usługi Data Factory specyficznych dla usługi Data Lake Store.

Właściwości połączonej usługi

Połączona usługa łączy magazyn danych z fabryką danych. Utworzysz połączoną usługę typu AzureDataLakeStore , aby połączyć dane usługi Data Lake Store z fabryką danych. W poniższej tabeli opisano elementy JSON specyficzne dla połączonych usług usługi Data Lake Store. Możesz wybrać jedną jednostkę usługi i uwierzytelnianie poświadczeń użytkownika.

Właściwość Opis Wymagane
Typu Właściwość type musi być ustawiona na Wartość AzureDataLakeStore. Tak
dataLakeStoreUri Informacje o koncie usługi Azure Data Lake Store. Te informacje mają jeden z następujących formatów: https://[accountname].azuredatalakestore.net/webhdfs/v1 lub adl://[accountname].azuredatalakestore.net/. Tak
subscriptionId Identyfikator subskrypcji platformy Azure, do którego należy konto usługi Data Lake Store. Wymagane do ujścia
resourceGroupName Nazwa grupy zasobów platformy Azure, do której należy konto usługi Data Lake Store. Wymagane do ujścia

Aby użyć uwierzytelniania jednostki usługi, zarejestruj jednostkę aplikacji w usłudze Azure Active Directory (Azure AD) i przyznaj jej dostęp do usługi Data Lake Store. Aby uzyskać szczegółowe instrukcje, zobacz Service-to-service authentication (Uwierzytelnianie typu usługa-usługa). Zanotuj następujące wartości, których użyjesz do zdefiniowania połączonej usługi:

  • Identyfikator aplikacji
  • Klucz aplikacji
  • Identyfikator dzierżawy

Ważne

Upewnij się, że udzielono jednostce usługi odpowiednich uprawnień w usłudze Azure Data Lake Store:

  • Aby użyć usługi Data Lake Store jako źródła, przyznaj co najmniej uprawnienia dostępu do odczytu i wykonywania danych do wyświetlania listy i kopiowania zawartości folderu lub uprawnienia do odczytu w celu skopiowania pojedynczego pliku. Kontrola dostępu na poziomie konta nie jest wymagana.
  • Aby użyć usługi Data Lake Store jako ujścia, przyznaj co najmniej uprawnienie dostępu do zapisu i wykonywania danych, aby utworzyć elementy podrzędne w folderze. Jeśli używasz środowiska Azure IR do zwiększania możliwości kopiowania (zarówno źródła, jak i ujścia znajdują się w chmurze), aby umożliwić usłudze Data Factory wykrywanie regionu usługi Data Lake Store, przyznaj co najmniej rolę Czytelnika w kontroli dostępu do konta (IAM). Jeśli chcesz uniknąć tej roli zarządzanie dostępem i tożsamościami, określ wartość executionLocation z lokalizacją usługi Data Lake Store w działaniu kopiowania.
  • Jeśli używasz Kreatora kopiowania do tworzenia potoków, przyznaj co najmniej rolę Czytelnik w kontroli dostępu do konta (Zarządzanie dostępem i tożsamościami). Ponadto przyznaj co najmniej uprawnienie odczyt i wykonanie do katalogu głównego usługi Data Lake Store ("/") i jego elementów podrzędnych. W przeciwnym razie może zostać wyświetlony komunikat "Podane poświadczenia są nieprawidłowe".

Użyj uwierzytelniania jednostki usługi, określając następujące właściwości:

Właściwość Opis Wymagane
servicePrincipalId Określ identyfikator klienta aplikacji. Tak
servicePrincipalKey Określ klucz aplikacji. Tak
tenant Określ informacje o dzierżawie (nazwę domeny lub identyfikator dzierżawy), w ramach których znajduje się aplikacja. Możesz go pobrać, umieszczając wskaźnik myszy w prawym górnym rogu Azure Portal. Tak

Przykład: Uwierzytelnianie jednostki usługi

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": "<service principal key>",
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        }
    }
}

Uwierzytelnianie poświadczeń użytkownika

Alternatywnie możesz użyć uwierzytelniania poświadczeń użytkownika do skopiowania z usługi Data Lake Store lub do usługi Data Lake Store, określając następujące właściwości:

Właściwość Opis Wymagane
Autoryzacji Kliknij przycisk Autoryzuj w Edytorze fabryki danych i wprowadź swoje poświadczenia, które przypisuje automatycznie wygenerowany adres URL autoryzacji do tej właściwości. Tak
Sessionid Identyfikator sesji OAuth z sesji autoryzacji OAuth. Każdy identyfikator sesji jest unikatowy i może być używany tylko raz. To ustawienie jest generowane automatycznie podczas korzystania z Edytora fabryki danych. Tak

Ważne

Upewnij się, że udzielono użytkownikowi odpowiednich uprawnień w usłudze Azure Data Lake Store:

  • Aby użyć usługi Data Lake Store jako źródła, przyznaj co najmniej uprawnienia dostępu do odczytu i wykonywania danych do wyświetlania listy i kopiowania zawartości folderu lub uprawnienia do odczytu w celu skopiowania pojedynczego pliku. Kontrola dostępu na poziomie konta nie jest wymagana.
  • Aby użyć usługi Data Lake Store jako ujścia, przyznaj co najmniej uprawnienie dostępu do zapisu i wykonywania danych, aby utworzyć elementy podrzędne w folderze. Jeśli używasz środowiska Azure IR do zwiększania możliwości kopiowania (zarówno źródła, jak i ujścia znajdują się w chmurze), aby umożliwić usłudze Data Factory wykrywanie regionu usługi Data Lake Store, przyznaj co najmniej rolę Czytelnika w kontroli dostępu do konta (IAM). Jeśli chcesz uniknąć tej roli zarządzanie dostępem i tożsamościami, określ wartość executionLocation z lokalizacją usługi Data Lake Store w działaniu kopiowania.
  • Jeśli używasz Kreatora kopiowania do tworzenia potoków, przyznaj co najmniej rolę Czytelnik w kontroli dostępu do konta (Zarządzanie dostępem i tożsamościami). Ponadto przyznaj co najmniej uprawnienie odczyt i wykonanie do katalogu głównego usługi Data Lake Store ("/") i jego elementów podrzędnych. W przeciwnym razie może zostać wyświetlony komunikat "Podane poświadczenia są nieprawidłowe".

Przykład: uwierzytelnianie poświadczeń użytkownika

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "sessionId": "<session ID>",
            "authorization": "<authorization URL>",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        }
    }
}

Wygaśnięcie tokenu

Kod autoryzacji generowany przy użyciu przycisku Autoryzuj wygasa po upływie określonego czasu. Następujący komunikat oznacza, że token uwierzytelniania wygasł:

Błąd operacji poświadczeń: invalid_grant — AADSTS70002: Błąd podczas walidacji poświadczeń. AADSTS70008: Udzielona dotacja dostępu wygasła lub została odwołana. Identyfikator śledzenia: d18629e8-af88-43c5-88e3-d8419eb1fca1fca1 Identyfikator korelacji: fac30a0c-6be6-4e02-8d69-a776d2ffefd7 Sygnatura czasowa: 2015-12-15 21-09-31Z.

W poniższej tabeli przedstawiono czas wygaśnięcia różnych typów kont użytkowników:

Typ użytkownika Wygasa po
Konta użytkowników niezarządzane przez Azure Active Directory (na przykład @hotmail.com lub@live.com) 12 godzin
Konta użytkowników zarządzane przez Azure Active Directory 14 dni po ostatnim uruchomieniu wycinka

90 dni, jeśli wycinek oparty na połączonej usłudze OAuth jest uruchamiany co najmniej raz na 14 dni

Jeśli zmienisz hasło przed upływem czasu wygaśnięcia tokenu, token wygaśnie natychmiast. Zostanie wyświetlony komunikat wymieniony wcześniej w tej sekcji.

Możesz ponownie uwierzytelnić konto przy użyciu przycisku Autoryzuj , gdy token wygaśnie, aby ponownie wdrożyć połączoną usługę. Można również programowo wygenerować wartości właściwości sessionId i authorization przy użyciu następującego kodu:

if (linkedService.Properties.TypeProperties is AzureDataLakeStoreLinkedService ||
    linkedService.Properties.TypeProperties is AzureDataLakeAnalyticsLinkedService)
{
    AuthorizationSessionGetResponse authorizationSession = this.Client.OAuth.Get(this.ResourceGroupName, this.DataFactoryName, linkedService.Properties.Type);

    WindowsFormsWebAuthenticationDialog authenticationDialog = new WindowsFormsWebAuthenticationDialog(null);
    string authorization = authenticationDialog.AuthenticateAAD(authorizationSession.AuthorizationSession.Endpoint, new Uri("urn:ietf:wg:oauth:2.0:oob"));

    AzureDataLakeStoreLinkedService azureDataLakeStoreProperties = linkedService.Properties.TypeProperties as AzureDataLakeStoreLinkedService;
    if (azureDataLakeStoreProperties != null)
    {
        azureDataLakeStoreProperties.SessionId = authorizationSession.AuthorizationSession.SessionId;
        azureDataLakeStoreProperties.Authorization = authorization;
    }

    AzureDataLakeAnalyticsLinkedService azureDataLakeAnalyticsProperties = linkedService.Properties.TypeProperties as AzureDataLakeAnalyticsLinkedService;
    if (azureDataLakeAnalyticsProperties != null)
    {
        azureDataLakeAnalyticsProperties.SessionId = authorizationSession.AuthorizationSession.SessionId;
        azureDataLakeAnalyticsProperties.Authorization = authorization;
    }
}

Aby uzyskać szczegółowe informacje o klasach usługi Data Factory używanych w kodzie, zobacz tematy Klasy AzureDataLakeStoreLinkedService, AzureDataLakeAnalyticsLinkedService i AuthorizationSessionGetResponse Class (Klasa Klasy AzureDataLakeStoreLinkedService), AzureDataLakeAnalyticsLinkedService i AuthorizationSessionGetResponse Class (Klasa Klasy AuthorizationSessionGetResponse). Dodaj odwołanie do wersji 2.9.10826.1824Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll klasy WindowsFormsWebAuthenticationDialog używanej w kodzie.

Wskazówki dotyczące rozwiązywania problemów

Objawem: Podczas kopiowania danych do usługi Azure Data Lake Store, jeśli działanie kopiowania nie powiedzie się z powodu następującego błędu:

Failed to detect the region for Azure Data Lake account {your account name}. Please make sure that the Resource Group name: {resource group name} and subscription ID: {subscription ID} of this Azure Data Lake Store resource are correct.

Przyczynę: Istnieją 2 możliwe przyczyny:

  1. Element resourceGroupName i/lub subscriptionId określony w połączonej usłudze Azure Data Lake Store jest niepoprawny;
  2. Użytkownik lub jednostka usługi nie ma wymaganych uprawnień.

Rozwiązanie:

  1. Upewnij się, że wartości subscriptionId i resourceGroupName określone w połączonej usłudze typeProperties są rzeczywiście tymi, do których należy twoje konto usługi Data Lake.

  2. Udziel w minimun roli Czytelnik użytkownikowi lub jednostce usługi na koncie usługi Data Lake.

    Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu Azure Portal.

  3. Jeśli nie chcesz przyznać roli Czytelnik użytkownikowi lub jednostce usługi, alternatywą jest jawne określenie lokalizacji wykonywania w działaniu kopiowania z lokalizacją usługi Data Lake Store. Przykład:

    {
      "name": "CopyToADLS",
      "type": "Copy",
      ......
      "typeProperties": {
        "source": {
          "type": "<source type>"
        },
        "sink": {
          "type": "AzureDataLakeStoreSink"
        },
        "exeuctionLocation": "West US"
      }
    }
    

Właściwości zestawu danych

Aby określić zestaw danych reprezentujący dane wejściowe w usłudze Data Lake Store, należy ustawić właściwość typu zestawu danych na AzureDataLakeStore. Ustaw właściwość linkedServiceName zestawu danych na nazwę połączonej usługi Data Lake Store. Aby uzyskać pełną listę sekcji i właściwości JSON dostępnych do definiowania zestawów danych, zobacz artykuł Tworzenie zestawów danych . Sekcje zestawu danych w formacie JSON, takie jak struktura, dostępność i zasady, są podobne do wszystkich typów zestawów danych (na przykład Azure SQL bazy danych, obiektów blob platformy Azure i tabeli platformy Azure). Sekcja typeProperties jest inna dla każdego typu zestawu danych i zawiera informacje, takie jak lokalizacja i format danych w magazynie danych.

Sekcja typeProperties dla zestawu danych typu AzureDataLakeStore zawiera następujące właściwości:

Właściwość Opis Wymagane
folderPath Ścieżka do kontenera i folderu w usłudze Data Lake Store. Tak
fileName Nazwa pliku w usłudze Azure Data Lake Store. Właściwość fileName jest opcjonalna i uwzględnia wielkość liter.

Jeśli określisz wartość fileName, działanie (w tym kopiowanie) działa na określonym pliku.

Jeśli parametr fileName nie zostanie określony, opcja Copy zawiera wszystkie pliki w folderPath w wejściowym zestawie danych.

Jeśli parametr fileName nie jest określony dla wyjściowego zestawu danych i parametr preserveHierarchy nie jest określony w ujściu działania, nazwa wygenerowanego pliku jest w formacie Data._Guid_.txt. Na przykład: Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.
Nie
partitionedBy Właściwość partitionedBy jest opcjonalna . Można go użyć do określenia ścieżki dynamicznej i nazwy pliku dla danych szeregów czasowych. Na przykład folderPath można sparametryzować dla każdej godziny danych. Aby uzyskać szczegółowe informacje i przykłady, zobacz właściwość PartitionedBy. Nie
Formacie Obsługiwane są następujące typy formatów: TextFormat, JsonFormat, AvroFormat, OrcFormat i ParquetFormat. Ustaw właściwość type w formacie na jedną z tych wartości. Aby uzyskać więcej informacji, zobacz sekcje Format tekstu, Format JSON, Format Avro, FORMAT ORC i Parquet Format w formatach plików i kompresji obsługiwanych przez Azure Data Factory artykule.

Jeśli chcesz skopiować pliki "as-is" między magazynami opartymi na plikach (kopiowanie binarne), pomiń sekcję format w definicjach zestawu danych wejściowych i wyjściowych.
Nie
Kompresji Określ typ i poziom kompresji danych. Obsługiwane typy to GZip, Deflate, BZip2 i ZipDeflate. Obsługiwane poziomy są optymalne i najszybsze. Aby uzyskać więcej informacji, zobacz Formaty plików i kompresji obsługiwane przez Azure Data Factory. Nie

Właściwość partitionedBy

Można określić dynamiczne właściwości folderPath i fileName dla danych szeregów czasowych z właściwością partitionedBy , funkcjami usługi Data Factory i zmiennymi systemowymi. Aby uzyskać szczegółowe informacje, zobacz artykuł Azure Data Factory — funkcje i zmienne systemowe.

W poniższym przykładzie {Slice} zostanie zastąpiona wartością zmiennej SliceStart systemowej usługi Data Factory w określonym formacie (yyyyMMddHH). Nazwa SliceStart odwołuje się do godziny rozpoczęcia wycinka. Właściwość folderPath jest inna dla każdego wycinka, tak jak w wikidatagateway/wikisampledataout/2014100103 pliku lub wikidatagateway/wikisampledataout/2014100104.

"folderPath": "wikidatagateway/wikisampledataout/{Slice}",
"partitionedBy":
[
    { "name": "Slice", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyyMMddHH" } },
],

W poniższym przykładzie rok, miesiąc, dzień i godzina SliceStart są wyodrębniane do oddzielnych zmiennych, które są używane przez folderPath właściwości i fileName :

"folderPath": "wikidatagateway/wikisampledataout/{Year}/{Month}/{Day}",
"fileName": "{Hour}.csv",
"partitionedBy":
[
    { "name": "Year", "value": { "type": "DateTime", "date": "SliceStart", "format": "yyyy" } },
    { "name": "Month", "value": { "type": "DateTime", "date": "SliceStart", "format": "MM" } },
    { "name": "Day", "value": { "type": "DateTime", "date": "SliceStart", "format": "dd" } },
    { "name": "Hour", "value": { "type": "DateTime", "date": "SliceStart", "format": "hh" } }
],

Aby uzyskać więcej informacji na temat zestawów danych szeregów czasowych, planowania i wycinków, zobacz artykuły Zestawy danych w Azure Data Factory oraz artykułydotyczące planowania i wykonywania usługi Data Factory.

Właściwości działania kopiowania

Aby uzyskać pełną listę sekcji i właściwości dostępnych do definiowania działań, zobacz artykuł Tworzenie potoków . Właściwości takie jak nazwa, opis, tabele wejściowe i wyjściowe oraz zasady są dostępne dla wszystkich typów działań.

Właściwości dostępne w sekcji typeProperties działania różnią się w zależności od typu działania. W przypadku działania kopiowania różnią się w zależności od typów źródeł i ujściów.

Usługa AzureDataLakeStoreSource obsługuje następującą właściwość w sekcji typeProperties :

Właściwość Opis Dozwolone wartości Wymagane
Cykliczne Wskazuje, czy dane są odczytywane cyklicznie z podfolderów, czy tylko z określonego folderu. True (wartość domyślna), Fałsz Nie

Usługa AzureDataLakeStoreSink obsługuje następujące właściwości w sekcji typeProperties :

Właściwość Opis Dozwolone wartości Wymagane
copyBehavior Określa zachowanie kopiowania. PreserveHierarchy: zachowuje hierarchię plików w folderze docelowym. Względna ścieżka pliku źródłowego do folderu źródłowego jest taka sama jak ścieżka względna pliku docelowego do folderu docelowego.

FlattenHierarchy: wszystkie pliki z folderu źródłowego są tworzone na pierwszym poziomie folderu docelowego. Pliki docelowe są tworzone z automatycznie wygenerowanymi nazwami.

MergeFiles: scala wszystkie pliki z folderu źródłowego do jednego pliku. Jeśli określono nazwę pliku lub obiektu blob, scalona nazwa pliku jest określoną nazwą. W przeciwnym razie nazwa pliku jest generowana automatycznie.
Nie

przykłady rekursywne i copyBehavior

W tej sekcji opisano wynikowe zachowanie operacji kopiowania dla różnych kombinacji wartości cyklicznych i copyBehavior.

Cykliczne copyBehavior Wynikowe działanie
true preserveHierarchy W przypadku folderu źródłowego Folder1 o następującej strukturze:

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

folder docelowy Folder1 jest tworzony z tą samą strukturą co źródło

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5.
true flattenHierarchy W przypadku folderu źródłowego Folder1 o następującej strukturze:

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

docelowy folder1 jest tworzony z następującą strukturą:

Folder1
    automatycznie wygenerowana nazwa pliku File1
    nazwa wygenerowana automatycznie dla pliku File2
    nazwa wygenerowana automatycznie dla pliku File3
    nazwa wygenerowana automatycznie dla pliku File4
    automatycznie wygenerowana nazwa pliku5
true mergeFiles W przypadku folderu źródłowego Folder1 o następującej strukturze:

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

docelowy folder1 jest tworzony z następującą strukturą:

Folder1
    Plik1 + Plik2 + Plik3 + Plik4 + Plik 5 są scalane w jeden plik z automatycznie wygenerowaną nazwą pliku
fałsz preserveHierarchy W przypadku folderu źródłowego Folder1 o następującej strukturze:

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

folder docelowy Folder1 jest tworzony z następującą strukturą

Folder1
    Plik1
    Plik2


Podfolder1 z plikami File3, File4 i File5 nie są pobierane.
fałsz flattenHierarchy W przypadku folderu źródłowego Folder1 o następującej strukturze:

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

folder docelowy Folder1 jest tworzony z następującą strukturą

Folder1
    automatycznie wygenerowana nazwa pliku File1
    nazwa wygenerowana automatycznie dla pliku File2


Podfolder1 z plikami File3, File4 i File5 nie są pobierane.
fałsz mergeFiles W przypadku folderu źródłowego Folder1 o następującej strukturze:

Folder1
    Plik1
    Plik2
    Podfolder1
        Plik3
        Plik4
        Plik5

folder docelowy Folder1 jest tworzony z następującą strukturą

Folder1
    Zawartość pliku File1 + File2 jest scalona z jednym plikiem z automatycznie wygenerowaną nazwą pliku. automatycznie wygenerowana nazwa pliku File1

Podfolder1 z plikami File3, File4 i File5 nie są pobierane.

Obsługiwane formaty plików i kompresji

Aby uzyskać szczegółowe informacje, zobacz artykuł Formaty plików i kompresji w Azure Data Factory.

Przykłady JSON do kopiowania danych do i z usługi Data Lake Store

W poniższych przykładach przedstawiono przykładowe definicje JSON. Możesz użyć tych przykładowych definicji do utworzenia potoku przy użyciu Visual Studio lub Azure PowerShell. W przykładach pokazano, jak kopiować dane do i z usługi Data Lake Store i azure Blob Storage. Dane można jednak skopiować bezpośrednio z dowolnego ze źródeł do dowolnego z obsługiwanych ujściów. Aby uzyskać więcej informacji, zobacz sekcję "Obsługiwane magazyny danych i formaty" w artykule Przenoszenie danych przy użyciu działania kopiowania .

Przykład: kopiowanie danych z Azure Blob Storage do usługi Azure Data Lake Store

Przykładowy kod w tej sekcji przedstawia:

W przykładach pokazano, jak dane szeregów czasowych z Azure Blob Storage są kopiowane do usługi Data Lake Store co godzinę.

Połączona usługa azure Storage

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

Połączona usługa Azure Data Lake Store

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": "<service principal key>",
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "subscriptionId": "<subscription of ADLS>",
            "resourceGroupName": "<resource group of ADLS>"
        }
    }
}

Uwaga

Aby uzyskać szczegółowe informacje o konfiguracji, zobacz sekcję Właściwości połączonej usługi .

Wejściowy zestaw danych obiektów blob platformy Azure

W poniższym przykładzie dane są pobierane z nowego obiektu blob co godzinę ("frequency": "Hour", "interval": 1). Ścieżka folderu i nazwa pliku obiektu blob są dynamicznie oceniane na podstawie czasu rozpoczęcia przetwarzanego wycinka. Ścieżka folderu używa części roku, miesiąca i dnia czasu rozpoczęcia. Nazwa pliku używa części godziny rozpoczęcia. Ustawienie "external": true informuje usługę Data Factory, że tabela jest zewnętrzna dla fabryki danych i nie jest wytwarzana przez działanie w fabryce danych.

{
  "name": "AzureBlobInput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ]
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Wyjściowy zestaw danych usługi Azure Data Lake Store

Poniższy przykład kopiuje dane do usługi Data Lake Store. Nowe dane są kopiowane do usługi Data Lake Store co godzinę.

{
    "name": "AzureDataLakeStoreOutput",
    "properties": {
        "type": "AzureDataLakeStore",
        "linkedServiceName": "AzureDataLakeStoreLinkedService",
        "typeProperties": {
            "folderPath": "datalake/output/"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

działanie Kopiuj w potoku ze źródłem obiektów blob i ujściem usługi Data Lake Store

W poniższym przykładzie potok zawiera działanie kopiowania skonfigurowane do korzystania z wejściowych i wyjściowych zestawów danych. Działanie kopiowania jest zaplanowane do uruchomienia co godzinę. W definicji source JSON potoku typ jest ustawiony na BlobSource, a sink typ jest ustawiony na AzureDataLakeStoreSink.

{
    "name":"SamplePipeline",
    "properties":
    {
        "start":"2014-06-01T18:00:00",
        "end":"2014-06-01T19:00:00",
        "description":"pipeline with copy activity",
        "activities":
        [
            {
                "name": "AzureBlobtoDataLake",
                "description": "Copy Activity",
                "type": "Copy",
                "inputs": [
                    {
                        "name": "AzureBlobInput"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureDataLakeStoreOutput"
                    }
                ],
                "typeProperties": {
                    "source": {
                        "type": "BlobSource"
                    },
                    "sink": {
                        "type": "AzureDataLakeStoreSink"
                    }
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "policy": {
                    "concurrency": 1,
                    "executionPriorityOrder": "OldestFirst",
                    "retry": 0,
                    "timeout": "01:00:00"
                }
            }
        ]
    }
}

Przykład: kopiowanie danych z usługi Azure Data Lake Store do obiektu blob platformy Azure

Przykładowy kod w tej sekcji przedstawia:

Kod kopiuje dane szeregów czasowych z usługi Data Lake Store do obiektu blob platformy Azure co godzinę.

Połączona usługa Azure Data Lake Store

{
    "name": "AzureDataLakeStoreLinkedService",
    "properties": {
        "type": "AzureDataLakeStore",
        "typeProperties": {
            "dataLakeStoreUri": "https://<accountname>.azuredatalakestore.net/webhdfs/v1",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": "<service principal key>",
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        }
    }
}

Uwaga

Aby uzyskać szczegółowe informacje o konfiguracji, zobacz sekcję Właściwości połączonej usługi .

Połączona usługa azure Storage

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

Zestaw danych wejściowych usługi Azure Data Lake

W tym przykładzie ustawienie "external" informuje true usługę Data Factory o tym, że tabela jest zewnętrzna dla fabryki danych i nie jest wytwarzana przez działanie w fabryce danych.

{
    "name": "AzureDataLakeStoreInput",
    "properties":
    {
        "type": "AzureDataLakeStore",
        "linkedServiceName": "AzureDataLakeStoreLinkedService",
        "typeProperties": {
            "folderPath": "datalake/input/",
            "fileName": "SearchLog.tsv",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            }
        },
        "external": true,
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "policy": {
            "externalData": {
                "retryInterval": "00:01:00",
                "retryTimeout": "00:10:00",
                "maximumRetry": 3
            }
        }
    }
}

Wyjściowy zestaw danych obiektów blob platformy Azure

W poniższym przykładzie dane są zapisywane w nowym obiekcie blob co godzinę ("frequency": "Hour", "interval": 1). Ścieżka folderu dla obiektu blob jest obliczana dynamicznie na podstawie czasu rozpoczęcia przetwarzanego wycinka. Ścieżka folderu używa części roku, miesiąca, dnia i godzin rozpoczęcia.

{
  "name": "AzureBlobOutput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": "\t",
        "rowDelimiter": "\n"
      }
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Działanie kopiowania w potoku ze źródłem usługi Azure Data Lake Store i ujściem obiektu blob

W poniższym przykładzie potok zawiera działanie kopiowania skonfigurowane do korzystania z wejściowych i wyjściowych zestawów danych. Działanie kopiowania jest zaplanowane do uruchomienia co godzinę. W definicji source JSON potoku typ jest ustawiony na AzureDataLakeStoreSource, a sink typ jest ustawiony na BlobSink.

{
    "name":"SamplePipeline",
    "properties":{
        "start":"2014-06-01T18:00:00",
        "end":"2014-06-01T19:00:00",
        "description":"pipeline for copy activity",
        "activities":[
            {
                "name": "AzureDakeLaketoBlob",
                "description": "copy activity",
                "type": "Copy",
                "inputs": [
                    {
                        "name": "AzureDataLakeStoreInput"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobOutput"
                    }
                ],
                "typeProperties": {
                    "source": {
                        "type": "AzureDataLakeStoreSource",
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "policy": {
                    "concurrency": 1,
                    "executionPriorityOrder": "OldestFirst",
                    "retry": 0,
                    "timeout": "01:00:00"
                }
            }
        ]
    }
}

W definicji działania kopiowania można również mapować kolumny ze źródłowego zestawu danych na kolumny w zestawie danych ujścia. Aby uzyskać szczegółowe informacje, zobacz Mapowanie kolumn zestawu danych w Azure Data Factory.

Wydajności i dostosowywanie

Aby dowiedzieć się więcej o czynnikach wpływających na wydajność działania kopiowania i sposobie jej optymalizacji, zobacz artykuł Dotyczący wydajności działania kopiowania i dostrajania .