작성
·
286
·
수정됨
0
안녕하세요! 강의 잘 보고 있습니다.
topic에 입력시,
오타가 있는 스크립트를 입력했는데,
해당 오타가 있는 레코드가 지속적으로 남아 있더군요,
또한 이로 인해 jsonParser 오류가 발생해서,
topic을 삭제할까 하다가, 윈도우 기반에서는 오류가 발생할 수 있다고 (https://www.inflearn.com/questions/644825)
하여,
topic의 오타가 있는 레코드를 삭제하고자 합니다.
혹시 방법이 있을까요??
답변 2
0
레코드 삭제 기능을 통해
토픽에 담긴 레코드(오타)를 제거하였습니다 : ]
레코드 삭제 순서는 다음과 같습니다.
먼저 xxxx.json 파일을 생성합니다.
예시로는 delete-topic.json을 생성하였습니다.
delete-topic.json 에 작성합니다. 파티션 1개만 생성했기때문에 파티션 번호는 0번입니다.
특정 레코드를 삭제할수는 없어서 가장오래된 데이터부터 특정 지점까지만 삭제할 수있습니다
{
"partitions": [
{
"topic": "[삭제할 레코드가 있는 토픽명]",
"partition": [삭제할 레코드가 있는 파티션 번호],
"offset": [처음부터 삭제할 offset 번호]
}
],
"version": 1
}
3. cmd창에서 해당 json을 읽어 삭제를 실행합니다.
\kafka_2.13-3.6.1>.\bin\windows\kafka-delete-records.bat --bootstrap-server localhost:9092 --offset-json-file delete-topic.json
삭제 완료시 아래와 같이 출력됩니다.
다만 offset을 넣은 데이터양보다 크게 할시,
offset_out_of_range 에러가 발생합니다
참조 : https://velog.io/@jwpark06/Kafka-%EC%BB%A4%EB%A7%A8%EB%93%9C-%EB%9D%BC%EC%9D%B8-%EB%AA%85%EB%A0%B9%EC%96%B4
참조2: https://hardenkim.tistory.com/78
0
안녕하세요, 인프런 AI 인턴입니다. 아이티엔제이ITNJ님.
질문 주신 내용과 관련하여, 카프카에서 특정 레코드를 삭제하는 것은 표준적인 카프카 사용 방법으로는 제공되지 않습니다. 카프카는 불변의 로그 시스템을 따르기 때문에 일반적으로는 개별 레코드를 삭제하는 대신, 특정 시간이 지나면 레코드를 만료시키거나 전체 토픽을 삭제하는 방법을 사용합니다.
윈도우 환경에서 토픽을 삭제할 때 발생할 수 있는 오류에 대한 내용은 아래 링크에서 확인하실 수 있습니다:
이 글에서는 윈도우 환경에서 토픽 삭제 시 오류가 발생할 수 있기 때문에, Temp 디렉토리의 내용을 직접 삭제하는 것이 나을 수 있음을 언급합니다. 다만 이러한 작업은 카프카 자체가 아닌, 윈도우 운영체제와 파일 시스템의 관리와 관련이 있으므로, 주의해서 진행해야 합니다.
특정 레코드를 삭제하는 대신, 로그의 보관 기간(
retention period)
을 설정하여 해당 레코드가 포함된 로그 세그먼트가 만료되도록 할 수 있습니다. 또는 방법이 없다면, 문제가 되는 토픽을 전체적으로 삭제하고 다시 생성하는 것이 한 가지 방법이 될 수 있습니다.
그러나 공유해드린 링크 외에도 카프카에서 개별 레코드를 처리하는 방법에 관한 직접적인 정보가 필요하시다면, 해당 주제에 전문화된 커뮤니티나 문서를 추가로 참고하시는 것을 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.