Podporované formáty souborů a komprimační kodeky ve službě Azure Data Factory a Synapse Analytics (starší verze)

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Tento článek se vztahuje na následující konektory: Amazon S3, Azure Blob, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure Files, File System, FTP, Google Cloud Storage, HDFS, HTTP a SFTP.

Důležité

Služba zavedla nový model datové sady založené na formátu, viz odpovídající článek o formátu s podrobnostmi:
- Formát Avro
- Binární formát
- Formát textu s oddělovači
- Formát JSON
- Formát ORC
- Formát Parquet
Zbývající konfigurace uvedené v tomto článku se stále podporují, protože se jedná o zpětnou kompatibilitu. Doporučujeme používat nový model v budoucnu.

Textový formát (starší verze)

Poznámka:

Seznamte se s novým modelem v článku s textovým formátem s oddělovači. Následující konfigurace datové sady úložiště dat založené na souborech se stále podporují, protože se jedná o zpětnou kompatibilitu. Doporučujeme používat nový model v budoucnu.

Pokud chcete číst z textového souboru nebo zapisovat do textového souboru, nastavte type vlastnost v format části datové sady na TextFormat. Můžete také zadat následující nepovinné vlastnosti v oddílu format. Postup konfigurace najdete v části Příklad typu TextFormat.

Vlastnost Popis Povolené hodnoty Požaduje se
columnDelimiter Znak, který slouží k oddělení sloupců v souboru. Můžete zvážit použití vzácného netisknutelného znaku, který ve vašich datech nemusí existovat. Zadejte například \u0001, který představuje začátek nadpisu (SOH). Je povolený jenom jeden znak. Výchozí hodnota je čárka (,).

Pokud chcete použít znak Unicode, přečtěte si znaky Unicode a získejte odpovídající kód pro něj.
No
rowDelimiter Znak, který slouží k oddělení řádků v souboru. Je povolený jenom jeden znak. Výchozí hodnotou pro čtení může být libovolná z těchto hodnot: [\r\n, \r, \n] a pro zápis hodnota \r\n. No
escapeChar Speciální znak, který slouží k potlačení oddělovače sloupců v obsahu vstupního souboru.

Pro tabulku nejde zadat escapeChar a quoteChar současně.
Je povolený jenom jeden znak. Žádná výchozí hodnota.

Příklad: Pokud jako oddělovač sloupců máte čárku (','), ale chcete mít v textu znak čárky (například "Hello, world"), můžete jako řídicí znak definovat "$" a ve zdroji použít řetězec "Hello$, world".
No
quoteChar Znak, který slouží k uvození textového řetězce. Oddělovače sloupců a řádků uvnitř znaků uvozovek budou považované za součást hodnoty příslušného řetězce. Tato vlastnost se vztahuje na vstupní i výstupní datové sady.

Pro tabulku nejde zadat escapeChar a quoteChar současně.
Je povolený jenom jeden znak. Žádná výchozí hodnota.

Pokud například jako oddělovač sloupců máte čárku (','), ale v textu chcete mít čárku (například Hello <, world>), můžete jako znak uvozovky definovat " (dvojitá uvozovka) a ve zdroji použít řetězec "Hello, world".
No
nullValue Jeden nebo několik znaků, které se používají jako reprezentace hodnoty Null. Jeden nebo několik znaků. Výchozí hodnoty jsou \N a NULL pro čtení a \N pro zápis. No
encodingName Zadejte název kódování. Platný název kódování. Další informace najdete v tématu Vlastnost Encoding.EncodingName. Příklad: windows-1250 nebo shift_jis. Výchozí hodnota je UTF-8. No
firstRowAsHeader Určuje, jestli se má první řádek považovat za záhlaví. Pro vstupní datovou sadu služba přečte první řádek jako záhlaví. Pro výstupní datovou sadu zapíše služba první řádek jako záhlaví.

Vzorové scénáře najdete v tématu Scénáře použití firstRowAsHeader a skipLineCount.
True
False (výchozí)
No
skipLineCount Určuje počet neprázdných řádků, které se mají přeskočit při čtení dat ze vstupních souborů. Pokud je zadaný parametr skipLineCount i firstRowAsHeader, nejdřív se přeskočí příslušný počet řádků a potom se ze vstupního souboru načtou informace záhlaví.

Vzorové scénáře najdete v tématu Scénáře použití firstRowAsHeader a skipLineCount.
Integer No
treatEmptyAsNull Určuje, jestli se při čtení dat ze vstupního souboru má prázdný řetězec nebo řetězec s hodnotou null považovat za hodnotu null. True (výchozí)
False
No

Příklad typu TextFormat

V následující definici JSON pro datovou sadu jsou zadány některé volitelné vlastnosti.

"typeProperties":
{
    "folderPath": "mycontainer/myfolder",
    "fileName": "myblobname",
    "format":
    {
        "type": "TextFormat",
        "columnDelimiter": ",",
        "rowDelimiter": ";",
        "quoteChar": "\"",
        "NullValue": "NaN",
        "firstRowAsHeader": true,
        "skipLineCount": 0,
        "treatEmptyAsNull": true
    }
},

Pokud chcete místo quoteChar použít escapeChar, nahraďte řádek s quoteChar touto hodnotou escapeChar:

"escapeChar": "$",

Scénáře použití firstRowAsHeader a skipLineCount

  • Kopírujete z nesouborového zdroje do textového souboru a chcete přidat řádek záhlaví obsahující metadata schématu (třeba schéma SQL). V tomto scénáři zadejte ve vstupní sadě firstRowAsHeader jako true.
  • Kopírujete text z textového souboru obsahujícího řádek záhlaví do nesouborové jímky a chcete tento řádek vynechat. Zadejte ve vstupní sadě firstRowAsHeader jako true.
  • Kopírujete text z textového souboru a chcete vynechat několik prvních řádků, které neobsahují data ani informace záhlaví. Zadáním skipLineCount určete, kolik řádků se má přeskočit. Pokud zbytek souboru obsahuje řádek záhlaví, můžete také zadat firstRowAsHeader. Pokud je zadaný parametr skipLineCount i firstRowAsHeader, nejdřív se přeskočí příslušný počet řádků a potom se ze vstupního souboru načtou informace záhlaví.

Formát JSON (starší verze)

Poznámka:

Přečtěte si nový model z článku o formátu JSON. Následující konfigurace datové sady úložiště dat založené na souborech se stále podporují, protože se jedná o zpětnou kompatibilitu. Doporučujeme používat nový model v budoucnu.

Pokud chcete importovat nebo exportovat soubor JSON tak, jak je, do služby Azure Cosmos DB, přečtěte si část Import a export dokumentů JSON v článku o přesunu dat do a ze služby Azure Cosmos DB .

Pokud chcete parsovat soubory JSON nebo zapisovat data ve formátu JSON, nastavte type vlastnost v oddílu format na JsonFormat. Můžete také zadat následující nepovinné vlastnosti v oddílu format. Postup konfigurace najdete v části Příklad typu JsonFormat.

Vlastnost Popis Povinní účastníci
filePattern Určete vzor dat uložených v jednotlivých souborech JSON. Povolené hodnoty jsou setOfObjects a arrayOfObjects. Výchozí hodnota je setOfObjects. Podrobné informace o těchto vzorech najdete v tématu Vzory souborů JSON. No
jsonNodeReference Pokud chcete iterovat a extrahovat data z objektů uvnitř pole se stejným vzorem, zadejte pro toto pole cestu JSON. Tato vlastnost se podporuje pouze při kopírování dat ze souborů JSON. No
jsonPathDefinition Zadejte výraz cesty JSON pro každé mapování sloupců s vlastním názvem sloupce (s počátečním malým písmenem). Tato vlastnost se podporuje pouze při kopírování dat ze souborů JSON a můžete extrahovat data z objektu nebo pole.

U polí v kořenovém objektu začtěte s kořenem $, u polí uvnitř pole vybraného pomocí vlastnosti jsonNodeReference začněte elementem pole. Postup konfigurace najdete v části Příklad typu JsonFormat.
No
encodingName Zadejte název kódování. Seznam platných názvů kódování najdete v tématu věnovaném vlastnosti Encoding.EncodingName. Příklad: windows-1250 nebo shift_jis. Výchozí hodnota je UTF-8. No
nestingSeparator Znak, který se používá k oddělení úrovní vnoření. Výchozí hodnota je tečka (.). No

Poznámka:

V případě křížového použití dat v matici do více řádků (případ 1 –> ukázka 2 v příkladech JsonFormat) můžete zvolit pouze rozšíření jednoho pole pomocí vlastnosti jsonNodeReference.

Vzory souborů JSON

aktivita Copy může analyzovat následující vzory souborů JSON:

  • Typ I: setOfObjects

    Každý soubor obsahuje jeden objekt nebo několik objektů, které jsou zřetězené nebo oddělené řádkem. Když je pro výstupní datovou sadu vybraná tato možnost, aktivita kopírování vytvoří jeden soubor JSON, ve kterém je každý objekt na jednom řádku (oddělení řádkem).

    • Příklad JSON s jedním objektem

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      
    • Příklad JSON s oddělením řádky

      {"time":"2015-04-29T07:12:20.9100000Z","callingimsi":"466920403025604","callingnum1":"678948008","callingnum2":"567834760","switch1":"China","switch2":"Germany"}
      {"time":"2015-04-29T07:13:21.0220000Z","callingimsi":"466922202613463","callingnum1":"123436380","callingnum2":"789037573","switch1":"US","switch2":"UK"}
      {"time":"2015-04-29T07:13:21.4370000Z","callingimsi":"466923101048691","callingnum1":"678901578","callingnum2":"345626404","switch1":"Germany","switch2":"UK"}
      
    • Příklad JSON se zřetězením

      {
          "time": "2015-04-29T07:12:20.9100000Z",
          "callingimsi": "466920403025604",
          "callingnum1": "678948008",
          "callingnum2": "567834760",
          "switch1": "China",
          "switch2": "Germany"
      }
      {
          "time": "2015-04-29T07:13:21.0220000Z",
          "callingimsi": "466922202613463",
          "callingnum1": "123436380",
          "callingnum2": "789037573",
          "switch1": "US",
          "switch2": "UK"
      }
      {
          "time": "2015-04-29T07:13:21.4370000Z",
          "callingimsi": "466923101048691",
          "callingnum1": "678901578",
          "callingnum2": "345626404",
          "switch1": "Germany",
          "switch2": "UK"
      }
      
  • Typ II: arrayOfObjects

    Každý soubor obsahuje pole objektů.

    [
        {
            "time": "2015-04-29T07:12:20.9100000Z",
            "callingimsi": "466920403025604",
            "callingnum1": "678948008",
            "callingnum2": "567834760",
            "switch1": "China",
            "switch2": "Germany"
        },
        {
            "time": "2015-04-29T07:13:21.0220000Z",
            "callingimsi": "466922202613463",
            "callingnum1": "123436380",
            "callingnum2": "789037573",
            "switch1": "US",
            "switch2": "UK"
        },
        {
            "time": "2015-04-29T07:13:21.4370000Z",
            "callingimsi": "466923101048691",
            "callingnum1": "678901578",
            "callingnum2": "345626404",
            "switch1": "Germany",
            "switch2": "UK"
        }
    ]
    

Příklad typu JsonFormat

Případ 1: Kopírování dat ze souborů JSON

Ukázka 1: Extrakce dat z objektu a pole

V této ukázce očekáváte, že jeden kořenový objekt JSON se mapuje na jeden záznam v tabulkovém výsledku. Pokud máte soubor JSON s následujícím obsahem:

{
    "id": "ed0e4960-d9c5-11e6-85dc-d7996816aad3",
    "context": {
        "device": {
            "type": "PC"
        },
        "custom": {
            "dimensions": [
                {
                    "TargetResourceType": "Microsoft.Compute/virtualMachines"
                },
                {
                    "ResourceManagementProcessRunId": "827f8aaa-ab72-437c-ba48-d8917a7336a3"
                },
                {
                    "OccurrenceTime": "1/13/2017 11:24:37 AM"
                }
            ]
        }
    }
}

a chcete ho zkopírovat do tabulky Azure SQL v následujícím formátu a přitom data uvnitř pole linearizovat, a to extrakcí dat z objektů i z pole:

ID deviceType targetResourceType resourceManagementProcessRunId occurrenceTime
ed0e4960-d9c5-11e6-85dc-d7996816aad3 PC Microsoft.Compute/virtualMachines 827f8aaa-ab72-437c-ba48-d8917a7336a3 1/13/2017 11:24:37 AM

Vstupní datová sada typu JsonFormat je definovaná následujícím způsobem (částečná definice obsahující jenom relevantní části). Konkrétně:

  • Oddíl structure definuje vlastní názvy sloupců a odpovídající datový typ při převodu do tabulkového formátu. Pokud mapování sloupců není potřeba, je tento oddíl nepovinný. Další informace najdete v tématu Mapování sloupců zdrojové datové sady na cílové sloupce datové sady.
  • jsonPathDefinition určuje cestu JSON pro jednotlivé sloupce a udává, odkud se mají extrahovat data. Chcete-li kopírovat data z pole, můžete použít array[x].property k extrakci hodnoty dané vlastnosti z objektu xth nebo můžete použít array[*].property k nalezení hodnoty z libovolného objektu obsahujícího tuto vlastnost.
"properties": {
    "structure": [
        {
            "name": "id",
            "type": "String"
        },
        {
            "name": "deviceType",
            "type": "String"
        },
        {
            "name": "targetResourceType",
            "type": "String"
        },
        {
            "name": "resourceManagementProcessRunId",
            "type": "String"
        },
        {
            "name": "occurrenceTime",
            "type": "DateTime"
        }
    ],
    "typeProperties": {
        "folderPath": "mycontainer/myfolder",
        "format": {
            "type": "JsonFormat",
            "filePattern": "setOfObjects",
            "jsonPathDefinition": {"id": "$.id", "deviceType": "$.context.device.type", "targetResourceType": "$.context.custom.dimensions[0].TargetResourceType", "resourceManagementProcessRunId": "$.context.custom.dimensions[1].ResourceManagementProcessRunId", "occurrenceTime": " $.context.custom.dimensions[2].OccurrenceTime"}
        }
    }
}

Ukázka 2: Křížové použití více objektů se stejným vzorkem z pole

V této ukázce očekáváte, že transformujete jeden kořenový objekt JSON do několika záznamů v tabulkovém výsledku. Pokud máte soubor JSON s následujícím obsahem:

{
    "ordernumber": "01",
    "orderdate": "20170122",
    "orderlines": [
        {
            "prod": "p1",
            "price": 23
        },
        {
            "prod": "p2",
            "price": 13
        },
        {
            "prod": "p3",
            "price": 231
        }
    ],
    "city": [ { "sanmateo": "No 1" } ]
}

a chcete ho zkopírovat do tabulky Azure SQL v následujícím formátu a přitom data uvnitř pole linearizovat a propojit je se společnými kořenovými informacemi:

ordernumber orderdate order_pd order_price city
01 20170122 O1 23 [{"sanmateo":"No 1"}]
01 20170122 P2 13 [{"sanmateo":"No 1"}]
01 20170122 P3 231 [{"sanmateo":"No 1"}]

Vstupní datová sada typu JsonFormat je definovaná následujícím způsobem (částečná definice obsahující jenom relevantní části). Konkrétně:

  • Oddíl structure definuje vlastní názvy sloupců a odpovídající datový typ při převodu do tabulkového formátu. Pokud mapování sloupců není potřeba, je tento oddíl nepovinný. Další informace najdete v tématu Mapování sloupců zdrojové datové sady na cílové sloupce datové sady.
  • jsonNodeReferenceoznačuje, že se mají iterovat a extrahovat data z objektů se stejným vzorem v poliorderlines.
  • jsonPathDefinition určuje cestu JSON pro jednotlivé sloupce a udává, odkud se mají extrahovat data. V tomto příkladu , a jsou pod kořenovým objektem s cestou JSON začínající $., zatímco order_pd a order_price jsou definovány s cestou odvozenou z prvku pole bez $..cityorderdateordernumber
"properties": {
    "structure": [
        {
            "name": "ordernumber",
            "type": "String"
        },
        {
            "name": "orderdate",
            "type": "String"
        },
        {
            "name": "order_pd",
            "type": "String"
        },
        {
            "name": "order_price",
            "type": "Int64"
        },
        {
            "name": "city",
            "type": "String"
        }
    ],
    "typeProperties": {
        "folderPath": "mycontainer/myfolder",
        "format": {
            "type": "JsonFormat",
            "filePattern": "setOfObjects",
            "jsonNodeReference": "$.orderlines",
            "jsonPathDefinition": {"ordernumber": "$.ordernumber", "orderdate": "$.orderdate", "order_pd": "prod", "order_price": "price", "city": " $.city"}
        }
    }
}

Je třeba počítat s následujícím:

  • Pokud datová structure sada není definována a jsonPathDefinition nejsou definována, aktivita kopírování zjistí schéma z prvního objektu a zploštěl celý objekt.
  • Pokud vstup JSON obsahuje pole, aktivita kopírování ve výchozím nastavení převede celou hodnotu pole na řetězec. Můžete si vybrat, jestli z něj budete data extrahovat pomocí jsonNodeReference a/nebo jsonPathDefinition, nebo jestli ho přeskočíte tím, že ho nezadáte v jsonPathDefinition.
  • Pokud je několik duplicitních názvů na stejné úrovni, aktivita kopírování vybere poslední z nich.
  • V názvech vlastností se rozlišují velká a malá písmena. Vlastnosti se stejným názvem, ale různým použitím velkých a malých písmen, se budou považovat za různé.

Příklad 2: Zápis dat do souboru JSON

Pokud máte v SQL Database následující tabulku:

ID order_date order_price order_by
0 20170119 2000 David
2 20170120 3500 Patrick
3 20170121 4000 Jason

a u každého záznamu očekáváte zápis do objektu JSON v následujícím formátu:

{
    "id": "1",
    "order": {
        "date": "20170119",
        "price": 2000,
        "customer": "David"
    }
}

Výstupní datová sada typu JsonFormat je definovaná následujícím způsobem (částečná definice obsahující jenom relevantní části). Konkrétně structure oddíl definuje vlastní názvy vlastností v cílovém souboru nestingSeparator (výchozí hodnota je ".") slouží k identifikaci vnořené vrstvy z názvu. Pokud nechcete měnit název vlastnosti v porovnání se zdrojovým názvem sloupce nebo vnořit některé z vlastností, je tento oddíl nepovinný.

"properties": {
    "structure": [
        {
            "name": "id",
            "type": "String"
        },
        {
            "name": "order.date",
            "type": "String"
        },
        {
            "name": "order.price",
            "type": "Int64"
        },
        {
            "name": "order.customer",
            "type": "String"
        }
    ],
    "typeProperties": {
        "folderPath": "mycontainer/myfolder",
        "format": {
            "type": "JsonFormat"
        }
    }
}

Formát Parquet (starší verze)

Poznámka:

Přečtěte si nový model z článku o formátu Parquet. Následující konfigurace datové sady úložiště dat založené na souborech se stále podporují, protože se jedná o zpětnou kompatibilitu. Doporučujeme používat nový model v budoucnu.

Pokud chcete analyzovat soubory Parquet nebo zapisovat data ve formátu Parquet, nastavte vlastnost formattype na hodnotu Format. V oddílu Format v části typeProperties není potřeba zadávat žádné vlastnosti. Příklad:

"format":
{
    "type": "ParquetFormat"
}

Mějte na paměti následující body:

  • Komplexní datové typy nejsou podporovány (MAP, LIST).
  • Prázdné znaky v názvu sloupce se nepodporují.
  • Soubory Parquet mají tyto možnosti komprese: NONE, SNAPPY, GZIP a LZO. Služba podporuje čtení dat ze souboru Parquet v některém z těchto komprimovaných formátů s výjimkou LZO – ke čtení dat používá kodek komprese v metadatech. Při zápisu do souboru Parquet však služba zvolí SNAPPY, což je výchozí formát Parquet. V současnosti toto chování nejde potlačit.

Důležité

Pokud chcete kopírovat soubory Parquet v místním prostředí Integration Runtime, například mezi místními a cloudovými úložišti dat, musíte na počítač IR nainstalovat 64bitovou verzi prostředí JRE 8 (Java Runtime Environment) nebo OpenJDK. Další podrobnosti najdete v následujícím odstavci.

Pro kopírování spuštěné v místním prostředí IR se serializací/deserializací souborů Parquet vyhledá služba modul runtime Java tím, že nejprve zkontroluje registr (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) JRE, pokud nebyl nalezen, druhou kontrolou systémové proměnné JAVA_HOME openJDK.

  • Použití JRE: 64bitové prostředí IR vyžaduje 64bitové prostředí JRE. Najdete ho tady.
  • Použití OpenJDK: Podporuje se od ir verze 3.13. Zabalte soubor jvm.dll se všemi ostatními požadovanými sestaveními OpenJDK do počítače ir v místním prostředí a nastavte proměnnou systémového prostředí JAVA_HOME odpovídajícím způsobem.

Tip

Pokud kopírujete data do nebo z formátu Parquet pomocí místního prostředí Integration Runtime a dojde k chybě s oznámením " Při vyvolání javy došlo k chybě, zpráva: java.lang.OutOfMemoryError:Halda Java: Místo haldy Javy", můžete do počítače, který je hostitelem místního prostředí IR, přidat proměnnou _JAVA_OPTIONS prostředí, aby se upravila minimální/maximální velikost haldy pro JVM, aby bylo možné takovou kopii umožnit, a pak kanál znovu spustit.

Set JVM heap size on Self-hosted IR

Příklad: nastavte proměnnou _JAVA_OPTIONS s hodnotou -Xms256m -Xmx16g. Xms Příznak určuje počáteční fond přidělení paměti pro virtuální počítač Java Virtual Machine (JVM), zatímco Xmx určuje maximální fond přidělení paměti. To znamená, že prostředí JVM se spustí s Xms množstvím paměti a bude moct používat maximální Xmx velikost paměti. Ve výchozím nastavení služba používá minimální 64 MB a maximální 1G.

Mapování datových typů pro soubory Parquet

Dočasný datový typ služby Primitivní typ Parquet Původní typ Parquet (deserializace) Původní typ Parquet (serializace)
Logické Logické N/A
SByte Int32 Int8 Int8
Byte Int32 UInt8 Int16
Int16 Int32 Int16 Int16
UInt16 Int32 UInt16 Int32
Int32 Int32 Int32 Int32
UInt32 Int64 UInt32 Int64
Int64 Int64 Int64 Int64
UInt64 Int64/Binary UInt64 Desetinné číslo
Jeden Float N/A
Hodnota s dvojitou přesností Hodnota s dvojitou přesností N/A
Desetinné číslo Binární Desetinné číslo Desetinná čárka
String Binární Utf8 Utf8
DateTime Int96 N/A
TimeSpan Int96 N/A
DateTimeOffset Int96 N/A
Bytearray Binární N/A
Guid Binární Utf8 Utf8
Char Binární Utf8 Utf8
CharArray Nepodporováno N/A

Formát ORC (starší verze)

Poznámka:

Seznamte se s novým modelem z článku o formátu ORC. Následující konfigurace datové sady úložiště dat založené na souborech se stále podporují, protože se jedná o zpětnou kompatibilitu. Doporučujeme používat nový model v budoucnu.

Pokud chcete analyzovat soubory ORC nebo zapisovat data ve formátu ORC, nastavte vlastnost formattype na hodnotu OrcFormat. V oddílu Format v části typeProperties není potřeba zadávat žádné vlastnosti. Příklad:

"format":
{
    "type": "OrcFormat"
}

Mějte na paměti následující body:

  • Komplexní datové typy nejsou podporované (STRUCT, MAP, LIST, UNION).
  • Prázdné znaky v názvu sloupce se nepodporují.
  • Soubory ORC mají tři možnosti komprese: NONE, ZLIB a SNAPPY. Služba podporuje čtení dat ze souboru ORC v některém z těchto komprimovaných formátů. K načtení dat využívá kompresní kodek v metadatech. Při zápisu do souboru ORC však služba zvolí ZLIB, což je výchozí hodnota pro ORC. V současnosti toto chování nejde potlačit.

Důležité

Pokud chcete kopírovat prostředí Integration Runtime v místním prostředí, například mezi místními a cloudovými úložišti dat, musíte na počítač IR nainstalovat 64bitové prostředí JRE 8 (Java Runtime Environment) nebo OpenJDK. Další podrobnosti najdete v následujícím odstavci.

Pro kopírování spuštěné v místním prostředí IR se serializací nebo deserializací souborů ORC služba vyhledá modul runtime Java tím, že nejprve zkontroluje registr (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) JRE, pokud nebyl nalezen, druhou kontrolou systémové proměnné JAVA_HOME openJDK.

  • Použití JRE: 64bitové prostředí IR vyžaduje 64bitové prostředí JRE. Najdete ho tady.
  • Použití OpenJDK: Podporuje se od ir verze 3.13. Zabalte soubor jvm.dll se všemi ostatními požadovanými sestaveními OpenJDK do počítače ir v místním prostředí a nastavte proměnnou systémového prostředí JAVA_HOME odpovídajícím způsobem.

Mapování datových typů pro soubory ORC

Dočasný datový typ služby Typy ORC
Logické Logické
SByte Byte
Byte Krátké
Int16 Krátké
UInt16 Int
Int32 Int
UInt32 Dlouhé celé číslo
Int64 Dlouhé celé číslo
UInt64 String
Jeden Float
Hodnota s dvojitou přesností Hodnota s dvojitou přesností
Desetinné číslo Desetinná čárka
String Řetězcové
DateTime Časové razítko
DateTimeOffset Časové razítko
TimeSpan Časové razítko
Bytearray Binární
Guid String
Char Znak(1)

Formát AVRO (starší verze)

Poznámka:

Přečtěte si nový model z článku o formátu Avro. Následující konfigurace datové sady úložiště dat založené na souborech se stále podporují, protože se jedná o zpětnou kompatibilitu. Doporučujeme používat nový model v budoucnu.

Pokud chcete analyzovat soubory Avro nebo zapisovat data ve formátu Avro, nastavte vlastnost formattype na hodnotu AvroFormat. V oddílu Format v části typeProperties není potřeba zadávat žádné vlastnosti. Příklad:

"format":
{
    "type": "AvroFormat",
}

Pokud chcete použít formát Avro v tabulce Hive, můžete se podívat na kurz Apache Hive.

Mějte na paměti následující body:

Podpora komprese (starší verze)

Služba podporuje komprimaci a dekomprimaci dat během kopírování. Když zadáte compression vlastnost ve vstupní datové sadě, aktivita kopírování načte komprimovaná data ze zdroje a dekomprimuje je. Když zadáte vlastnost ve výstupní datové sadě, zkomprimuje aktivita kopírování a zapíše data do jímky. Tady je několik ukázkových scénářů:

  • Čtení komprimovaných dat GZIP z objektu blob Azure, dekomprimace a zápis výsledných dat do Azure SQL Database Vstupní datovou sadu Azure Blob definujete s compressiontype vlastností GZIP.
  • Čtení dat ze souboru prostého textu z místního systému souborů, jeho komprimace pomocí formátu GZip a zápis komprimovaných dat do objektu blob Azure. Definujete výstupní datovou sadu Azure Blob s compressiontype vlastností GZip.
  • Načtěte soubor .zip ze serveru FTP, dekomprimujte ho, aby se soubory dostaly dovnitř, a přistály tyto soubory v Azure Data Lake Store. Definujete vstupní datovou sadu FTP s compressiontype vlastností ZipDeflate.
  • Čtení komprimovaných dat GZIP z objektu blob Azure, dekomprimace, jejich komprese pomocí BZIP2 a zápis výsledných dat do objektu blob Azure. Definujete vstupní datovou sadu Azure Blob s nastavenou compressiontype hodnotou GZIP a výstupní datovou sadou s nastavenou compressiontype hodnotou BZIP2.

Pokud chcete zadat kompresi datové sady, použijte vlastnost komprese ve formátu JSON datové sady jako v následujícím příkladu:

{
    "name": "AzureBlobDataSet",
    "properties": {
        "type": "AzureBlob",
        "linkedServiceName": {
            "referenceName": "StorageLinkedService",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "fileName": "pagecounts.csv.gz",
            "folderPath": "compression/file/",
            "format": {
                "type": "TextFormat"
            },
            "compression": {
                "type": "GZip",
                "level": "Optimal"
            }
        }
    }
}

Oddíl komprese má dvě vlastnosti:

  • Typ: kodek komprese, který může být GZIP, Deflate, BZIP2 nebo ZipDeflate. Všimněte si, že při použití aktivity kopírování k dekompresi souborů ZipDeflate a zápisu do úložiště dat jímky založené na souborech se soubory extrahují do složky: <path specified in dataset>/<folder named as source zip file>/.

  • Úroveň: poměr komprese, který může být Optimální nebo Nejrychlejší.

    • Nejrychlejší: Operace komprese by se měla co nejrychleji dokončit, i když výsledný soubor není optimálně komprimovaný.

    • Optimální: Operace komprese by měla být optimálně komprimována, i když dokončení operace trvá delší dobu.

      Další informace naleznete v tématu Úroveň komprese.

Poznámka:

Nastavení komprese nejsou podporována pro data v AvroFormat, OrcFormat nebo ParquetFormat. Při čtení souborů v těchto formátech služba detekuje a používá kodek komprese v metadatech. Při zápisu do souborů v těchto formátech služba zvolí výchozí kodek komprese pro tento formát. Například ZLIB pro OrcFormat a SNAPPY pro ParquetFormat.

Nepodporované typy souborů a formáty komprese

Pomocí funkcí rozšiřitelnosti můžete transformovat soubory, které nejsou podporované. Mezi dvě možnosti patří Azure Functions a vlastní úlohy pomocí služby Azure Batch.

Zobrazí se ukázka, která pomocí funkce Azure extrahuje obsah souboru tar. Další informace najdete v tématu Aktivita Azure Functions.

Tuto funkci můžete také vytvořit pomocí vlastní aktivity dotnet. Další informace najdete tady.

Seznamte se s nejnovějšími podporovanými formáty a kompresemi souborů v podporovaných formátech a kompresích.