使用createDirectStream实现精确一次的读取,kafka的offset保存到Zookeeper中。
1. kafka参数
auto.offset.reset :smallest, largest
默认为”largest”,此配置参数表示当此groupId下的消费者,在ZK中没有offset值时(比如新的groupId,或者是zk数据被清空),consumer应该从哪个offset开始消费.largest表示当前接收最大的offset(即最新消息),smallest表示最小offset,即从topic的开始位置消费所有消息.
注意,如果当前SparkStreaming程序正在运行,这个时候如果在ZK客户端中删除该offset是没用的,接下来还是会接着之前的offset进行消费。
调试程序的过程中,注意重新运行前是否应该清除ZK上的数据,避免错误的offset影响到消费。
2.关于parquet文件
由于我是需要解析好了数据存入hdfs,使用hive能够查询结果。
步骤如下:
1 hive中创建外部表,加入partition:
create external table table_name(id STRING) PARTITIONED BY (partition_name string) STORED