본문 바로가기

Programming/JAVA19

kibana 단축 url 만들기 kibana url을 공유할 때면 url이 너무 크고 복잡해서 읽기도 힘들고 어렵다. 그래서 찾아본 결과 아래의 형태의 단축 url을 만들수가 있다. https://test-kibana.com/goto/241148663024b73eb8119de13732df6 방법은 의외로 너무나 간단하다. 일단 kibana를 열고 왼쪽 상단의 menu 중 share 메뉴를 클릭한다. share 버튼을 클릭하면 아래와 같은 창이 생성되는데 여기서 short url 버튼을 enable 시켜주면 kibana 단축 url이 생성된다. 2024. 2. 7.
Elastic search 모든 데이터 가져오기 Elastic search의 경우 각각의 shard에서 데이터들을 저장하고 있고, 검색 시 각 shard 들로부터 데이터를 모은 후 정렬해서 결과를 뿌려주는 방식으로 검색이 제공된다. 이렇게 모은 후 정렬해서 결과를 뿌려주기 때문에 더 큰 사이즈 혹은 더 많은 사이즈의 요청 시 해당 결과를 못 주는 경우가 있다. 다시 간단히 설명하자면, 내가 만약 10000개의 데이터를 Elastic search에 요청하게 되면, 각 shard에서는 10000개씩 데이터를 가져오게 되고, 10000개씩 모든 데이터(예를 들어 shard가 5개라면 50000개)를 정렬 후에 10000를 추린 후 결과를 주게된다. 결과적으로 from, size 등을 통해 es에서 모든 데이터를 가져오려고 시도하게 되면, 10000건 이전까.. 2021. 11. 14.
키바나에 이미지 표시하기. (링크 달기) es에 있는 데이터를 키바나를 통해 많이 확인하곤 한다. 하지만 가끔씩 키바나로 보는 데이터가 불편할 때가 있다. 첫 번째 예로 이미지 데이터의 경우 키바나에서 렌더링 결과를 뿌려주면 데이터 확인이 더 쉬울 것 같은데 해당 기능을 찾지 못해서 매번 이미지 주소 클릭 후에 이미지를 확인하곤 했었다. 두 번째 불편함은 url 주소가 있는 경우 링크를 클릭하면 해당 페이지로 렌더하면 편한데 그게 안되서 복사한 후 브라우저에 붙여서 확인하는 점이 불편했다. 이 포스팅에서는 위 두 가지 불편함을 해소할 수 있는 키바나 기능에 대해 알아보고자 한다. 우선 kibana의 왼쪽 메뉴에 있는 management를 클릭한다. management를 클릭 후 오른쪽 화면에서 변경하고자 하는 index name을 선택 한다. .. 2021. 10. 18.
BloomFilter를 이용해서 데이터 찾기. map-reduce, 혹은 spark를 사용함에 있어서 가장 비용을 많이 차지하는 부분은 map-reduce의 reduce, spark에서는 join 부분일 것이다.join을 할때는 되도록 데이터 셋을 최대한 줄인 후에 join을 하는 게 가장 바람직하다. 만약에 실제 내가 사용할 데이터는 2억건인데 input으로 들어온 데이터가 400억 건이면 400억 건에 대해 일단 2억건으로 줄인 후 join을 진행하는게 맞다. 그럼 400억 건을 2억건으로 어떻게 줄일까?? 물론 2억건을 메모리로 다 올린 후에 for문으로 찾아도 된다. 그러나 지금 설명하려고 하는 내용은 bloomFilter를 활용해서 데이터를 줄이는 방법을 말하려고 한다. 일단 BloomFilter에 대해 간략히 설명하자면, 해시 테이블을 활.. 2018. 10. 30.
hadoop guava 버전 충돌 maven guava 버전을 20.0으로 올리고 map reduce 작업을 돌리는데 자꾸 이전 버전을 타는 문제가 발생했다. 문제는 정확히 아래와 같다. 목표는 입력 url에서 top Domain을 뽑아내기 위함임.top Domain을 뽑기 위해서 guava의 아래의 함수를 사용함. InternetDomainName.from(host_url).topPrivateDomain().toString(); 하지만 위의 함수를 map reduce를 통해 돌릴 경우 InternetDomainName{name="domain"} 이런 식으로 객체가 리턴이 됨. 아무래도 hadoop의 lib와 dependency lib가 서로 충돌이 일어나서 dependency lib를 못 타는 것 같았다. 이를 해결 하기 위해 mave.. 2018. 5. 28.
maven에 custom jar를 집어넣어 보자. IntelliJ 환경에서 build를 하면 별로 고민을 안해도 되지만 리눅스 환경에서 maven build를 해야되는 경우 custom jar 파일을 pom.xml 파일에 추가시켜 줘야 maven build시 인식이 된다. 대략적으로 설명을 하자면, 개인 로컬 repository를 만들고 해당 repository를 pom.xml에 등록한다.그 후 dependency를 추가해 준다.이렇게 하면 custom jar 파일을 pom.xml에서 인식할 수 있고 쉽게 maven build를 실행할 수 있다. 개인 로컬 repository는 아래처럼 pom.xml에 추가하자. localrepository file://${basedir}/repo url 항목을 보면 jar 라이브러리 파일 경로를 입력하는 것을 확인해 .. 2018. 3. 6.
[INTELLIJ] Jar 파일 만들기 IntelliJ에서 maven 빌드를 하려고 하는데, 관련 메뉴를 도무지 찾지 못했다. 예전 eclipse 같은 경우는 maven install 이라고 따로 팝업 메뉴가 존재했었는데, 그런 것도 없고 그냥 build를 하면 jar 파일 생성은 안되고.. 찾아본 결과 Build artifacts를 하면 된다는 글을 발견.. 실행하려는 찰나.. 어라??? 메뉴가 enable 설정이 되어 있지 않다!!또 열씸히 구글링...아하.. artifacts를 빌드하려면 artifacts를 만들어 주어야 한다..artifacts를 만들기 전에.. 도대체 artifacts가 무엇인지부터 찾아봤다.일반적으로 소프트웨어에서의 artifacts는 개발 프로세스에 의해 생성된 무언가를 나타낸다고 한다. 즉 실행파일이나 중간 산출.. 2017. 11. 13.
Runnable 인터페이스와 Thread Class 자바에서 쓰레드를 만드는 방법은 크게 두 가지로 볼 수 있다. 1. Runnable 인터페이스를 구현하는 방법 과 2. Thread 클래스를 상속 받는 방법이다. Thread 클래스 자체에서 Runnable 인터페이스를 구현하고 있기 때문에 두 가지 방식 중 어떤 것을 써도 무방하다. 하지만 대부분 Runnable 인터페이스를 사용한다. 왜?? JAVA에서는 C++과는 다르게 다중 상속이 안되기 때문이다. Thread Class를 상속 받을 경우 해당 클래스는 이제 더 이상 상속을 받을 수 있는 조건이 안되지만, Runnable 인터페이스를 상속 받을 경우엔 다른 인터페이스도 상속이 가능하다. 아래는 Runnable 인터페이스를 상속 받는 코드와 Thread 클래스를 상속 받는 코드이다. 2013. 6. 5.
String을 InputStream으로 바꾸는 방법. 간혹 InputStream을 파라미터로 받는 함수가 있다. 파라미터로 보내기 위해 String buffer를 file에 쓴 후 FileStream으로 읽기엔 너무나 비효율적이고... 아래는 String을 InputStream으로 변환하는 코드이다. 2013. 5. 23.