txt文件导入kafka

txt文件导入kafka

shell脚本导入

#!/bin/sh
## 参数定义
dt=`date +"%Y%m%d" -d "-1 days"`
outpath=/home/etl/test/test.txt   
brokerlist='kakfa卡集群地址'

echo $dt $outpath $brokerlist
## 判断文件大小,如果大于0,则加载文件,写入kafka
## 注意 结尾的 | > out.txt要加上,否则会出现很多奇怪的大于号
fileSize=`du -b ${outpath} | awk '{print $1}'`
if [ $fileSize -gt 0 ] 

then
    cat ${outpath} | /usr/local/kafka/bin/kafka-console-producer.sh --broker-list ${brokerlist} --sync --topic health_doc_tag_history_test | > out.txt
fi

java代码导入

public class TextProducerTest {
    private static final  String  server= "";
    private static final  String topic = "demo";
    public static void main(String[] args) throws IOException {
        Properties prop = new Properties();
        prop.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
        prop.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
        prop.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,server);

        KafkaProducer<String, String> producer = new KafkaProducer<>(prop);
        File file = new File("/home/etl/test/test.txt");
        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
        String line = null;
        while ((line =bufferedReader.readLine()) != null ){
            ProducerRecord<String,String> producerRecord = new ProducerRecord(topic,line);
            producer.send(producerRecord);
        }
        producer.close();
    }
}
### Kafka 数据导入与导出方法 #### 使用 Kafka Connect 进行数据传输 Kafka Connect 是用于导入和导出数据的强大工具[^1]。此工具通过运行连接器实现与其他系统的交互,支持多种外部系统之间的数据迁移而无需编写额外的集成代码。 对于简单场景下的文件处理,可以利用内置的 `FileStreamConnector` 来完成基本的任务: - **从文件导入Kafka 主题** ```bash bin/connect-standalone.sh config/connect-file-source.properties config/file-source.properties ``` 配置文件示例 (`file-source.properties`) 如下所示: ```properties name=file-source-connector connector.class=org.apache.kafka.connect.file.FileStreamSourceConnector tasks.max=1 file=/path/to/input.txt topic=my-topic-name ``` 这段命令会启动一个独立模式下的 Kafka Connect 实例,并指定要监控的输入文件路径以及目标 Kafka 主题名称。 - **从 Kafka 主题导出到文件** 同样地,可以通过如下方式设置导出过程: ```bash bin/connect-standalone.sh config/connect-file-sink.properties config/file-sink.properties ``` 对应的配置文件 (`file-sink.properties`) 可能看起来像这样: ```properties name=file-sink-connector connector.class=org.apache.kafka.connect.file.FileStreamSinkConnector tasks.max=1 file=/path/to/output.txt topics=my-topic-name ``` 这将把来自特定 Kafka 主题的消息记录追加写入本地磁盘上的文本文件中。 #### SQL 方式的数据导出实例 除了上述基于文件的操作外,在某些情况下还可以采用SQL语句的形式来进行更复杂的数据操作,比如直接向HDFS存储系统导出CSV格式的结果集[^2]: ```sql SELECT * FROM example_table INTO OUTFILE "/path/to/exported_data.csv" FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; ``` 请注意该语法适用于MySQL等关系型数据库环境;如果目的是将Kafka消息存放到Greenplum这样的分布式分析型数据库,则需借助专门设计好的插件或库函数来执行相应功能[^5]。 为了查询已保存于Greenplum内的Kafka消费进度信息,可通过下面这条SQL指令获取前几条记录作为样例展示: ```sql select * from kafka_test.gpkafka_data_from_kafka_12ead185469b45cc8e5be3c9f0ea14a2 limit 10; ``` 以上就是关于如何使用不同技术和框架配合Kafka进行高效便捷的数据交换的一些介绍和示范案例[^3][^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值