-1

J'ai une table journalière de logs (environ 10m entrées chaque jour) stockées dans DynamoDB.AWS: transformation de données de dynamodb à redshift

Pour effectuer une analyse, j'ai besoin de la transférer dans Redshift. De plus, j'ai besoin de créer de nouvelles colonnes parmi celles existantes en analysant une chaîne (nvarchar (250)). Mon idée était d'utiliser la commande COPY et de transférer les données de DynamoDB vers Redshift, puis d'utiliser les fonctions UDF pour créer de nouvelles colonnes. Le problème avec cette approche est qu'il faut beaucoup de temps pour terminer (les deux parties) et il continue d'échouer (état de la requête ABORTED): Je transfère environ 10 jours de données en une seule commande de copie.

Selon vous, quelle devrait être la meilleure approche: utiliser certains services Amazon comme le pipeline de données ou le DME? ou faire la même chose mais organisée différemment?

Répondre

1

Ma suggestion de conception n'est pas de stocker vos données dans dynamodb. Parce que dans la perspective de coût lorsque vous copiez la commande, elle consomme la plus haute valeur de débit que vous avez définie pour dynamo db.

Vous ne savez pas comment définir les valeurs de clé primaire et quelle est la valeur de put actuelle définie pour dynamodb.

Pour cela, ma solution est d'écrire des données dans s3 dans le format requis de stockage redshift. À partir de s3, transformez vos données en cluster redshift en utilisant un pipeline de données dans une activité périodique/ponctuelle.

La ligne de données Aws utilise par défaut EMR pour traiter vos données.

Si vous avez besoin de plus de nettoyage avant de stocker des données, pensez à utiliser Spark dans EMR.

Mais avant cela, vous devez dire. Quelle est la taille de la taille des enregistrements 10m et vous avez l'option d'adopter ma suggestion comme l'écriture à s3. Si oui, vous devez concevoir en considérant le processus de performance/coût optimisé.

Si vous avez besoin de plus d'aide poster des commentaires contribuera ma meilleure suggestion.

+0

Merci pour la réponse! une question: pensez-vous que le pipeline de données peut être utilisé pour créer de nouvelles colonnes tout en transférant des données de dynamodb à s3, ou les données doivent-elles être transférées d'abord puis transformées (en redshift)? –

+0

Aucun pipeline de données ne prend en charge cette fonctionnalité. Pourquoi vous ne pouvez pas écrire le fichier s3 avec les données dont vous avez besoin? Si vous voulez le faire à partir dynamo db. Optez pour aws glue ou utilisez dynamo db stream wrapper et traitez les enregistrements en lambda et écrivez en s3 (mais je ne suis pas du tout d'accord avec cette solution à long terme/coût/performance) –

+0

autant que je l'ai vu, aws colle aussi bien) n'est disponible que dans une région: nous est (N. virginia) et mes données sont dans l'autre région ... –

0

Vous pouvez utiliser AWS Glue pour configurer un travail ETL (Extract Transform Load) pour déplacer vos données de DynamoDB vers Redshift.