J'essaye d'écrire des données d'une API (google stocks/finance API) dans mon flux AWS Firehose. J'ai déjà téléchargé et installé le plugin AWS sur Eclipse, configuré mon flux Firehose sur AWS, et tout semble être configuré correctement. Je rencontre des problèmes, cependant. La ligne suivante semble être obsolète ... J'ai essayé différentes variantes du SDK d'Amazon, mais je n'arrive pas à obtenir le bon code.Obtention d'erreurs dans le programme Java pour écrire dans le flux Kinesis Firehose
AmazonKinesisFirehoseClient firehoseClient = new AmazonKinesisFirehoseClient(credentials);
Ensuite, je reçois quelques erreurs avec ce qui suit. L'erreur spécifique est "La méthode setRecord (Record) n'est pas définie pour le type PutRecordRequest," même si je l'ai pris directement à partir de la référence API d'Amazon.
request.setRecord(record);
firehoseClient.putRecord(request);
obtenir également une erreur sur la deuxième ligne au-dessus: « La méthode putRecord (com.amazonaws.services.kinesisfirehose.model.PutRecordRequest) dans le AmazonKinesisFirehoseClient de type ne sont pas applicables pour les arguments (com.amazonaws. services.kinesis.model.PutRecordRequest) »
package com.amazonaws.samples;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.ByteBuffer;
import org.apache.http.client.CredentialsProvider;
import com.amazonaws.*;
import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.kinesis.AmazonKinesis;
import com.amazonaws.services.kinesis.AmazonKinesisClient;
import com.amazonaws.services.kinesis.AmazonKinesisClientBuilder;
import com.amazonaws.services.kinesis.clientlibrary.interfaces.IRecordProcessorFactory;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.InitialPositionInStream;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibConfiguration;
import com.amazonaws.services.kinesis.clientlibrary.lib.worker.Worker;
import com.amazonaws.services.kinesis.model.PutRecordRequest;
import com.amazonaws.services.kinesis.model.ResourceNotFoundException;
import com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehoseClient;
import com.amazonaws.services.kinesisfirehose.model.PutRecordBatchRequest;
import com.amazonaws.services.kinesisfirehose.model.Record;
public class FirehoseExample {
public static void main(String[] args) {
AWSCredentials credentials = null;
try {
credentials = new ProfileCredentialsProvider().getCredentials();
}
catch (Exception e) {
throw new AmazonClientException("Cannot load the credentials from the credential profiles file. "
+ "Please make sure that your credentials file is at the correct "
+ "location (/Users/elybenari/.aws/credentials), and is in valid format.", e);
}
AmazonKinesisFirehoseClient firehoseClient = new AmazonKinesisFirehoseClient(credentials);
PutRecordRequest request = new PutRecordRequest();
request.setStreamName("project-stream");
Record record = new Record();
for (int i = 0; i < 20*60; i++){
try {
URL url = new URL("https://www.google.com/finance/info?q=NASDAQ:AMZN");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
System.out.println(response.toString().replace("\n", "").replaceAll(" ", ""));
System.out.println("****\n");
ByteBuffer buffer = ByteBuffer.wrap(response.toString().replace("\n", "").replaceAll(" ", "").getBytes());
record.setData(buff);
request.setRecord(record);
firehoseClient.putRecord(request);
Thread.sleep(2000);
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
Merci ... C'était très utile !! Une dernière question, savez-vous quelle est la manière correcte, non dépréciée, d'écrire cette ligne? AmazonKinesisFirehoseClient firehoseClient = new AmazonKinesisFirehoseClient (informations d'identification); – user2411290
Mise à jour de la réponse. N'oubliez pas * d'accepter * la réponse si cela vous a aidé! –
Merci pour la réponse ... Lorsque j'ajoute le code que vous m'a donné exactement (sauf que je change les informations d'identification), j'obtiens l'erreur suivante: "Type de discordance: impossible de convertir AmazonKinesisFirehose en AmazonKinesisFirehoseClient" – user2411290