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á.
Usar o S3 Select com Spark para melhorar a performance das consultas
Com a EMR versão 5.17.0 da Amazon e versões posteriores, você pode usar o S3 Select
O S3 Select é compatível com JSON arquivos CSV e s3selectJSON
valores que usam s3selectCSV
e para especificar o formato dos dados. Para ter mais informações e exemplos, consulte Especificar o S3 Select no seu código.
O S3 Select é adequado para minha aplicação?
Recomendamos que você avalie seus aplicativos com e sem o S3 Selecione para ver se o uso pode ser adequado para o aplicativo.
Use as seguintes diretrizes para determinar se o seu aplicativo é adequado para o uso do S3 Select:
-
Sua consulta filtra mais de metade do conjunto de dados original.
-
Sua conexão de rede entre o Amazon S3 e o EMR cluster da Amazon tem boa velocidade de transferência e largura de banda disponível. O Amazon S3 não compacta HTTP respostas, então é provável que o tamanho da resposta aumente para arquivos de entrada compactados.
Considerações e limitações
-
A criptografia do lado do servidor do Amazon S3 com chaves de criptografia fornecidas pelo cliente (SSE-C) e a criptografia do lado do cliente não são suportadas.
-
A propriedade
AllowQuotedRecordDelimiters
não é compatível. Se essa propriedade for especificada, a consulta falhará. -
Somente JSON arquivos CSV e arquivos no formato UTF -8 são suportados. Não CSVs há suporte para várias linhas.
-
Somente arquivos descompactados ou gzip são compatíveis.
-
O Spark CSV e JSON opções como
nanValue
,positiveInf
negativeInf
, e opções relacionadas a registros corrompidos (por exemplo, modo failfast e dropmalformed) não são suportados. -
O uso de vírgulas (,) em casas decimais não é compatível. Por exemplo,
10,000
não é compatível, mas10000
é. -
Caracteres de comentário na última linha não são compatíveis.
-
Linhas vazias no final de um arquivo não são processadas.
-
Os seguintes filtros não são enviados para o Amazon S3:
-
Funções agregadas, como
COUNT()
eSUM()
. -
Filtros que
CAST()
um atributo. Por exemplo,CAST(stringColumn as INT) = 1
. -
Filtros com um atributo que é um objeto ou complexo. Por exemplo,
intArray[1] = 1, objectColumn.objectNumber = 1
. -
Filtros para os quais o valor não é um valor literal. Por exemplo,
intColumn1 = intColumn2
. -
Somente tipos de dados compatíveis com o S3 Select são compatíveis com as limitações documentadas.
-
Especificar o S3 Select no seu código
Os exemplos a seguir demonstram como especificar o S3 Select para CSV usar Scala, SQL R e. PySpark Você pode usar o S3 Select for JSON da mesma forma. Para obter uma lista de opções, os valores padrão e limitações, consulte Opções.
Opções
As seguintes opções estão disponíveis ao usar s3selectCSV
e s3selectJSON
. Se não for especificado, os valores padrão serão usados.
Opções com S3select CSV
Opção | Padrão | Uso |
---|---|---|
|
|
Indica se a compactação é usada. |
|
"," |
Especifica o delimitador de campo. |
|
|
Especifica o caractere de aspas. A especificação de uma string vazia não é suportada e resulta em um erro malformadoXML. |
|
|
Especifica o caractere de escape. |
|
|
|
comentário |
|
Especifica o caractere de comentário. O indicador de comentários não pode ser desativado. Em outras palavras, um valor de |
|
"" |
Opções com S3select JSON
Opção | Padrão | Uso |
---|---|---|
|
|
Indica se a compactação é usada. |
|
"falso" |
|