我想使用 Amazon Kinesis Producer Library(KPL)来写入数据记录并将其放入 Amazon Kinesis 数据流。
解决方法
先决条件:
- 一个正在运行的 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例
- 一个 AWS Identity and Access Management(IAM)角色已附加到您的实例
- KinesisFullAccess 策略已附加到实例的 IAM 角色
要使用 KPL 将记录放入 Kinesis 数据流,请完成以下步骤:
-
连接到您的 Linux 实例。
-
安装最新版本的 OpenJDK 8 开发者包:
sudo yum install java-1.8.0-openjdk-devel
-
确认 Java 已安装:
java -version
输出结果类似于以下示例:
java version "1.7.0_181"OpenJDK Runtime Environment (amzn-2.6.14.8.80.amzn1-x86_64 u181-b00)
OpenJDK 64-Bit Server VM (build 24.181-b00, mixed mode)
-
运行以下命令将 Java 1.8 设置为默认 java 和 javac 提供商:
sudo /usr/sbin/alternatives --config java sudo /usr/sbin/alternatives --config javac
-
添加一个包含 Apache Maven 软件包的存储库:
sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
-
设置 Maven 软件包的版本号:
sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
-
使用 yum 安装 Maven:
sudo yum install -y apache-maven
要确认 Maven 已正确安装,请运行以下命令:
mvn -version
输出结果类似于以下示例:
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T07:58:13Z)Maven home: /usr/share/apache-maven
Java version: 1.7.0_181, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.181.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.14.33-51.37.amzn1.x86_64", arch: "amd64", family: "unix"
-
安装 git,然后从 GitHub 网站下载 KPL:
sudo yum install gitgit clone https://github.com/awslabs/amazon-kinesis-producer
-
打开 amazon-kinesis-producer/java/amazon-kinesis-producer-sample/ 目录,然后列出文件:
`cd amazon-kinesis-producer/java/amazon-kinesis-producer-sample/ls`
`default_config.properties pom.xml README.md src target`
-
运行与以下类似的命令来创建 Kinesis 数据流:
aws kinesis create-stream --stream-name kinesis-kpl-demo --shard-count 2
- 运行 list-streams,确认数据流已创建:
aws kinesis list-streams
- 打开 GitHub 存储库上的 SampleProducer.java 文件,然后修改以下字段:
对于 public static final String STREAM_NAME_DEFAULT,请输入您之前创建的 Kinesis 数据流的名称。
对于 public static final String REGION_DEFAULT,请输入您正在使用的 AWS 区域。
示例:
cd src/com/amazonaws/services/kinesis/producer/samplevi SampleProducerConfig.java
public static final String STREAM_NAME_DEFAULT = "kinesis-kpl-demo";
public static final String REGION_DEFAULT = "us-east-1";
- 要允许 Maven 下载该目录的所有依赖项,请在 amazon-kinesis-producer-sample 目录中运行以下命令:
mvn clean package
- 要运行创建者并将数据发送到 Kinesis 数据流,请在 amazon-kinesis-producer-sample 目录中运行以下命令:
mvn exec:java -Dexec.mainClass="com.amazonaws.services.kinesis.producer.sample.SampleProducer"
- 要验证发送到数据流的记录数量,请查看 Kinesis 控制台监控选项卡中的**传入数据(数量)**图表。
**注意:**此处的记录数量可能低于发送到数据流的记录数量。之所以记录数量较少,是因为 KPL 使用了聚合。
相关信息
Writing to your Kinesis Data Stream using the KPL
Resharding, scaling, and parallel processing