As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Formato de dados de carga do Gremlin
Para carregar dados do Apache TinkerPop Gremlin usando o CSV formato, você deve especificar os vértices e as bordas em arquivos separados.
O carregador pode carregar vários arquivos de vértice e vários arquivos de ponto em um único trabalho de carga.
Para cada comando de carga, o conjunto de arquivos a serem carregados deve estar na mesma pasta no bucket do Amazon S3 e você deve especificar o nome da pasta para o parâmetro source
. Os nomes dos arquivos e as extensões dos nomes dos arquivos não são importantes.
O formato Amazon CSV Neptune segue RFC a especificação 4180. CSV Para obter mais informações, consulte Formato e MIME tipo comuns para CSV arquivos
nota
Todos os arquivos devem ser codificados no formato UTF -8.
Cada arquivo tem uma linha de cabeçalho separada por vírgula. A linha de cabeçalho consiste nos cabeçalhos da coluna do sistema e nos cabeçalhos da coluna de propriedade.
Cabeçalhos de colunas do sistema
Os cabeçalhos da coluna do sistema exigidos e permitidos são diferentes para arquivos de vértice e arquivos de ponto.
Cada coluna do sistema pode aparecer apenas uma vez em um cabeçalho.
Todos os rótulos diferenciam maiúsculas de minúsculas.
Cabeçalhos de vértice
-
~id
: obrigatórioUm ID para o vértice.
-
~label
Um rótulo para o vértice. Vários valores de rótulo são permitidos, separados por ponto e vírgula (
;
).Se não
~label
estiver presente, TinkerPop fornece um rótulo com o valorvertex
, porque cada vértice deve ter pelo menos um rótulo.
Cabeçalhos de ponto
-
~id
: obrigatórioUm ID para o ponto.
-
~from
: obrigatórioO ID do vértice do vértice de.
-
~to
: obrigatórioO ID do vértice do vértice para.
-
~label
Um rótulo para o ponto. Os pontos podem ter apenas um único rótulo.
Se não
~label
estiver presente, TinkerPop fornece uma etiqueta com o valoredge
, pois cada borda deve ter uma etiqueta.
Cabeçalhos de coluna de propriedade
É possível especificar uma coluna (:
) para uma propriedade usando a sintaxe a seguir. Os nomes dos tipos não diferenciam maiúsculas de minúsculas. No entanto, observe que, se houver o caractere de dois pontos no nome de uma propriedade, ele deverá ser precedido por uma barra invertida como caractere de escape: \:
propertyname
:type
nota
Não são permitidos caracteres de espaço, vírgula, retorno de carro e nova linha nos cabeçalhos das colunas, portanto, os nomes das propriedades não podem incluir esses caracteres.
Você pode especificar uma coluna para um tipo de matriz adicionando []
para o tipo:
propertyname
:type
[]
nota
As propriedades de borda podem ter apenas um único valor e causarão um erro se um tipo de matriz é especificado ou um segundo valor é especificado.
O exemplo a seguir mostra o cabeçalho da coluna de uma propriedade denominada age
do tipo Int
.
age:Int
Cada linha no arquivo precisa ter um número inteiro nessa posição ou ser deixada em branco.
Matrizes de strings são permitidas, mas as strings em uma matriz não podem incluir o caractere ponto e vírgula (;
), a menos que ele tenha uma barra invertida como caractere de escape (como este: \;
).
Especificar a cardinalidade de uma coluna
A partir de Versão 1.0.1.0.200366.0 (26/07/2019), o cabeçalho da coluna pode ser usado para especificar a cardinalidade da propriedade identificada pela coluna. Isso permite que o carregador em massa use a cardinalidade de forma semelhante à forma como as consultas do Gremlin fazem.
Você especifica a cardinalidade de uma coluna da seguinte forma:
propertyname
:type
(cardinality
)
A ferramenta cardinality
o valor pode ser single
ouset
. O padrão é set
, o que significa que a coluna pode aceitar vários valores. No caso de arquivos de ponto, a cardinalidade é sempre única e especificar qualquer outra cardinalidade faz com que o carregador gere uma exceção.
Se a cardinalidade for single
, o carregador lançará um erro se um valor anterior já estiver presente quando um valor for carregado, ou se vários valores forem carregados. Esse comportamento pode ser substituído para que um valor existente seja substituído quando um novo valor é carregado usando o sinalizador updateSingleCardinalityProperties
. Consulte Comando Loader.
É possível usar uma configuração de cardinalidade com um tipo de matriz, embora isso não seja geralmente necessário. Estas são as combinações possíveis:
name:type
: a cardinalidade éset
, e o conteúdo é um único valor.name:type[]
: a cardinalidade éset
, e o conteúdo são vários valores.name:type(single)
: a cardinalidade ésingle
, e o conteúdo é um único valor.name:type(set)
: a cardinalidade éset
, equivalente ao padrão, e o conteúdo é um único valor.name:type(set)[]
: a cardinalidade éset
, e o conteúdo são vários valores.name:type(single)[]
: isso é contraditório e gera um erro.
A seção a seguir lista todos os tipos de dados do Gremlin disponíveis.
Tipos de dados do Gremlin
Esta é uma lista dos tipos de propriedade permitidos, com uma descrição de cada tipo.
Bool (ou booliano)
Indica um campo booliano. Valores permitidos: false
, true
nota
Qualquer valor diferente de true
será tratado como falso.
Tipos de número inteiro
Os valores fora dos intervalos definidos resultam em um erro.
Tipo | Intervalo |
---|---|
Byte | -128 a 127 |
Short | -32768 a 32767 |
Int | -2^31 a 2^31-1 |
Long | -2^63 a 2^63-1 |
Tipos de número decimal
Compatíveis com a notação decimal ou com a notação científica. Também permite símbolos, como (+/-) Infinity ou NaN. Não há suporte ao INF.
Tipo | Intervalo |
---|---|
Float | Ponto flutuante IEEE 754 de 32 bits |
Double | Ponto flutuante IEEE 754 de 64 bits |
Valores flutuantes e duplos que são muito longos são carregados e arredondados para a precisão do valor mais próximo de 24 bits (flutuante) e 53 bits (duplo). Um valor intermediário é arredondado para zero para os últimos dígitos restantes no nível de bits.
String
Aspas são opcionais. Os caracteres de vírgulas, nova linha e retorno de carro serão escapados automaticamente se forem incluídos em uma sequência entre aspas duplas ("
). Exemplo: "Hello,
World"
Para incluir aspas em uma string entre aspas, você pode efetuar o escape as aspas usando duas em seguida: Exemplo: "Hello
""World"""
Matrizes de strings são permitidas, mas as strings em uma matriz não podem incluir o caractere ponto e vírgula (;
), a menos que ele tenha uma barra invertida como caractere de escape (como este: \;
).
Se desejar usar sequências entre aspas em uma matriz, você deverá colocar a matriz inteira entre um conjunto de aspas. Exemplo: "String one; String 2; String 3"
Data
Data Java no formato ISO -8601. Compatível com os formatos: yyyy-MM-dd
, yyyy-MM-ddTHH:mm
, yyyy-MM-ddTHH:mm:ss
, yyyy-MM-ddTHH:mm:ssZ
Formato de linhas do Gremlin
Delimitadores
Os campos em uma linha são separados por uma vírgula. Os registros são separados por uma nova linha ou por uma nova linha seguida por um retorno de carro.
Campos em branco
Os campos em branco são permitidos para colunas não necessárias (como as propriedades definidas pelo usuário). Um campo em branco ainda exige uma vírgula separadora. Campos em branco nas colunas obrigatórias resultarão em um erro de análise. Valores de string vazios são interpretados como valores de string vazios para o campo; não como um campo em branco. O exemplo na próxima seção tem um campo em branco em cada vértice de exemplo.
Vértice IDs
Os valores de ~id
devem ser exclusivos para todos os vértices em cada arquivo de vértice. Várias linhas de vértices com valores idênticos de ~id
são aplicadas a um único vértice no gráfico. A string vazia (""
) é um id válido e o vértice é criado com uma string vazia como id.
Borda IDs
Além disso, os valores de ~id
devem ser exclusivos para todos os pontos em cada arquivo de ponto. Várias linhas de pontos com valores idênticos de ~id
são aplicadas ao único ponto no gráfico. A string vazia (""
) é uma identificação válida e a borda é criada com uma string vazia como a identificação.
Rótulos
As etiquetas diferenciam maiúsculas e minúsculas e não podem estar vazias. Um valor de ""
resultará em um erro.
Valores de sequências
Aspas são opcionais. Os caracteres de vírgulas, nova linha e retorno de carro serão escapados automaticamente se forem incluídos em uma sequência entre aspas duplas ("
). Valores de string vazios ("")
são interpretados como um valor de string vazio para o campo; não como um campo em branco.
CSVEspecificação de formato
O formato CSV Neptune segue a especificação CSV 4180, incluindo RFC os seguintes requisitos.
Os finais de linha no estilo do Unix e do Windows são compatíveis (\n ou \r\n).
Qualquer campo pode ser colocado entre aspas (usando aspas duplas).
Campos que contêm uma quebra de linha, aspas duplas ou vírgulas devem ser colocados entre aspas. (Se não estiverem, o carregamento será abortado imediatamente.)
Um caractere de aspas duplas (
"
) em um campo deve ser representado por dois caracteres de aspas duplas. Por exemplo, uma sequênciaHello "World"
deve estar presente como"Hello ""World"""
nos dados.Espaços circundantes entre delimitadores são ignorados. Se uma linha estiver presente como
value1, value2
, ela será armazenada como"value1"
"value2"
e.Todos os outros caracteres de escape são armazenados textualmente. Por exemplo,
"data1\tdata2"
é armazenado como"data1\tdata2"
. Nenhum outro escape é necessário, desde que esses caracteres sejam incluídos entre aspas.Campos em branco são permitidos. Um campo em branco é considerado um valor vazio.
Vários valores para um campo são especificados com um ponto e vírgula (
;
) entre os valores.
Para obter mais informações, consulte Formato e MIME tipo comuns para CSV arquivos
Exemplo do Gremlin
O diagrama a seguir mostra um exemplo de dois vértices e uma aresta retirados do gráfico TinkerPop moderno.
A seguir está o gráfico no formato de carregamento CSV Neptune.
Arquivo de vértice:
~id,name:String,age:Int,lang:String,interests:String[],~label v1,"marko",29,,"sailing;graphs",person v2,"lop",,"java",,software
Visualização tabular do arquivo de vértice:
~id | name:String | age:Int | lang:String | Interesses: string [] | ~label |
v1 | "marko" | 29 | ["navegação”, “gráficos"] | pessoa | |
v2 | "lop" | "java" | software |
Arquivo de ponto
~id,~from,~to,~label,weight:Double e1,v1,v2,created,0.4
Visualização tabular do arquivo de ponto:
~id | ~from | ~to | ~label | weight:Double |
e1 | v1 | v2 | created | 0.4 |
Próximos Passos
Agora que você sabe mais sobre os formatos de carregamento, consulte Exemplo: carregamento de dados em uma instância de banco de dados do Neptune.