2024/02 21

[Service Mesh] Istio 란

Istio 분산 어플리케이션에 계층화되는 오픈소스 Service Mesh. Service Mesh의 개념은 2024.02.23 - 서비스 메쉬(Service Mesh) 란에서 조금 살펴봤었다. Istio는 서비스 코드 변경을 최소화하면서 로드 밸런싱이나 서비스 간 인증, 그리고 모니터링 방법을 제공한다. 또한 확장성을 고려하여 설계되어 다양한 배포 요구 사항을 처리할 수 있다. 동작 방식 Service Mesh를 구현한 만큼 Istio는 DataPlane과 ControlPlane이 존재한다. DataPlance은 서비스 간 통신으로, 서비스 메쉬가 없으면 네트워크는 트래픽을 이해하지 못한다. 또한 트래픽의 종류나 출발/목적지 기반의 어떤 결정도 수행할 수 없다. Envoy 프록시는 클러스터에서 동작할 서..

Kubernetes 2024.02.29

[Jupyter] Import한 외부 모듈 변경점이 반영되지 않는 경우

현상 Jupyter Notebook에서 다음과 같이 외부 모듈을 Import 하여 사용하고 있다. 예시 ) - test.py # test.py def test_func(): return 10 - Notebook import test test.test_func() 그리고 test 모듈에 test_func_v2라는 새로운 함수를 추가한 뒤, Notebook에서 실행하려고 했다. - test.py 수정 # test.py def test_func(): return 10 def test_func_v2(): return 20 - Notebook 수정 import test test.test_func_v2() 하지만 사진과 같이 test 모듈에 test_func_v2라는 함수가 없다는 에러가 발생했다. 원인을 확인하고..

Python 2024.02.28

[Pandas] NamedAgg - 그룹 연산 시 컬럼 이름 지정

개요 Pandas에서 DataFrame에 대해 groupby로 여러 컬럼에 여러 연산을 적용하면 멀티 인덱스 컬럼 형태의 결과를 반환받을 수 있다. df.groupby('a', dropna=False).agg([list, 'count', 'size']) Pandas 공식 문서 https://pandas.pydata.org/docs/user_guide/advanced.html를 보면 멀티 인덱스 컬럼을 사용한 인덱싱 방법을 상세하게 설명하고 있지만, 아무래도 다소 복잡한 것 같아 그룹 연산한 결과를 단일 인덱스 컬럼 형태로 반환받고 싶다. 방법을 적어둔다. named aggregation Pandas에서 agg 함수를 사용할 때 컬럼에 대한 연산 출력 이름을 제어할 수 있도록 named aggregatio..

[Pandas] 여러 컬럼에 대해 NaN을 포함하는 행 찾기

개요 DataFrame에서 특정 결측값을 포함하는 행을 찾을 때는 isnull, isna 함수 등을 사용하여 아래와 같이 필터링할 수 있다. df[df['a'].isnull()] df[df['a'].isna()] 여러 컬럼에서 결측값을 포함하는 행을 찾을 때는 OR 연산자를 이용할 수 있지만, 확인해야하는 컬럼이 많으면 코드가 지저분해진다. 한 줄로 찾을 수 있는 방법을 적어둔다. any / all 2022.10.08 - [Python] any/all - 여러 요소의 참/거짓 확인에서 확인했던 Python의 all, any 함수를 Pandas에서도 제공하고 있다. Pandas에서 all과 any 함수는 Series 또는 DataFrame 축을 따라 요소가 참인지 거짓인지를 판단한다. any 함수는 값이 ..

서비스 메쉬(Service Mesh) 란

Service Mesh 서비스 메쉬(Service Mesh)란 애플리케이션의 서비스 간 통신을 처리하는 소프트웨어 계층이다. 애플리케이션의 여러 부분이 서로 데이터를 공유하는 방식을 제어하여 애플리케이션 수명주기 전반에 걸쳐 데이터의 일관성을 유지하며 통신할 수 있도록 한다. 컨테이너화된 마이크로서비스로 구성되며, 서비스 간 연결, 트래픽을 관리하고 추적 및 보안성을 강화하기 위해 모니터링, 로깅, 추적, 트래픽 제어와 같은 기능을 제공한다. 기능 트래픽 관리 트래픽 라우팅 규칙을 사용하여 서비스 간 트래픽 흐름과 API 호출을 쉽게 제어할 수 있으며, 더 나은 배포 전략을 가능하게 한다. 타임아웃, 재시도와 같은 서비스 수준 속성의 구성을 단순화할 수 있고, Canary 배포나 퍼센트 기반 트래픽 분할..

Kubernetes 2024.02.23

[Pandas] 데이터를 리스트로 그룹화

개요 데이터프레임에 대한 그룹 분석이 필요한데, 그룹 별 데이터 값 유지가 필요한 상황이다. 그래서 그룹 연산을 하면서 컬럼을 리스트 형태로 변환하려고 한다. 방법을 적어둔다. groupby.agg 2022.12.31 - [Python] Pandas - 피봇테이블과 그룹분석 2에서 살펴봤던 사용자 정의 함수로 그룹 분석을 수행하는 agg 함수를 활용하면 된다. df.groupby('a').agg(list) agg 함수에 list를 넘겨주면 아래와 같이 컬럼 별로 데이터가 리스트 형태로 변환되는 것을 확인할 수 있다. 다만 그룹화하는 기준인 a 컬럼에 결측값이 포함되어 있는데, groupby를 수행하면서 해당 데이터가 누락되는 것을 확인할 수 있다. 이런 경우에는 groupby 함수에 dropna 매개변수..

[Pandas] isin - 리스트로 필터링하기

개요 Pandas에서 데이터프레임에 대한 열 필터링을 할 때는 아래와 같은 코드를 사용한다. df[df['column'] == 'value'] 만약 조건이 되는 값이 여럿일 때는 OR 연산자를 사용할 수 있다. df[(df['column'] == 'value1')] | (df['column'] == 'value2')] 하지만 조건이 될 수 있는 값이 보다 많을 때는 OR 연산자를 사용하는 것보다 isin 함수를 사용하는 것이 좋을 것 같다. 사용 방법을 적어둔다. DataFrame.isin isin 함수는 DataFrame의 요소가 값에 포함되어 있는지를 판단한다. 값은 iterable, Series, Dictionary, DataFrame 등으로 지정할 수 있다. 예시 데이터 ) data = {"반" ..

[Pandas] 결측치를 None으로 치환

개요 Pandas로 데이터프레임을 처리하다 보면 아래와 같이 None과 NaN이 혼재되어 있는 경우가 있을 수 있다. 이때 결측치를 None으로 치환하는 방식으로 처리하려고 한다. 내용을 적어둔다. NaN과 None의 차이 먼저 결측치와 None은 다르다는 점을 이해해야 한다. NaN은 float 객체로 벡터화 연산을 허용하는 반면, None은 Python의 NoneType 객체로 벡터화 연산을 허용하지 않는다. print(f'type(None): {type(None)}') print(f'type(np.NaN): {type(np.NaN)}') 또한 NaN은 어떤 값과 비교해도 같지 않다고 판단하기 때문에 두 값을 비교 연산자로 확인해 보면 서로 같지 않다. print(np.NaN == None) # Fa..

[Pandas] explode - 데이터형이 리스트인 컬럼 전개

개요 아래와 같이 데이터형이 리스트인 컬럼을 포함하는 데이터프레임이 있다고 하자. df = pd.DataFrame({'A': [[0, 1, 2], 'foo', [], [3, 4]], 'B': ['a', 'b', 'c','d'], 'C': [['a', 'b', 'c'], np.nan, [], ['d', 'e']], }) 리스트인 컬럼을 여러 행으로 펼쳐서 A와 B가 1 : 1 매핑이 되도록 변경하고 싶다. 방법을 알아본다. DataFrame.explode explode 함수는 리스트와 유사한 각 요소를 행으로 변환한다. DataFrame.explode(column, ignore_index=False) column 매개변수에는 분할할 컬럼을 지정하는데 단일 문자열이나 튜플로 지정할 수 있다. 단, 튜플로 지..

[Hive] 테이블 - SerDe

개요 2024.01.18 - [Hive] 테이블 - 개념 및 유형에 이어서 이 글에서는 Hive가 데이터를 해석하는 방법을 제공하는 SerDe라는 개념에 대해 적어둔다. SerDe SerDe는 Serializer and Deserializer의 약어다. Hive는 FileFormat과 SerDe를 이용해 테이블 행을 읽고 쓴다. 파일을 읽을 때는 FileFormat을 이용한 후, Deserializer를 사용해 파일 데이터를 테이블 형식에 맞는 데이터로 변환한다. 반대로 파일을 쓸 때는 데이터를 Serializer를 이용해 key-value 형태로 변환한 후 FileFormat을 사용하여 파일로 저장한다. Hive 기본 SerDe Hive는 기본적으로 Avro, ORC, RegEx, Thrift, Par..

Hadoop EcoSystem 2024.02.16
1 2 3