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 . |
Celé číslo | 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é zadatfirstRowAsHeader
. Pokud je zadaný parametrskipLineCount
ifirstRowAsHeader
, 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žítarray[x].property
k extrakci hodnoty dané vlastnosti z objektuxth
nebo můžete použítarray[*].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. jsonNodeReference
označuje iteraci a extrakci dat 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ímcoorder_pd
aorder_price
jsou definovány s cestou odvozenou z prvku pole bez$.
.city
orderdate
ordernumber
"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 ajsonPathDefinition
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/nebojsonPathDefinition
, nebo jestli ho přeskočíte tím, že ho nezadáte vjsonPathDefinition
. - 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 parsovat soubory Parquet nebo zapisovat data ve formátu Parquet, nastavte format
type
vlastnost na ParquetFormat. 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 jvm.dll se všemi ostatními požadovanými sestaveními OpenJDK do počítače místního prostředí IR a odpovídajícím způsobem nastavte proměnnou systémového prostředí JAVA_HOME.
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.
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 parsovat soubory ORC nebo zapisovat data ve formátu ORC, nastavte format
type
vlastnost na 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 jvm.dll se všemi ostatními požadovanými sestaveními OpenJDK do počítače místního prostředí IR a odpovídajícím způsobem nastavte proměnnou systémového prostředí JAVA_HOME.
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 parsovat soubory Avro nebo zapisovat data ve formátu Avro, nastavte format
type
vlastnost na 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:
- Komplexní datové typy nejsou podporované (záznamy, výčty, pole, mapy, sjednocení a pevné).
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
compression
type
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
compression
type
vlastností GZip. - Přečtěte si .zip soubor ze serveru FTP, dekomprimujte ho, aby se soubory dostaly dovnitř, a přistály tyto soubory ve službě Azure Data Lake Store. Definujete vstupní datovou sadu FTP s
compression
type
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
compression
type
hodnotou GZIP a výstupní datovou sadou s nastavenoucompression
type
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.
Související obsah
Seznamte se s nejnovějšími podporovanými formáty a kompresemi souborů v podporovaných formátech a kompresích.