O Tablestore é um serviço de armazenamento NoSQL baseado no Apsara Distributed File System da Alibaba Cloud. A fonte de dados do Tablestore no DataWorks permite a sincronização bidirecional de dados. Este tópico descreve os recursos de sincronização de dados do Tablestore compatíveis com o DataWorks.
Limitações
-
Os plugins Tablestore Reader e Writer leem e gravam dados no Tablestore. Esses plugins operam em tabelas de colunas largas e de séries temporais em dois modos: modo de linha e modo de coluna.
Modo de coluna: No modelo de múltiplas versões do Tablestore, os dados são organizados em uma estrutura de três níveis: . Uma linha pode ter qualquer número de colunas, e os nomes das colunas não são fixos. Cada coluna pode ter várias versões, e cada versão possui um carimbo de data/hora específico, que também serve como número da versão. No modo de coluna, os dados são exportados como uma tupla de quatro elementos: (valor da chave primária, nome da coluna, carimbo de data/hora, valor da coluna). A importação de dados nesse modo também utiliza o formato de tupla de quatro elementos: (valor da chave primária, nome da coluna, carimbo de data/hora, valor da coluna).
-
Modo de linha: Este modo exporta cada registro atualizado como uma linha no formato (valor da chave primária, valores das colunas).
No modo de linha, cada linha de dados corresponde a uma única linha na tabela do Tablestore. Os dados gravados incluem valores tanto para as colunas de chave primária quanto para as colunas de atributo.
As colunas do Tablestore consistem em colunas de chave primária primaryKey e colunas de atributo column. A ordem das colunas de source deve corresponder à ordem das colunas de chave primária e de atributo no Tablestore de destino. Caso contrário, ocorrerá um erro de mapeamento de colunas.
O Tablestore Reader divide o intervalo de dados de uma tabela em N tarefas com base em um nível de simultaneidade especificado, N. Um thread dedicado do Tablestore Reader executa cada tarefa.
-
Tabelas externas do MaxCompute não conseguem ler diretamente colunas do Tablestore que contêm tipos de dados mistos, por exemplo, uma coluna com valores STRING e DOUBLE. Se sua tabela do Tablestore possuir tais colunas, a importação de dados via tabela externa do MaxCompute falhará. Como alternativa, utilize o recurso de sincronização em lote de tabela única no DataWorks Data Integration para sincronizar dados do Tablestore para o MaxCompute.
Ao usar a sincronização em lote de tabela única, o grupo de recursos do Data Integration precisa ter acesso à rede da VPC onde a instância do Tablestore reside para ler dados e executar a tarefa de sincronização. Essa solução alternativa não garante compatibilidade total para dados de tipos mistos. Talvez seja necessário converter ou filtrar tipos de dados usando mapeamento de colunas durante a sincronização. O uso de um grupo de recursos do Data Integration gera taxas adicionais.
Tipos de coluna compatíveis
O Tablestore Reader e o Tablestore Writer são compatíveis com todos os tipos de dados do Tablestore. A tabela a seguir lista os mapeamentos de tipos para o Tablestore.
|
Categoria de tipo |
Tipo de dado do Tablestore |
|
Inteiro |
INTEGER |
|
Ponto flutuante |
DOUBLE |
|
String |
STRING |
|
Booleano |
BOOLEAN |
|
Binário |
BINARY |
O Tablestore não oferece suporte nativo ao tipo de dado data. A camada de aplicação geralmente usa um valor Long para armazenar o carimbo de data/hora Unix.
Configure o tipo de dado INTEGER como INT no modo de script. O DataWorks o converte para o tipo INTEGER. Se você configurar o tipo diretamente como INTEGER, um erro será relatado nos logs e a tarefa falhará.
Adicionar uma fonte de dados
Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária seguindo as instruções em Gerenciamento de fontes de dados. Consulte as descrições de parâmetros no console do DataWorks para entender o significado de cada parâmetro ao adicionar uma fonte de dados.
Desenvolver uma tarefa de sincronização de dados
Para obter informações sobre o ponto de entrada e o procedimento de configuração de uma tarefa de sincronização, consulte os guias de configuração a seguir.
Diretrizes para configurar uma tarefa de sincronização em lote de tabela única
Para o procedimento, consulte Configurar uma tarefa de sincronização em lote de tabela única.
Para obter a lista completa de parâmetros e exemplos de script para configuração no modo de script, consulte o Apêndice 1: Exemplos de script do Reader e descrição de parâmetros abaixo.
Apêndice 1: Exemplos de script do Reader e descrição de parâmetros
Configurar uma tarefa de sincronização em lote usando o editor de código
Para configurar uma tarefa de sincronização em lote usando o editor de código, defina os parâmetros relacionados no script conforme os requisitos unificados de formato de script. Para mais informações, consulte Configuração do modo de script. As informações a seguir descrevem os parâmetros necessários para as fontes de dados ao utilizar o editor de código.
Exemplos de script do Reader
Configuração do modo de linha para leitura de tabelas de colunas largas
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "newVersion":"true",// Use the new version of otsreader. "mode": "normal",// Read data in row mode. "isTimeseriesTable":"false",// Configure this table as a wide-column table (not a time-series table). "column":[// The columns. { "name":"column1"// The column name. }, { "name":"column2" }, { "name":"column3" }, { "name":"column4" }, { "name":"column5" } ], "range":{ "split":[ { "type":"STRING", "value":"beginValue" }, { "type":"STRING", "value":"splitPoint1" }, { "type":"STRING", "value":"splitPoint2" }, { "type":"STRING", "value":"splitPoint3" }, { "type":"STRING", "value":"endValue" } ], "end":[ { "type":"STRING", "value":"endValue" }, { "type":"INT", "value":"100" }, { "type":"INF_MAX" }, { "type":"INF_MAX" } ], "begin":[ { "type":"STRING", "value":"beginValue" }, { "type":"INT", "value":"0" }, { "type":"INF_MIN" }, { "type":"INF_MIN" } ] }, "table":""// The table name. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// false indicates that throttling is disabled and the throttling speed below does not take effect. true indicates that throttling is enabled. "concurrent":1 // The concurrency. "mbps":"12"// The throttling speed. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Configuração do modo de linha para leitura de tabelas de séries temporais
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table": "",// The table name. // mode must be set to normal for reading time-series data. "mode": "normal", // newVersion must be set to true for reading time-series data. "newVersion": "true", // Configure this table as a time-series table. "isTimeseriesTable":"true", // measurementName: The measurement name of the time-series data to read. This parameter is optional. If left empty, data from the entire table is read. "measurementName":"measurement_1", "column": [ { "name": "_m_name" }, { "name": "tagA", "is_timeseries_tag":"true" }, { "name": "double_0", "type":"DOUBLE" }, { "name": "string_0", "type":"STRING" }, { "name": "long_0", "type":"INT" }, { "name": "binary_0", "type":"BINARY" }, { "name": "bool_0", "type":"BOOL" }, { "type":"STRING", "value":"testString" } ] }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// false indicates that throttling is disabled and the throttling speed below does not take effect. true indicates that throttling is enabled. "concurrent":1 // The concurrency. "mbps":"12"// The throttling speed. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Configuração do modo de coluna para leitura de tabelas de colunas largas
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table":"",// The table name. "newVersion":"true",// The new version of otsreader. "mode": "multiversion",// The multi-version mode. "column":[// Configure the column names to export (must be non-primary key columns). {"name":"mobile"}, {"name":"name"}, {"name":"age"}, {"name":"salary"}, {"name":"marry"} ], "range":{// The export range. "begin":[ {"type":"INF_MIN"}, {"type":"INF_MAX"} ], "end":[ {"type":"INF_MAX"}, {"type":"INF_MIN"} ], "split":[ ] }, }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// false indicates that throttling is disabled and the throttling speed below does not take effect. true indicates that throttling is enabled. "concurrent":1 // The concurrency. "mbps":"12"// The throttling speed. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Parâmetros comuns do script do Reader
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
endpoint |
O endpoint (endereço de serviço) do servidor Tablestore. Para mais informações, consulte Endpoints. |
Sim |
N/A |
|
accessId |
O AccessKey ID da instância do Tablestore. |
Sim |
N/A |
|
accessKey |
O AccessKey Secret da instância do Tablestore. |
Sim |
N/A |
|
instanceName |
Nome da instância do Tablestore. A instância é a entidade usada para gerenciar o serviço Tablestore. Após ativar o serviço Tablestore, crie uma instância no console e, em seguida, crie e gerencie tabelas dentro dessa instância. A instância é a unidade básica para gerenciamento de recursos do Tablestore. O controle de acesso e a medição de recursos ocorrem no nível da instância. |
Sim |
N/A |
|
table |
Nome da tabela de onde extrair dados. Especifique apenas uma tabela. O Tablestore não suporta sincronização de múltiplas tabelas. |
Sim |
N/A |
|
newVersion |
Versão do plugin Tablestore Reader.
Além de oferecer novos recursos, o novo Tablestore Reader apresenta menor sobrecarga de recursos do sistema. Recomendamos o uso desta versão atualizada. O plugin da nova versão é retrocompatível com a configuração da versão legada. Adicione a configuração newVersion=true às tarefas existentes e elas serão executadas normalmente. |
Não |
false |
|
mode |
Modo de leitura de dados. Dois modos são suportados:
Este parâmetro só tem efeito quando o novo Tablestore Reader é utilizado (newVersion:true). O Tablestore Reader legado ignora o parâmetro mode e suporta apenas leitura no modo de linha. |
Não |
normal |
|
isTimeseriesTable |
Indica se a tabela de dados é uma tabela de séries temporais:
Este parâmetro só tem efeito quando newVersion:true & mode:normal estiver configurado. O Tablestore Reader legado não suporta tabelas de séries temporais, e essas tabelas não podem ser lidas no modo de coluna. |
Não |
false |
Parâmetros adicionais do script do Reader
O Tablestore Reader suporta a leitura de tabelas de colunas largas no modo de linha, a leitura de tabelas de séries temporais no modo de linha e a leitura de tabelas de colunas largas no modo de coluna. As seções a seguir descrevem os parâmetros adicionais para cada modo.
Parâmetros do modo de linha para leitura de tabelas de colunas largas
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
column |
Conjunto de nomes de colunas a serem sincronizados da tabela configurada, descrito usando um array JSON. Como o Tablestore é um sistema NoSQL, especifique os nomes das colunas durante a extração de dados pelo Tablestore Reader.
|
Sim |
N/A |
|
begin e end |
Os parâmetros begin e end especificam o intervalo de dados a serem extraídos da tabela do Tablestore. begin e end descrevem a distribuição de intervalos da PrimaryKey do Tablestore. Para intervalos infinitos, use Nota
Por exemplo, para extrair dados de uma tabela do Tablestore com três colunas de chave primária
|
Não |
(INF_MIN, INF_MAX) |
|
split |
Parâmetro de configuração avançada que permite definir divisões personalizadas. Não recomendamos o uso deste parâmetro em cenários gerais. Ao configurar o parâmetro split, defina intervalos de dados personalizados para fragmentação. Isso é tipicamente usado quando ocorrem hotspots no armazenamento de dados do Tablestore. A configuração de tarefa a seguir serve como exemplo: Durante a execução, os dados são divididos em 6 segmentos e lidos simultaneamente. Recomendamos que o número de segmentos seja maior que a simultaneidade da tarefa. |
Não |
Quando o parâmetro split não está configurado, a lógica de divisão automática é utilizada. A lógica de divisão automática encontra os valores máximo e mínimo da Partition Key e realiza uma segmentação uniforme. A Partition Key suporta tipos inteiros e strings. Chaves inteiras usam divisão inteira para segmentação, e chaves string usam o código Unicode do primeiro caractere para segmentação. |
Parâmetros do modo de linha para leitura de tabelas de séries temporais
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
column |
column é um array onde cada elemento representa uma coluna. Configure colunas constantes e colunas regulares. Para colunas constantes, configure os seguintes campos:
Para colunas regulares, configure os seguintes campos:
Exemplo de script para leitura de quatro colunas:
|
Sim |
N/A |
|
measurementName |
Nome da medição da série temporal a ser lida. Se este parâmetro não for configurado, os dados de toda a tabela serão lidos. |
Não |
N/A |
|
timeRange |
Intervalo de tempo dos dados a serem lidos. O intervalo é [begin, end), fechado à esquerda e aberto à direita, onde begin deve ser menor que end. A unidade do carimbo de data/hora é microssegundos. O formato é o seguinte:
|
Não |
Todas as versões |
Parâmetros do modo de coluna para leitura de tabelas de colunas largas
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
column |
Colunas a serem exportadas. Apenas colunas regulares são suportadas no modo de coluna. Formato: Nota
|
Sim |
Todas as colunas |
|
range |
Intervalo de dados a ser lido. O intervalo é [begin, end), fechado à esquerda e aberto à direita, onde:
Os seguintes tipos são suportados para o campo type:
Formato:
|
Não |
Todos os dados |
|
timeRange |
Intervalo de tempo dos dados a serem lidos. O intervalo é [begin, end), fechado à esquerda e aberto à direita, onde begin deve ser menor que end. A unidade do carimbo de data/hora é microssegundos. Formato: |
Não |
Todas as versões |
|
maxVersion |
Número máximo de versões de dados a serem solicitadas. O intervalo de valores é de 1 a INT32_MAX. |
Não |
Todas as versões |
Apêndice 2: Exemplos de script do Writer e descrição de parâmetros
Configurar uma tarefa de sincronização em lote usando o editor de código
Para configurar uma tarefa de sincronização em lote usando o editor de código, defina os parâmetros relacionados no script conforme os requisitos unificados de formato de script. Para mais informações, consulte Configuração do modo de script. As informações a seguir descrevem os parâmetros necessários para as fontes de dados ao utilizar o editor de código.
Exemplos de script do Writer
Configuração do modo de linha para gravação em tabelas de colunas largas
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table":"",// The table name. "newVersion":"true",// Use the new version of otswriter. "mode": "normal",// Write data in row mode. "isTimeseriesTable":"false",// Configure this table as a wide-column table (not a time-series table). "primaryKey" : [// The primary key information of the Tablestore table. {"name":"gid", "type":"INT"}, {"name":"uid", "type":"STRING"} ], "column" : [// The columns. {"name":"col1", "type":"INT"}, {"name":"col2", "type":"DOUBLE"}, {"name":"col3", "type":"STRING"}, {"name":"col4", "type":"STRING"}, {"name":"col5", "type":"BOOL"} ], "writeMode" : "PutRow" // The write mode. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// When throttle is set to false, the mbps parameter does not take effect, indicating no throttling. When throttle is set to true, throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12"// The throttling speed. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Configuração do modo de linha para gravação em tabelas de séries temporais
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table": "testTimeseriesTableName01", "mode": "normal", "newVersion": "true", "isTimeseriesTable":"true", "timeunit":"microseconds", "column": [ { "name": "_m_name" }, { "name": "_data_source", }, { "name": "_tags", }, { "name": "_time", }, { "name": "string_1", "type":"string" }, { "name":"tag3", "is_timeseries_tag":"true", } ] }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// When throttle is set to false, the mbps parameter does not take effect, indicating no throttling. When throttle is set to true, throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12"// The throttling speed. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Configuração do modo de coluna para gravação em tabelas de colunas largas
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"ots",// The plugin name. "parameter":{ "datasource":"",// The data source. "table":"", "newVersion":"true", "mode":"multiVersion", "primaryKey" : [ "gid", "uid" ] }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. },x` "speed":{ "throttle":true,// When throttle is set to false, the mbps parameter does not take effect, indicating no throttling. When throttle is set to true, throttling is enabled. "concurrent":1, // The concurrency. "mbps":"12"// The throttling speed. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Parâmetros comuns do script do Writer
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
datasource |
Nome da fonte de dados. O modo de script suporta a adição de fontes de dados. O valor deste parâmetro deve ser idêntico ao nome da fonte de dados adicionada. |
Sim |
N/A |
|
endPoint |
Endpoint (endereço de serviço) do servidor Tablestore. Para mais informações, consulte Endpoints. |
Sim |
N/A |
|
accessId |
AccessKey ID da instância do Tablestore. |
Sim |
N/A |
|
accessKey |
AccessKey Secret da instância do Tablestore. |
Sim |
N/A |
|
instanceName |
Nome da instância do Tablestore. A instância é a entidade usada para gerenciar o serviço Tablestore. Após ativar o serviço Tablestore, crie uma instância no console e, em seguida, crie e gerencie tabelas dentro dessa instância. A instância é a unidade básica para gerenciamento de recursos do Tablestore. O controle de acesso e a medição de recursos ocorrem no nível da instância. |
Sim |
N/A |
|
table |
Nome da tabela onde os dados serão gravados. Especifique apenas uma tabela. O Tablestore não suporta sincronização de múltiplas tabelas. |
Sim |
N/A |
|
newVersion |
Versão do plugin Tablestore Writer.
Além de oferecer novos recursos, o novo Tablestore Writer apresenta menor sobrecarga de recursos do sistema. Recomendamos o uso desta versão atualizada. O plugin da nova versão é retrocompatível com a configuração da versão legada. Adicione a configuração newVersion=true às tarefas existentes e elas serão executadas normalmente. |
Sim |
false |
|
mode |
Modo de gravação de dados. Dois modos são suportados:
Este parâmetro só tem efeito quando newVersion:true estiver configurado. O Tablestore Writer legado ignora o parâmetro mode e suporta apenas gravação no modo de linha. |
Não |
normal |
|
isTimeseriesTable |
Indica se a tabela de dados é uma tabela de séries temporais.
Este parâmetro só tem efeito quando newVersion:true & mode:normal estiver configurado (o modo de coluna não é compatível com tabelas de séries temporais). |
Não |
false |
Parâmetros adicionais do script do Writer
O Tablestore Writer suporta gravação em tabelas de colunas largas no modo de linha, gravação em tabelas de séries temporais no modo de linha e gravação em tabelas de colunas largas no modo de coluna. As seções a seguir descrevem os parâmetros adicionais para cada modo.
Parâmetros do modo de linha para gravação em tabelas de colunas largas
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
primaryKey |
Informações da chave primária da tabela do Tablestore, descritas usando um array JSON. Como o Tablestore é um sistema NoSQL, especifique os nomes das colunas durante a importação de dados pelo Tablestore Writer. O sistema de sincronização de dados suporta conversão de tipos, portanto o Tablestore Writer realiza a conversão de tipos de dados para dados de source que não sejam STRING ou INT. Exemplo de configuração: Nota A PrimaryKey do Tablestore suporta apenas os tipos STRING e INT. Portanto, o Tablestore Writer aceita apenas os tipos STRING e INT. |
Sim |
N/A |
|
column |
Conjunto de nomes de colunas a serem sincronizados da tabela configurada, descrito usando um array JSON. Exemplo de configuração: O campo name especifica o nome da coluna do Tablestore onde gravar, e o campo type especifica o tipo de dado a ser gravado. O Tablestore suporta os tipos STRING, INT, DOUBLE, BOOL e BINARY. Nota Constantes, funções ou expressões personalizadas não são suportadas durante a gravação. |
Sim |
N/A |
|
writeMode |
Modo para gravar dados no Tablestore. Os dois modos a seguir são suportados:
|
Sim |
N/A |
|
enableAutoIncrement |
Define se é permitido gravar dados em uma tabela do Tablestore que contém colunas de chave primária com incremento automático.
|
Não |
false |
|
requestTotalSizeLimitation |
Limite de tamanho de uma única linha de dados ao gravar no Tablestore. O tipo de configuração é numérico. |
Não |
1MB |
|
attributeColumnSizeLimitation |
Limite de tamanho de uma única coluna de atributo ao gravar no Tablestore. O tipo de configuração é numérico. |
Não |
2MB |
|
primaryKeyColumnSizeLimitation |
Limite de tamanho de uma única coluna de chave primária ao gravar no Tablestore. O tipo de configuração é numérico. |
Não |
1KB |
|
attributeColumnMaxCount |
Limite de número de colunas de atributo ao gravar no Tablestore. O tipo de configuração é numérico. |
Não |
1.024 |
Parâmetros do modo de linha para gravação em tabelas de séries temporais
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
column |
Cada elemento no array column corresponde a um campo nos dados da série temporal. Cada elemento pode ser configurado com os seguintes parâmetros:
Como o nome da medição e o carimbo de data/hora dos dados da série temporal não podem estar vazios, configure os campos Exemplo: Um registro de dados a ser gravado contém seis campos: Use a seguinte configuração:
|
Sim |
N/A |
|
timeunit |
Unidade do campo de carimbo de data/hora _time. Valores suportados: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS e MINUTES. |
Não |
MICROSECONDS |
Parâmetros do modo de coluna para gravação em tabelas de colunas largas
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
primaryKey |
Colunas de chave primária da tabela. Para reduzir a sobrecarga de configuração, não é necessário especificar a posição da primaryKey no registro (linha). No entanto, o formato do registro deve ser fixo: a primaryKey deve estar no início da linha, seguida pela primaryKey e depois pelo columnName. O formato do registro é: Por exemplo, dados os seguintes 9 registros de dados:
Resultado da gravação no formato de linha larga:
|
Sim |
N/A |
|
columnNamePrefixFilter |
Filtro de prefixo do nome da coluna. Para dados importados do HBase, cf e qulifier formam juntos o columnName. No entanto, o Tablestore não suporta cf, então filtre o prefixo cf. Exemplo de configuração: Nota
|
Não |
N/A |
Perguntas frequentes
-
P: Como configuro o Tablestore Writer para gravar dados em uma tabela de destino que contém colunas de chave primária com incremento automático?
-
A configuração do Tablestore Writer deve atender aos dois requisitos a seguir:
"newVersion": "true", "enableAutoIncrement": "true", Não configure o nome da coluna de chave primária com incremento automático no Tablestore Writer.
A soma do número de entradas primaryKey e do número de entradas column configuradas no Tablestore Writer deve ser igual ao número de colunas nos dados do Tablestore Reader upstream.
-
-
P: Na configuração do modelo de séries temporais, como devo entender os campos _tag e is_timeseries_tag?
Exemplo: Um registro de dados possui três tags: [phone=Xiaomi, RAM=8G, camera=Leica].
-
Exemplo de exportação de dados (Tablestore Reader)
-
Para mesclar as tags acima em uma única coluna para exportação, use a seguinte configuração:
"column": [ { "name": "_tags", } ],O DataWorks exporta as tags como uma única coluna de dados no seguinte formato:
["phone=xiaomi","camera=LEICA","RAM=8G"] -
Para exportar a tag
phonee a tagcamera, com cada tag exportada como uma coluna separada, use a seguinte configuração:"column": [ { "name": "phone", "is_timeseries_tag":"true", }, { "name": "camera", "is_timeseries_tag":"true", } ],O DataWorks exporta duas colunas de dados no seguinte formato:
xiaomi, LEICA
-
-
Exemplo de importação de dados (Tablestore Writer)
A fonte de dados upstream (Reader) possui duas colunas de dados:
Uma coluna contém:
["phone=xiaomi","camera=LEICA","RAM=8G"].A outra coluna contém: 6499.
Para adicionar ambas as colunas ao campo tags, o formato esperado do campo tags após a gravação é o seguinte:
Use a seguinte configuração:"column": [ { "name": "_tags", }, { "name": "price", "is_timeseries_tag":"true", }, ],A configuração da primeira coluna importa
["phone=xiaomi","camera=LEICA","RAM=8G"]como um todo para o campo tags.A configuração da segunda coluna importa
price=6499individualmente para o campo tags.
-