La source de données OSS permet la lecture et l'écriture dans OSS. Cette rubrique décrit comment DataWorks prend en charge la synchronisation des données OSS.
Types de champs pris en charge et limitations
Lecture des données par lots
OSS Reader lit les données depuis OSS et les convertit dans un format exploitable par Data Integration. Étant donné qu'OSS est un service de stockage de données non structurées, le lecteur offre les fonctionnalités suivantes.
|
Pris en charge |
Non pris en charge |
|
|
Lors de la préparation des données dans OSS, les fichiers CSV doivent être conformes au format CSV standard. Par exemple, vous devez échapper les guillemets doubles (") présents dans une colonne en les remplaçant par deux guillemets doubles (""). À défaut, le fichier risque d'être fractionné incorrectement. Si un fichier contient plusieurs délimiteurs, nous vous recommandons d'utiliser le type texte.
OSS est une source de données non structurée qui stocke des données sous forme de fichiers. Avant de synchroniser les données, vérifiez que la structure des champs des données à synchroniser correspond à vos attentes. De même, si la structure des données d'une source non structurée change, vous devez confirmer à nouveau la structure des champs dans la configuration de la tâche. Sinon, des erreurs de synchronisation des données peuvent survenir.
Écriture des données par lots
OSS Writer convertit les données du protocole Data Integration en fichiers texte dans OSS. Étant donné qu'OSS est un service de stockage de données non structurées, le writer offre les fonctionnalités suivantes.
|
Pris en charge |
Non pris en charge |
|
|
|
Catégorie |
Type de colonne Data Integration |
|
Entier |
LONG |
|
Chaîne |
STRING |
|
Virgule flottante |
DOUBLE |
|
Booléen |
BOOLEAN |
|
Date et heure |
DATE |
Écriture en temps réel
Prend en charge les capacités d'écriture en temps réel.
L'écriture en temps réel sur une seule table vers des lacs de données est prise en charge : Hudi (0,12.x), Paimon et Iceberg.
Créer une source de données
Avant de développer une tâche de synchronisation dans DataWorks, vous devez ajouter la source de données requise à DataWorks en suivant les instructions fournies dans Configuration de la source de données. Vous pouvez consulter les descriptions des paramètres dans la console DataWorks pour comprendre la signification des paramètres lors de l'ajout d'une source de données.
Pour créer une source de données OSS entre différents comptes Alibaba Cloud, vous devez accorder les autorisations requises aux comptes concernés. Pour plus d'informations, consultez Utilisation des stratégies de bucket pour accorder un accès inter-comptes à OSS.
Si vous utilisez le mode d'autorisation basé sur les rôles RAM pour configurer une source de données OSS, consultez Autorisation basée sur les rôles RAM : Configuration d'une source de données pour plus d'informations.
Pour créer une source de données OSS entre différentes régions, nous vous recommandons d'utiliser l'endpoint public. Pour plus d'informations, consultez Domaines d'accès et connectivité réseau.
Développement de tâches de synchronisation des données
Pour obtenir des informations sur le point d'entrée et la procédure de configuration d'une tâche de synchronisation, consultez les guides de configuration suivants.
Guide de configuration des tâches de synchronisation par lots sur une seule table
Pour la procédure, consultez Configuration via l'interface utilisateur sans code et Configuration en mode script.
Pour tous les paramètres et exemples de scripts disponibles en mode script, consultez l'Annexe : exemples de scripts et description des paramètres ci-dessous.
Guide de configuration des tâches de synchronisation en temps réel sur une seule table
Pour la procédure, consultez Configuration des tâches de synchronisation en temps réel sur une seule table.
Guide de configuration de la synchronisation complète de la base de données
Pour la procédure, consultez Capacités des tâches de synchronisation par lots complète de la base de données et Capacités des tâches de synchronisation en temps réel complète de la base de données.
FAQ
Existe-t-il une limite au nombre de fichiers lors de la lecture des fichiers OSS ?
Annexe : exemples de scripts et description des paramètres
Configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code
Si vous souhaitez configurer une tâche de synchronisation par lots à l'aide de l'éditeur de code, vous devez configurer les paramètres associés dans le script selon les exigences de format de script unifié. Pour plus d'informations, consultez Configuration en mode script. Les informations suivantes décrivent les paramètres que vous devez configurer pour les sources de données lors de la configuration d'une tâche de synchronisation par lots à l'aide de l'éditeur de code.
Exemple de script Reader : exemple générique
L'exemple suivant présente un script générique pour OSS Reader.
{ "type":"job", "version":"2.0",//The version number. "steps":[ { "stepType":"oss",//The plug-in name. "parameter":{ "nullFormat":"",//The string that represents a null value. "compress":"",//The text compression type. "datasource":"",//The data source. "column":[//The columns. { "index":0,//The column index. "type":"string"//The data type. }, { "index":1, "type":"long" }, { "index":2, "type":"double" }, { "index":3, "type":"boolean" }, { "format":"yyyy-MM-dd HH:mm:ss", //The time format. "index":4, "type":"date" } ], "skipHeader":"",//CSV-like files may contain a header row. Set this parameter to skip the header. "encoding":"",//The encoding format. "fieldDelimiter":",",//The field delimiter. "fileFormat": "",//The text type. "object":[]//The object prefix. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":""//The maximum number of error records allowed. }, "speed":{ "throttle":true,//If throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is set to true, throttling is enabled. "concurrent":1 //The number of concurrent threads. "mbps":"12",//The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Exemple de script Reader : Lire des fichiers ORC ou Parquet depuis OSS
OSS Reader lit les fichiers ORC ou Parquet depuis OSS en réutilisant HDFS Reader. En plus des paramètres existants d'OSS Reader, les paramètres étendus suivants sont ajoutés : Path (ORC) et FileFormat (ORC, Parquet) .
-
L'exemple suivant montre comment lire des fichiers ORC depuis OSS.
{ "stepType": "oss", "parameter": { "datasource": "", "fileFormat": "orc", "path": "/tests/case61/orc__691b6815_9260_4037_9899_****", "column": [ { "index": 0, "type": "long" }, { "index": "1", "type": "string" }, { "index": "2", "type": "string" } ] } } -
L'exemple suivant montre comment lire des fichiers Parquet depuis OSS.
{ "type":"job", "version":"2.0", "steps":[ { "stepType":"oss", "parameter":{ "nullFormat":"", "compress":"", "fileFormat":"parquet", "path":"/*", "parquetSchema":"message m { optional BINARY registration_dttm (UTF8); optional Int64 id; optional BINARY first_name (UTF8); optional BINARY last_name (UTF8); optional BINARY email (UTF8); optional BINARY gender (UTF8); optional BINARY ip_address (UTF8); optional BINARY cc (UTF8); optional BINARY country (UTF8); optional BINARY birthdate (UTF8); optional DOUBLE salary; optional BINARY title (UTF8); optional BINARY comments (UTF8); }", "column":[ { "index":"0", "type":"string" }, { "index":"1", "type":"long" }, { "index":"2", "type":"string" }, { "index":"3", "type":"string" }, { "index":"4", "type":"string" }, { "index":"5", "type":"string" }, { "index":"6", "type":"string" }, { "index":"7", "type":"string" }, { "index":"8", "type":"string" }, { "index":"9", "type":"string" }, { "index":"10", "type":"double" }, { "index":"11", "type":"string" }, { "index":"12", "type":"string" } ], "skipHeader":"false", "encoding":"UTF-8", "fieldDelimiter":",", "fieldDelimiterOrigin":",", "datasource":"wpw_demotest_oss", "envType":0, "object":[ "wpw_demo/userdata1.parquet" ] }, "name":"Reader", "category":"reader" }, { "stepType":"odps", "parameter":{ "partition":"dt=${bizdate}", "truncate":true, "datasource":"0_odps_wpw_demotest", "envType":0, "column":[ "id" ], "emptyAsNull":false, "table":"wpw_0827" }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"" }, "locale":"zh_CN", "speed":{ "throttle":false, "concurrent":2 } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Exemple de script Reader : Lire des fichiers JSONLine depuis OSS, analyser les données JSON et écrire les données dans la destination
L'exemple suivant montre comment lire des données JSONLine depuis OSS, analyser les données JSON, vectoriser certains champs des données JSON, puis écrire les données dans Milvus :
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "oss",
"parameter": {
"datasource": "${OSS data source name}",
"column": [
{
"name": "chunk_text",
"index": 0,
"type": "string"
}
],
"fieldDelimiter": ",",
"encoding": "UTF-8",
"fileFormat": "jsonl",
"object": [
"embedding/chunk1.jsonl"
]
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "json-extracting",
"parameter": {
"column": [
{
"name": "text",
"fromColumn": "chunk_text",
"jsonPath": "$.text",
"type": "STRING",
"nullOrInvalidDataAction": "DIRTY_DATA"
}
]
},
"name": "jsonextract",
"category": "flatmap"
},
{
"stepType": "embedding-transformer",
"parameter": {
"modelProvider": "bailian",
"modelName": "text-embedding-v4",
"apiKey": "${the AccessKey that you want to use}",
"embeddingColumns": {
"sourceColumnNames": [
"text"
],
"embeddingColumnName": "my_vector"
},
"batchSize": 8,
"dimension": 1024
},
"name": "embedding",
"category": "flatmap"
},
{
"stepType": "milvus",
"parameter": {
"schemaCreateMode": "ignore",
"enableDynamicSchema": true,
"datasource": "${Milvus data source name}",
"column": [
{
"name": "my_vector",
"type": "FloatVector",
"dimension": "1024",
"elementType": "None",
"maxLength": "65535"
},
{
"name": "text",
"type": "VarChar",
"elementType": "None",
"maxLength": "65535"
}
],
"collection": "yunshi_vector_07171130",
"writeMode": "insert",
"batchSize": 1024,
"columnMapping": [
{
"sourceColName": "my_vector",
"dstColName": "my_vector"
},
{
"sourceColName": "text",
"dstColName": "text"
}
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 1
}
}
}
Paramètres du script Reader
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
datasource |
Nom de la source de données. Le mode script permet d'ajouter des sources de données. La valeur de ce paramètre doit correspondre exactement au nom de la source ajoutée. |
Oui |
S.O. |
|
Object |
Ce paramètre spécifie un ou plusieurs objets à synchroniser depuis OSS. Trois méthodes de configuration sont prises en charge : chemins explicites, chemins avec caractères génériques et chemins avec paramètres dynamiques. 1. Méthodes de configuration
Important
2. Mécanisme de lecture concurrente et performances La méthode de configuration détermine directement les performances de concurrence de l'extraction des données :
|
Oui |
Aucune |
|
parquetSchema |
Ce paramètre est utilisé lors de la lecture des données OSS au format de fichier Parquet. Il prend effet uniquement lorsque fileFormat est défini sur parquet et spécifie la définition de type du stockage Parquet. Assurez-vous que la configuration globale respecte la syntaxe JSON après avoir spécifié parquetSchema.
Le format de configuration de parquetSchema est décrit ci-dessous :
L'exemple suivant montre une configuration type.
|
Non |
Aucune |
|
column |
Liste des champs à lire. type spécifie le type de données des données source, index spécifie le numéro de colonne (base zéro) dans le fichier texte auquel la colonne actuelle correspond, et value spécifie que la colonne actuelle est une constante. Au lieu de lire les données à partir du fichier source, le système génère automatiquement la colonne en fonction de la valeur spécifiée. Par défaut, vous pouvez lire toutes les données comme étant de type STRING. La configuration est la suivante.
Vous pouvez spécifier les informations des champs de colonne. La configuration est la suivante.
Remarque
Pour les informations de colonne que vous spécifiez, le paramètre type est obligatoire et vous devez spécifier soit index, soit value. |
Oui |
Toutes les données sont lues comme étant de type STRING. |
|
fileFormat |
Type de fichier. Type de fichier des objets OSS source. Valeurs valides : csv, text, parquet, orc, json et jsonl. Les formats csv et text prennent en charge les délimiteurs personnalisés. |
Oui |
csv |
|
fieldDelimiter |
Délimiteur de champ pour la lecture des données. Remarque
Lorsque OSS Reader lit les données, vous devez spécifier un délimiteur de champ. Si vous n'en spécifiez aucun, une virgule (,) est utilisée par défaut. La virgule (,) est également la valeur par défaut dans la configuration de la console. Si le délimiteur est invisible, saisissez son encodage Unicode. Par exemple, \u001b ou \u007c. |
Oui |
, |
|
lineDelimiter |
Délimiteur de ligne pour la lecture des données. Remarque
Ce paramètre prend effet uniquement lorsque fileFormat est défini sur text. |
Non |
S.O. |
|
compress |
Type de compression pour les fichiers texte. Par défaut, ce paramètre est laissé vide, ce qui indique que les données ne sont pas compressées. Valeurs valides : gzip, bzip2 et zip. |
Non |
Pas de compression |
|
encoding |
Encodage utilisé pour lire les fichiers. |
Non |
utf-8 |
|
nullFormat |
Les chaînes standard ne peuvent pas être utilisées pour définir null (pointeur nul) dans les fichiers texte. Data Integration fournit le paramètre nullFormat pour définir quelles chaînes peuvent représenter null. Exemples :
|
Non |
Aucune |
|
skipHeader |
Les fichiers de type CSV peuvent contenir une ligne d'en-tête avec des titres de colonnes qu'il faut ignorer. Par défaut, l'en-tête n'est pas ignoré. skipHeader n'est pas pris en charge en mode fichier compressé. |
Non |
false |
|
csvReaderConfig |
Configuration pour la lecture des fichiers de type CSV. Ce paramètre est de type MAP. CsvReader est utilisé pour lire les fichiers de type CSV et prend en charge diverses configurations. Si ce paramètre n'est pas spécifié, les valeurs par défaut sont utilisées. |
Non |
Aucune |
|
successOnNoObject |
Indique si la tâche se termine avec succès lorsqu'aucun objet n'existe dans le chemin de lecture spécifié. Si ce paramètre est défini sur false, la tâche échoue. Si ce paramètre est défini sur true, la tâche se termine avec succès sans écrire aucune donnée. Ce paramètre s'applique aux scénarios de synchronisation périodique où le chemin source peut être vide. En mode UI sans code, ce paramètre correspond à « Allow Missing Source Files » et n'est affiché que lorsque fileFormat est défini sur csv ou text. |
Non |
false |
|
minLastModified |
Spécifie que seuls les fichiers dont l'heure de dernière modification est égale ou postérieure à l'heure spécifiée sont synchronisés. Le format est |
Non |
S.O. |
|
maxLastModified |
Synchronise uniquement les fichiers dont l'heure de dernière modification est antérieure à l'heure spécifiée. Le format est |
Non |
S.O. |
Démo du script Writer : exemple général
Voici un exemple de script général pour OSS Writer.
{ "type":"job", "version":"2.0", "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"oss",// Le nom du plug-in. "parameter":{ "nullFormat":"",// Le format null fourni par Data Integration, qui définit quelles chaînes peuvent représenter null. "dateFormat":"",// Le format de date. "datasource":"",// La source de données. "writeMode":"",// Le mode d'écriture. "writeSingleObject":"false", // Indique si les données synchronisées doivent être écrites dans un seul fichier OSS. "encoding":"",// Le format d'encodage. "fieldDelimiter":","// Le délimiteur de champ. "fileFormat":"",// Le format de fichier. "object":""// Le préfixe d'objet. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// Le nombre maximal d'enregistrements d'erreur autorisés. }, "speed":{ "throttle":true,// Si throttle est défini sur false, le paramètre mbps ne prend pas effet et la bande passante n'est pas limitée. Si throttle est défini sur true, la bande passante est limitée. "concurrent":1, // Le nombre de threads simultanés. "mbps":"12"// Le taux de limitation. 1 mbps = 1 Mo/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Exemple de script Writer : Écriture de fichiers ORC ou Parquet dans OSS
OSS prend en charge l'écriture de fichiers ORC ou Parquet en réutilisant HDFS Writer. Outre les paramètres existants d'OSS Writer, des paramètres de configuration étendus tels que Path et FileFormat sont ajoutés. Pour plus d'informations sur ces paramètres, consultez la rubrique HDFS Writer.
Voici un exemple d'écriture de fichiers ORC ou Parquet dans OSS :
L'exemple ci-dessous est fourni à titre indicatif uniquement. Adaptez les paramètres en fonction des noms et des types de vos colonnes réelles. Ne copiez pas et n'utilisez pas directement cet exemple.
-
Écriture de fichiers ORC dans OSS
L'écriture de fichiers ORC n'est prise en charge qu'en mode script. Vous devez basculer en mode script pour la configuration. Définissez fileFormat sur
orc, définissez path sur le chemin du fichier à écrire, et configurez column au format{"name":"your column name","type": "your column type"}.Les types ORC suivants sont pris en charge pour l'écriture :
Type de champ
Écriture par lot dans OSS (format ORC)
TINYINT
Pris en charge
SMALLINT
Pris en charge
INT
Pris en charge
BIGINT
Pris en charge
FLOAT
Pris en charge
DOUBLE
Pris en charge
TIMESTAMP
Pris en charge
DATE
Pris en charge
VARCHAR
Pris en charge
STRING
Pris en charge
CHAR
Pris en charge
BOOLEAN
Pris en charge
DECIMAL
Pris en charge
BINARY
Pris en charge
{ "stepType": "oss", "parameter": { "datasource": "", "fileFormat": "orc", "path": "/tests/case61", "fileName": "orc", "writeMode": "append", "column": [ { "name": "col1", "type": "BIGINT" }, { "name": "col2", "type": "DOUBLE" }, { "name": "col3", "type": "STRING" } ], "writeMode": "append", "fieldDelimiter": "\t", "compress": "NONE", "encoding": "UTF-8" } } -
Écriture dans OSS au format Parquet
{ "stepType": "oss", "parameter": { "datasource": "", "fileFormat": "parquet", "path": "/tests/case61", "fileName": "test", "writeMode": "append", "fieldDelimiter": "\t", "compress": "SNAPPY", "encoding": "UTF-8", "parquetSchema": "message test { required int64 int64_col;\n required binary str_col (UTF8);\nrequired group params (MAP) {\nrepeated group key_value {\nrequired binary key (UTF8);\nrequired binary value (UTF8);\n}\n}\nrequired group params_arr (LIST) {\nrepeated group list {\nrequired binary element (UTF8);\n}\n}\nrequired group params_struct {\nrequired int64 id;\n required binary name (UTF8);\n }\nrequired group params_arr_complex (LIST) {\nrepeated group list {\nrequired group element {\n required int64 id;\n required binary name (UTF8);\n}\n}\n}\nrequired group params_complex (MAP) {\nrepeated group key_value {\nrequired binary key (UTF8);\nrequired group value {\nrequired int64 id;\n required binary name (UTF8);\n}\n}\n}\nrequired group params_struct_complex {\nrequired int64 id;\n required group detail {\nrequired int64 id;\n required binary name (UTF8);\n}\n}\n}", "dataxParquetMode": "fields" } }
Paramètres du script Writer
|
Paramètre |
Description |
Obligatoire |
Valeur par défaut |
|
datasource |
Nom de la source de données. Vous pouvez ajouter une source de données en mode script. La valeur de ce paramètre doit correspondre au nom de la source de données que vous avez ajoutée. |
Oui |
N/A |
|
object |
Nom du fichier dans lequel OSS Writer écrit les données. OSS utilise les noms de fichiers pour simuler une structure de répertoires. OSS impose les limites suivantes sur les noms d'objets :
Si vous ne souhaitez pas de suffixe UUID aléatoire, nous vous recommandons de définir |
Oui |
N/A |
|
ossBlockSize |
Taille des blocs pour les téléchargements multiparties OSS. La taille de bloc par défaut est de 16 Mo. Lorsque le format de fichier est parquet ou ORC, vous pouvez configurer ce paramètre au même niveau que le paramètre object. Les téléchargements multiparties OSS prennent en charge un maximum de 10 000 parties. Avec la taille de bloc par défaut, la taille maximale du fichier est de 160 Go. Si le nombre de parties dépasse la limite, vous pouvez augmenter la taille du bloc pour prendre en charge le téléchargement de fichiers plus volumineux. |
Non |
16 |
|
writeMode |
Spécifie la manière dont OSS Writer gère les données existantes avant l'écriture :
|
Oui |
Aucune |
|
writeSingleObject |
Indique s'il faut écrire les données dans un seul fichier lors de l'écriture dans OSS :
Remarque
|
Non |
false |
|
fileFormat |
Format du fichier de sortie. Les formats suivants sont pris en charge :
|
Non |
text |
|
compress |
Format de compression des fichiers de données écrits dans OSS. Vous devez configurer ce paramètre en mode script. Important
La compression n'est pas prise en charge pour les formats CSV et TEXT. Les fichiers Parquet et ORC ne prennent en charge que la compression SNAPPY. |
Non |
Aucune |
|
fieldDelimiter |
Délimiteur de champ pour l'écriture. |
Non |
, |
|
encoding |
Configuration de l'encodage pour le fichier de sortie. |
Non |
utf-8 |
|
parquetSchema |
Obligatoire lors de l'écriture dans OSS au format de fichier Parquet. Ce paramètre décrit le schéma du fichier de destination et ne prend effet que lorsque fileFormat est défini sur parquet. Le format est le suivant.
Les éléments de configuration sont décrits comme suit :
Remarque
Chaque définition de colonne doit se terminer par un point-virgule, y compris la dernière ligne. Exemple :
|
Non |
Aucune |
|
nullFormat |
Les chaînes standard ne peuvent pas être utilisées pour définir null (pointeur nul) dans les fichiers texte. Le système de synchronisation des données fournit nullFormat pour définir une chaîne représentant null. Par exemple, si vous définissez |
Non |
Aucune |
|
header |
Ligne d'en-tête lors de l'écriture dans OSS. Exemple : |
Non |
Aucune |
|
maxFileSize (configuration avancée, non prise en charge dans l'interface sans code) |
Taille maximale d'un seul fichier objet écrit dans OSS. La valeur par défaut est de 10 000 × 10 Mo. Cela ressemble au contrôle de la taille des fichiers journaux lors de l'impression des journaux log4j. Lors du téléchargement multipartie OSS, chaque partie fait 10 Mo (ce qui est également la granularité minimale pour la rotation des journaux, ce qui signifie que toute valeur maxFileSize inférieure à 10 Mo est traitée comme 10 Mo). Chaque requête OSS InitiateMultipartUploadRequest prend en charge un maximum de 10 000 parties. Lorsqu'une rotation se produit, le nom de l'objet est généré en ajoutant des suffixes tels que _1,_2,_3 au préfixe d'objet original avec une chaîne aléatoire basée sur un UUID. Remarque
|
Non |
100 000 |
|
suffix (configuration avancée, non prise en charge dans l'interface sans code) |
Suffixe ajouté au nom de fichier généré lors de l'écriture de la synchronisation des données. Par exemple, si vous définissez suffix sur .csv, le nom de fichier final est fileName****.csv. |
Non |
Aucun |
Annexe : Stratégies de conversion de type pour les données Parquet
Si vous ne configurez pas parquetSchema, DataWorks convertit les types de champs sources en types de données Parquet selon les stratégies suivantes.
|
Type de données converti |
Type Parquet |
Type logique Parquet |
|
CHAR / VARCHAR / STRING |
BINARY |
UTF8 |
|
BOOLEAN |
BOOLEAN |
N/A |
|
BINARY / VARBINARY |
BINARY |
N/A |
|
DECIMAL |
FIXED_LEN_BYTE_ARRAY |
DECIMAL |
|
TINYINT |
INT32 |
INT_8 |
|
SMALLINT |
INT32 |
INT_16 |
|
INT/INTEGER |
INT32 |
N/A |
|
BIGINT |
INT64 |
N/A |
|
FLOAT |
FLOAT |
N/A |
|
DOUBLE |
DOUBLE |
N/A |
|
DATE |
INT32 |
DATE |
|
TIME |
INT32 |
TIME_MILLIS |
|
TIMESTAMP/DATETIME |
INT96 |
N/A |