Tutoriel: Analyse en temps réel des données boursières à l'aide de Kinesis Data Streams Je vais.
Le but est de s'habituer à l'utilisation de KCL (Kinesis Consumer Library). Puisque vous toucherez sérieusement à Java, la partie de préparation est également soigneusement ...
(Je pense que c'est une caractéristique de Java que la préparation est difficile ...)
L'environnement d'exécution est supposé être mac.
Installez l'édition communautaire de InteliJ IDEA (car j'étais habitué à PyCharm). Double-cliquez sur celui téléchargé, faites-le glisser et déposez-le dans le dossier de l'application dans la fenêtre ouverte,
Installez Homebrew à l'avance
brew cask install java #Il vous sera demandé de saisir le mot de passe, alors saisissez-le
#Vérification
java -version
> openjdk version "11.0.2" 2019-01-15
> OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
> OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
Vérifiez la version Java (actuellement 11 modèles)
Décrit ci-dessous dans bash_profile
~/.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v "11"`
PATH=${JAVA_HOME}/bin:${PATH}
Après l'écriture, exécutez source ~ / .bash_profile
.
(Il semble que vous puissiez changer la version Java en décalant la valeur de -v
)
brew install maven
#Vérification
mvn -version
> Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T03:41:47+09:00)
> Maven home: /usr/local/Cellar/maven/3.6.0/libexec
> Java version: 11.0.2, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
> Default locale: en_JP, platform encoding: UTF-8
> OS name: "mac os x", version: "10.14.2", arch: "x86_64", family: "mac"
Il y a du code dans Learning Amazon Kinesis Development ... mais honnêtement, il n'a pas été beaucoup mis à jour.
--master: réponse correcte avec tout le code --learning-module-1: Pour apprendre à remplir tout en regardant le tutoriel Il semble que la structure de la branche soit dite, mais il semble que les mises à jour accompagnant la mise à jour de l'API ne soient reflétées que dans la branche principale. Par conséquent, procédez en vous basant sur la branche principale.
git clone https://github.com/aws-samples/amazon-kinesis-learning.git
Après cela, il se déplacera vers un répertoire approprié.
Lancez IntelliJ
com.amazonaws.services.kinesis.samples Définir comme
.
** [artifact-id] **: Nom du projet (par exemple kinesis-stocktrade-tutorial
)> ** [Next] **/ usr / local / Cellar / maven / 3.6.0 / libexec
)Ensuite, le script d'initialisation s'exécutera automatiquement. Une fois terminé, vous devriez avoir un répertoire comme celui ci-dessous, y compris le fichier pom.
De plus, je pense qu'il y a un pop-up qui dit ** [Les projets Maven doivent être importés] ** en bas à droite, alors sélectionnez ʻActiver l'importation automatique`.
Dans maven, pom.xml décrit les bibliothèques requises et les procédures de construction. À propos de la bibliothèque
<dependencies>
<dependency>
Bibliothèque
</dependency>
<dependency>
Bibliothèque
</dependency>
...
</dependencies>
C'est un formulaire à ajouter. (Si l'importation automatique est activée, IntelliJ fera un bon DL)
Les bibliothèques requises pour la bibliothèque pour ce tutoriel
(Les ajouts qui ne sont pas décrits dans le document et ceux qui sont une étape vers le bas sont des dépendances Recherchez-les sur https://mvnrepository.com et collez le xml qui est sorti. La dernière version de KCL est la v2, mais ce tutoriel semble s'arrêter à la v1, j'ai donc choisi la v1.9.3. Utilisation du SDK avec Apache Maven
C'est juste ennuyeux. (Je me demande s'il y a quelque chose comme pip ou yarn en Java ...)
À partir du code cloné, copiez src / main / ... / stocktrades et ci-dessous dans le même répertoire que App.java créé par IntelliJ.
Si le groupId est com.amazonaws.services.kinesis.samples
, il doit avoir la même structure, donc ce n'est pas grave si vous gardez la structure.
Si vous sélectionnez ** [Build] **> ** [Build Project] ** dans la barre de menu, vous obtiendrez une erreur dans StockTradeRecordProcesser: 28
.
Parce que c'est dû au changement de IF
StockTradeRecordProcesser.java
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.ShutdownReason;
Corrigez la ligne qui donne l'erreur.
Je me demande s'il continuera à y avoir des avertissements tels que com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker est obsolète
, mais c'est ce que KCL doit changer lors de la mise à niveau vers la v2, C'est comme
En outre, si vous modifiez le groupId en autre chose, vous pouvez remplacer l'erreur qui se produit en répétant Build. Pour IntelliJ, cliquez là où la ligne rouge est dessinée> une ampoule miniature rouge apparaîtra, alors cliquez sur => Définir le nom du paquet sur ... et il sera corrigé automatiquement.
Après avoir placé les informations d'identification sous ~ / .aws
Vérifiez la fonction qui écrit les données de négociation boursières factices dans le Kinesis spécifié.
Sélectionnez stocktrades / writer / StockTradesWriter.java
sur IntelliJ, sélectionnez la barre de menu ** [Exécuter] **> ** [Exécuter ...] **, et sélectionnez StockTradesWriter
dans la fenêtre contextuelle qui apparaît. Sélectionner.
Puis
Usage: StockTradesWriter <stream name> <region>
Sortira. La cause est que rien n'est passé à l'argument, donc encore
Barre de menus ** [Exécuter] **> ** [Modifier les configurations] **> ** [StockTradesWriter] **> ** Entrez {created Kinesis name} {region}
dans [Program Arguments] ** Après ok] **
** [Exécutez] ** le Stock Trades Writer
à nouveau et
INFO: Putting trade: ID 1: BUY 2383 shares of DIS for $114.35
Feb 11, 2019 9:45:47 PM com.amazonaws.services.kinesis.samples.stocktrades.writer.StockTradesWriter sendStockTrade
INFO: Putting trade: ID 2: SELL 1022 shares of JNJ for $93.94
Feb 11, 2019 9:45:47 PM com.amazonaws.services.kinesis.samples.stocktrades.writer.StockTradesWriter sendStockTrade
INFO: Putting trade: ID 3: BUY 7069 shares of WMT for $97.06
Feb 11, 2019 9:45:48 PM com.amazonaws.services.kinesis.samples.stocktrades.writer.StockTradesWriter sendStockTrade
INFO: Putting trade: ID 4: BUY 5939 shares of GOOG for $437.30
Si un journal comme celui-ci coule, c'est un succès.
Lisez l'enregistrement de Kinesis et vérifiez la fonction qui regroupe les informations de transaction.
Pour stocktrades / processor / StockTradesProcessor.java
, ** [Run] ** ainsi que le lecteur
Usage: StockTradesProcessor <application name> <stream name> <region>
Sortira.
Vous pouvez définir les mêmes valeurs pour streamname
et region
que du côté écriture, mais soyez prudent car il s'agit du nom de l'application, qui est ** le nom de table de DynamoDB utilisé par KCL pour gérer l'état **. Si vous ne l'avez pas, il sera créé sans autorisation, donc je pense que vous pouvez utiliser le même nom que streamname
.
Si vous le définissez à nouveau comme le côté écriture et ** [Exécuter] **
INFO: Initializing record processor for shard: shardId-000000000057
Si un affichage comme celui-ci apparaît, c'est un succès pour le moment.
Afin d'exécuter Writer
et Processor
indépendamment, compilez-les séparément afin qu'ils puissent fonctionner indépendamment. Ajoutez à pom.xml
comme indiqué ci-dessous.
pom.xml
<project>
...
<build>
<pluginManagement><!--Gérez les versions ici-->
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<!--Créer un package (jar) qui résume les classes d'exécution-->
<!-- assembly-plugin crée un fichier jar exécutable unique comprenant des bibliothèques de dépendances-->
<artifactId>maven-assembly-plugin</artifactId>
...
<executions>
<execution>
<id>build-writer</id>
<phase>package</phase><!--Généré en même temps lors de la frappe du package mvn-->
<goals>
<goal>single</goal><!--objectif de base du plugin d'assemblage-->
</goals>
<configuration>
<archive>
<manifest>
<!--Principal de ce pot()Spécifiez le fichier à-->
<mainClass>com.amazonaws.services.kinesis.samples.stocktrades.writer.StockTradesWriter</mainClass>
</manifest>
</archive>
<descriptorRefs>
<!--Possibilité de combiner des projets et des bibliothèques externes en un seul pot-->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>StockTradesWriter</finalName>
</configuration>
</execution>
<execution>
<id>build-processor</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>com.amazonaws.services.kinesis.samples.stocktrades.processor.StockTradesProcessor</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>StockTradesProcessor</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Après l'ajout, sélectionnez ** [Nom du projet] **> ** [Cycle de vie] **> ** [package] ** dans l'onglet ** [Maven] ** à droite d'IntelliJ, puis cliquez sur la marque ▶ ️ pour cible
Directement en dessous
Est généré.
Le reste est identique à la vérification des opérations avec IntelliJ plus tôt
java -jar StockTradesWriter.jar-jar-with-dependencies.jar {streamname} {region}
#Dans un autre onglet
java -jar StockTradesProcessor.jar-jar-with-dependencies.jar {appname} {streamname} {region}
Je pense que vous pouvez vérifier le fonctionnement en le frappant au terminal.
Jusqu'à présent, je vais en apprendre davantage sur chaque classe et méthode qui auraient dû être remplies.
Recommended Posts