Implementa funzioni definite dall'utente - Servizio gestito per Apache Flink

Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis per Apache Flink.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementa funzioni definite dall'utente

Le funzioni definite dall'utente (UDFs) sono punti di estensione che consentono di richiamare la logica utilizzata di frequente o la logica personalizzata che non può essere espressa diversamente nelle query. Puoi usare Python o un JVM linguaggio come Java o Scala per implementare i paragrafi UDFs all'interno del tuo notebook Studio. Puoi anche aggiungere al tuo notebook Studio JAR file esterni che contengono file UDFs implementati in un JVM linguaggio.

Quando implementate le classi astratte di JARs quel registro in quella sottoclasse UserDefinedFunction (o le vostre classi astratte), utilizzate provided scope in Apache Maven, le dichiarazioni di compileOnly dipendenza in Gradle, provided scope in o una direttiva equivalente nella configurazione SBT di build del progetto. UDF Ciò consente la compilazione del codice UDF sorgente con FlinkAPIs, ma le classi Flink non sono esse stesse incluse negli artefatti di compilazioneAPI. Fate riferimento a questo esempio di pom from the UDF jar che rispetta tale prerequisito su un progetto Maven.

Per utilizzare la console per aggiungere UDF JAR file al tuo notebook Studio, segui questi passaggi:

  1. Carica il tuo UDF JAR file su Amazon S3.

  2. In AWS Management Console, scegli l'opzione di creazione personalizzata per creare il tuo notebook Studio.

  3. Segui il flusso di lavoro per la creazione del notebook Studio fino alla fase Configurazioni.

  4. Nella sezione Funzioni definite dall'utente, scegli Aggiungi una funzione definita dall'utente.

  5. Specificate la posizione in Amazon S3 del JAR file o del ZIP file che contiene l'implementazione del vostro. UDF

  6. Scegli Save changes (Salva modifiche).

Per aggiungere un UDF JAR messaggio quando crei un nuovo notebook Studio utilizzando il CreateApplicationAPI, specifica la JAR posizione nel tipo di CustomArtifactConfiguration dati. Per aggiungere un UDF JAR notebook Studio esistente, richiamate l'UpdateApplicationAPIoperazione e specificate la JAR posizione nel tipo di CustomArtifactsConfigurationUpdate dati. In alternativa, puoi usare il AWS Management Console per aggiungere UDF JAR file al tuo taccuino Studio.

Considerazioni sulle funzioni definite dall'utente

  • Il servizio gestito per Apache Flink Studio utilizza la terminologia di Apache Zeppelin, in cui un notebook è un'istanza Zeppelin che può contenere più note. Ogni nota può quindi contenere più paragrafi. Con il servizio gestito per Apache Flink Studio, il processo di interpretazione è condiviso tra tutte le note del taccuino. Quindi, se si esegue una registrazione esplicita della createTemporarySystemfunzione utilizzando Function in una nota, è possibile fare riferimento alla stessa così com'è in un'altra nota dello stesso taccuino.

    L'operazione Implementa come applicazione funziona tuttavia su una singola nota e non su tutte le note del notebook. Quando si esegue l'implementazione come applicazione, per generare l'applicazione vengono utilizzati solo i contenuti della nota attiva. Qualsiasi registrazione esplicita di funzioni eseguita in altri notebook non fa parte delle dipendenze dell'applicazione generate. Inoltre, durante l'opzione Deploy as application, avviene una registrazione implicita della funzione convertendo il nome della classe principale di in una stringa minuscola. JAR

    Ad esempio, se TextAnalyticsUDF è la classe principale di UDFJAR, una registrazione implicita darà come risultato il nome della funzione. textanalyticsudf Quindi, se la registrazione esplicita di una funzione nella nota 1 di Studio si verifica come segue, tutte le altre note in quel notebook (ad esempio la nota 2) possono fare riferimento alla funzione in base al nome myNewFuncNameForClass grazie all'interprete condiviso:

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

    Tuttavia, durante l'operazione di implementazione come applicazione sulla nota 2, questa registrazione esplicita non verrà inclusa nelle dipendenze e quindi l'applicazione implementata non funzionerà come previsto. A causa della registrazione implicita, per impostazione predefinita tutti i riferimenti a questa funzione dovrebbero essere con textanalyticsudf e non con myNewFuncNameForClass.

    Se è necessaria una registrazione personalizzata del nome della funzione, si prevede che la nota 2 stessa contenga un altro paragrafo per eseguire un'altra registrazione esplicita come segue:

    %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 UDF JAR includi FlinkSDKs, configura il tuo progetto Java in modo che il codice UDF sorgente possa essere compilato con FlinkSDKs, ma le SDK classi Flink non siano esse stesse incluse nell'elemento di build, ad esempio the. JAR

    È possibile utilizzare provided scope in Apache Maven, dichiarazioni di compileOnly dipendenza in Gradle, scope in o una direttiva equivalente nella configurazione di build del progetto. provided SBT UDF Puoi fare riferimento a questo pom dall'esempio UDF jar, che rispetta tale prerequisito su un progetto Maven. Per un step-by-step tutorial completo, consulta questo articolo Traduci, correggi e analizza i dati di streaming utilizzando SQL le funzioni con Amazon Managed Service for Apache Flink, Amazon Translate e Amazon Comprehend.