簡體   English   中英

如何將數據從服務器放到Kinesis Stream

[英]How to put data from server to Kinesis Stream

我是Kinesis的新手。 讀出我發現的文檔,我可以創建Kinesis Stream來從Producer獲取數據。 然后使用KCL將從Stream讀取此數據以進一步處理。 我理解如何通過實現IRecordProcessor來編寫KCL應用程序。

然而,關於如何將數據放在Kinesis流上的第一階段對我來說仍然不清楚。 我們是否有一些確實需要實現的AWS API。

場景:我有一台服務器,可以從文件夾中的各種來源連續獲取數據。 每個文件夾都包含文本文件,其行包含用於更快分析工作的必需屬性。 我必須將所有這些數據推送到Kinesis Stream。

我需要一些代碼,如下面的類putData方法將用於Kinesis流中

public class Put {

    AmazonKinesisClient kinesisClient;

    Put()
    {
        String accessKey = "My Access Key here" ;
        String secretKey = "My Secret Key here" ;
        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
       kinesisClient = new AmazonKinesisClient(credentials);
       kinesisClient.setEndpoint("kinesis.us-east-1.amazonaws.com", "kinesis", "us-east-1");
        System.out.println("starting the Put Application");
    }

    public void putData(String fileContent,String session) throws Exception
    {
         final String myStreamName = "ClickStream";

            PutRecordRequest putRecordRequest = new PutRecordRequest();
            putRecordRequest.setStreamName(myStreamName);
            String putData = fileContent;
            putRecordRequest.setData(ByteBuffer.wrap(putData.getBytes()));
            putRecordRequest.setPartitionKey("session"+session);
            PutRecordResult putRecordResult = kinesisClient.putRecord(putRecordRequest);
            System.out.println("Successfully putrecord, partition key : " + putRecordRequest.getPartitionKey()
                    + ", ShardID : " + putRecordResult.getShardId());
            System.out.println(fileContent);
            System.out.println("Sequence Number: "+putRecordResult.getSequenceNumber());

            System.out.println("Data has been PUT successfully");


    }
}

但是從服務器讀取源文件夾中的文件,然后我應該用什么設計調用putData來獲取Kinesis流上的記錄。 我是否需要無限循環並讀取所有文件然后執行此操作或某些框架,這將更好地執行此操作,同時考慮容錯,單點故障全部。 任何幫助將不勝感激。

簡而言之:我需要一種更好的技術將定期生成的數據放到Kinesis Stream中,數據會定期生成到服務器。 謝謝

如果要拖尾一些文件,請嘗試Fluentd。 http://www.fluentd.org/

亞馬遜Kinesis有一個非常好的插件。 https://github.com/awslabs/aws-fluent-plugin-kinesis

所以看來你已經在使用... http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesis/AmazonKinesisClient.html

您想要的具體方法如下。

您需要流名稱,記錄和流密鑰。 http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesis/model/PutRecordResult.html

但似乎你有這一切?

然后,您需要一個運行程序,始終跟蹤您的服務器日志文件,並且當有新行時,它將推送它。

但是您的數據只會持續24小時。 然后,您需要一個工作程序來使用數據並將其放在其他AWS資源中。

您可以使用Amazon kinesis代理監視一組文件,並且可以將數據流式傳輸到kinesis。

http://docs.aws.amazon.com/streams/latest/dev/writing-with-agents.html

如果您正在嘗試提取日志文件,請嘗試Fluentd。 Fluentd可以連續拖尾日志文件,並進行數據緩沖,加密,壓縮和重試。

Fluentd的Kinesis插件由Amazon Web Services本身開發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM