- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一些数据从 API(谷歌股票/金融 API)写入我的 AWS Firehose 流。我已经在 Eclipse 上下载并安装了 AWS 插件,在 AWS 上设置了我的 Firehose 流,一切似乎都设置正确。不过,我遇到了一些问题。以下行似乎已被弃用...我尝试了 Amazon SDK 的不同变体,但我似乎无法获得正确的代码。
AmazonKinesisFirehoseClient firehoseClient = new AmazonKinesisFirehoseClient(credentials);
接下来,我遇到了以下一些错误。具体错误是“对于 PutRecordRequest 类型未定义方法 setRecord(Record)”,即使我直接从 Amazon 的 API 引用中获取它。
request.setRecord(record);
firehoseClient.putRecord(request);
上面第二行也出现错误:“AmazonKinesisFirehoseClient 类型中的方法 putRecord(com.amazonaws.services.kinesisfirehose.model.PutRecordRequest) 不适用于参数 (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();
}
}
}
}
最佳答案
问题是您包含了 Kinesis 中的一些类,而不是 Kinesis Firehose、Java 包。例如,您使用过:
import com.amazonaws.services.kinesis.model.PutRecordRequest;
然而,你应该使用:
import com.amazonaws.services.kinesisfirehose.model.PutRecordRequest;
Kinesis、Kinesis Firehose 和 Kinesis Analytics 是不同的服务,尽管它们属于 AWS 上的流媒体服务的同一个范畴。因此,它们在 Java SDK 中具有不同的包命名空间。如果从官方文档here开始,您将找到正确的 Java SDK 引用 here .
编辑:回答您的其他问题:是的,不推荐使用以下内容:
AmazonKinesisFirehoseClient firehoseClient = new AmazonKinesisFirehoseClient(credentials);
您应该使用以下内容:
AmazonKinesisFirehoseClient firehoseClient = AmazonKinesisFirehoseClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();
引用官方文档here了解如何正确初始化 AmazonKinesisFirehoseClient。
关于java - java 程序写入 Kinesis Firehose 流时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43221191/
我正在将 Java API 用于 Kinesis Firehose,并在可能的情况下利用 putRecordBatch()。但是,在我的应用程序中,我偶尔只发送一条记录,无法等待更多记录或将其缓存在内
我正在处理一个添加到 S3 的 XML 文件并将结果写入到 firehose,并将结果存储在同一个 S3 存储桶中,但目标文件名必须采用特定格式。我检查了文档,但看不到任何设置文件名格式的方法。我能找
按照此 guide 并创建 Kinesis Firehose 流。 我已按照指南进行操作,当我开始创建订阅过滤器(步骤 12)时,我在尝试发送到 S3 时遇到此错误: 调用 PutSubscripti
AWS Firehose已于今天发布。我正在研究它,并试图弄清楚如何使用AWS CLI将数据放入流中。我有一个简单的JSON有效负载和对应的Redshift表,其中的列映射到JSON属性。我尝试了各种
我正在尝试使用 Firehose API (JS)我不断收到以下错误: "InvalidArgumentException: Firehose is unable to assume role arn
我试图了解是否可以使用 kinesis firehose 将数据索引到 elasticsearch 到多个索引,方法是将索引名称和类型传递给它(类似于 elasticsaerch bulk api)
是否可以异步向 AWS 发送请求?在真正意义上。 如果我尝试以某种方式发送消息,则消息未送达: $firehose = new FirehoseClient($args); /
我将 AWS Kinesis Firehose 与自定义数据转换结合使用。 Lambda 用 Python 3.6 编写并返回如下所示的字符串: { "records": [
我有一个应用程序,我想构建一个包含 2-3 种组合事件类型的“最近事件”/firehose feed,例如帖子、评论和帖子点赞,以及其他内容 + 稍后可能会更多。我假设这是通过查询添加到数据库中的最后
我遇到了这个最可怕的场景,我想读取 kinesis firehose 在我们的 S3 上创建的文件。 Kinesis firehose 创建的文件并不是每个 json 对象都在一个新行上,而是一个 j
这个 11 年级的问题自 2010 年以来一直困扰着我,即使在大学毕业后我仍然无法弄清楚/找到解决方案。 Problem Description There is a very unusual str
我有以下 lambda 函数作为 Kinesis firehose 记录转换的一部分,它将 msgpack 记录从 kinesis 输入流转换为 json。 Lambda 运行时:python 3.6
我有一个用例,我必须每秒从不同的生产者收集数千条记录,并使用 AWS firehose 将它们推送到 Elasticsearch 。我还在 firehose 上使用数据转换 lambda,它在将记录传
所以我们有 100 种不同类型的消息进入我们的 Kinesis 流。我们只想保存 4 种类型。我知道 Kinesis 可以转换消息,但它也可以过滤吗?这是怎么做到的? 最佳答案 过滤只是一种转换,您可
账户 A 是我在其中创建 Kinesis 流的应用程序账户,我想在账户 B 中创建 Firehose 以从账户 A Kinesis 流中读取。这可能吗?我尝试按照 ( https://medium.c
将记录写入到配置为 S3 作为输出目标的 AWS Firehose 时,此数据在写入 S3 之前缓冲了多长时间?或者是否有最小尺寸阈值? 例如,我正在执行以下操作来添加记录: aws cli: aws
我正在为 S3 设置 Kinesis Firehose 传输流,我注意到您可以设置自定义 KMS key 以用于加密 S3 上的文件。 但是,如果 S3 存储桶已启用 KMS 加密,则无论如何都会对文
我已经阅读了很多关于向 firehose 添加换行符的类似问题,但它们都围绕着将换行符添加到源代码中。问题是我无权访问源,第三方正在将数据传输到我们的 Kinesis 实例,我无法将 '\n' 添加到
我正在尝试将一些数据从 API(谷歌股票/金融 API)写入我的 AWS Firehose 流。我已经在 Eclipse 上下载并安装了 AWS 插件,在 AWS 上设置了我的 Firehose 流,
您好,我正在尝试将 kinesis firehose 与 S3 结合使用。我试着阅读那些 s3 文件。我正在使用 GO 阅读它。 但是,我无法解析 JSON,因为值只是在没有任何分隔符的情况下附加。
我是一名优秀的程序员,十分优秀!