Implemente funções definidas pelo usuário - Managed Service for Apache Flink

Anteriormente, o Amazon Managed Service for Apache Flink era conhecido como Amazon Kinesis Data Analytics for Apache Flink.

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á.

Implemente funções definidas pelo usuário

As funções definidas pelo usuário (UDFs) são pontos de extensão que permitem chamar a lógica usada com frequência ou a lógica personalizada que não pode ser expressa de outra forma em consultas. Você pode usar Python ou uma JVM linguagem como Java ou Scala para implementar seus parágrafos UDFs em seu notebook Studio. Você também pode adicionar ao seu notebook Studio JAR arquivos externos que contenham UDFs implementados em uma JVM linguagem.

Ao implementar JARs esse registro de classes abstratas dessa subclasse UserDefinedFunction (ou suas próprias classes abstratas), use o escopo fornecido no Apache Maven, as declarações de compileOnly dependência no Gradle, o escopo fornecido em ou uma diretiva equivalente na configuração de SBT compilação do seu projeto. UDF Isso permite que o UDF código-fonte seja compilado com base no FlinkAPIs, mas as API classes do Flink não estão incluídas nos artefatos de construção. Consulte este exemplo de pom do UDF frasco, que atende a esse pré-requisito em um projeto Maven.

Para usar o console para adicionar UDF JAR arquivos ao seu notebook Studio, siga estas etapas:

  1. Faça o upload UDF JAR do seu arquivo para o Amazon S3.

  2. No AWS Management Console, escolha a opção de criação personalizada para criar seu notebook Studio.

  3. Siga o fluxo de trabalho de criação do notebook Studio até chegar à etapa Configurações.

  4. Na seção Funções definidas pelo usuário, selecione Adicionar função definida pelo usuário.

  5. Especifique a localização do JAR arquivo no Amazon S3 ou o ZIP arquivo que tem a implementação do seu. UDF

  6. Escolha Salvar alterações.

Para adicionar um UDF JAR ao criar um novo notebook Studio usando o CreateApplicationAPI, especifique a JAR localização no tipo de CustomArtifactConfiguration dados. Para adicionar UDF JAR a a a um notebook Studio existente, invoque a UpdateApplicationAPIoperação e especifique a JAR localização no tipo de CustomArtifactsConfigurationUpdate dados. Como alternativa, você pode usar o AWS Management Console para adicionar UDF JAR arquivos ao seu notebook Studio.

Considerações com funções definidas pelo usuário

  • O Managed Service for Apache Flink Studio usa a terminologia do Apache Zeppelin, em que um notebook é uma instância do Zeppelin que pode conter várias notas. Cada nota pode conter vários parágrafos. Com o Managed Service for Apache Flink Studio, o processo do intérprete é compartilhado em todas as notas no notebook. Portanto, se você realizar um registro de função explícito usando createTemporarySystemFunction em uma nota, a mesma poderá ser referenciada como está em outra nota do mesmo caderno.

    No entanto, a operação Implantar como aplicativo funciona em uma nota individual e não em todas as notas no notebook. Quando você executa a implantação como aplicativo, somente o conteúdo da nota ativa é usado para gerar o aplicativo. Qualquer registro explícito de função realizado em outros notebooks não faz parte das dependências de aplicativos geradas. Além disso, durante a opção Implantar como aplicativo, ocorre um registro implícito da função convertendo o nome da classe principal de JAR em uma string minúscula.

    Por exemplo, se TextAnalyticsUDF for a classe principal para UDFJAR, um registro implícito resultará no nome textanalyticsudf da função. Portanto, se um registro de função explícito na nota 1 do Studio ocorrer da seguinte forma, todas as outras notas nesse notebook (digamos, nota 2) poderão referenciar a função pelo nome por myNewFuncNameForClass causa do interpretador compartilhado:

    stenv.createTemporarySystemFunction("myNewFuncNameForClass", new TextAnalyticsUDF())

    No entanto, durante a operação de implantação como aplicativo na nota 2, esse registro explícito não será incluído nas dependências e, portanto, o aplicativo implantado não funcionará conforme o esperado. Por causa do registro implícito, por padrão, espera-se que todas as referências a essa função estejam com textanalyticsudf ou não myNewFuncNameForClass.

    Se houver necessidade de registro de nome de função personalizado, espera-se que a própria nota 2 contenha outro parágrafo para realizar outro registro explícito da seguinte forma:

    %flink(parallelism=l) import com.amazonaws.kinesis.udf.textanalytics.TextAnalyticsUDF # re-register the JAR for UDF with custom name stenv.createTemporarySystemFunction("myNewFuncNameForClass", new TextAnalyticsUDF())
    %flink. ssql(type=update, parallelism=1) INSERT INTO table2 SELECT myNewFuncNameForClass(column_name) FROM table1 ;
  • Se você UDF JAR incluir o FlinkSDKs, configure seu projeto Java para que o UDF código-fonte possa ser compilado com o FlinkSDKs, mas as SDK classes do Flink não sejam incluídas no artefato de construção, por exemplo o. JAR

    Você pode usar provided scope no Apache Maven, declarações de compileOnly dependência no Gradle, provided scope in ou diretiva equivalente na configuração SBT de compilação do projeto. UDF Você pode consultar esse pom no exemplo do UDF frasco, que segue esse pré-requisito em um projeto maven. Para ver um step-by-step tutorial completo, consulte este artigo Traduza, edite e analise dados de streaming usando SQL funções com o Amazon Managed Service para Apache Flink, Amazon Translate e Amazon Comprehend.