우선 duckdb 에서 s3 는 기본지원이 되는데, hdfs 는 기본지원이 안된다.jupyter 에서 duckdb 를 이용해서 간단한 필터링과 정렬을 sql 기반으로 다룰수 있어서 유용한데 hdfs 의 파일을 분석할때 고민이 되는데, 이때는 pyarrow 를 이용하여 연동하면 대부분 해결된다. (orc 포맷도 pyarrow 로 해결가능함) 해결방법당연하지만 pyarrow 와 duckdb 라이브러리는 깔려있어야한다.그리고 여기서는 kerberos 인증을 keytab파일을 통해 hadoop 연결을 한다고 가정하겠다.우선 다음과 같이 keytab 인증을 한다고 가정한다. 주피터에서는 이런 명령을 실행할때 맨앞에 ! 를 넣고 라인에서 실행하는것도 가능하다.kinit -kt /home1/user/myuser.ke..
python 3.10 환경에 분석을 위한 다양한 라이브러리를 구성하다보니 호환성 문제로 아래와 같은 문제가 밸생했다. 1. 오류내용크게보면 여러 라이브러리에서 아래와 같은 문제가 발생했다. 사실 처음에는 다양한 라이브러리를 한번에 설치해서 원인을 찾기 힘들었는데 하나식 역추적하며 결국 해결방법을 찾았다. 1.1 numpy 버전 문제 오류A module that was compiled using NumPy 1.x cannot be run inNumPy 2.0.2 as it may crash. To support both 1.x and 2.xversions of NumPy, modules must be compiled with NumPy 2.0.Some module may need to rebuild ins..
ipython 의 매직명령어 표현이 아닌 python 코드로 사용하는 방법이 필요한 경우를 알려주고자 한다.참고로 %sql 표현으로 사용가능한 방법은 아래 링크에 정리해 두었다.https://ngela.tistory.com/170 python 코드로 duckdb 에서 읽기minio 기반의 s3 환경에 접근할때는 아래와 같이 ENTRYPOINT 변경이 필요하다. 그 이외에는 특별히 다를게 없다, 아래와 같이 정보를 set 명령을 통해 선언하는게 가능하다.# duckdb 와 연계하여 실행import duckdb# duckdb connectionconn = duckdb.connect()# Set the necessary S3 configurationsconn.execute("SET s3_region = 'us..
주피터랩에서 minio 기반의 s3 데이터의 엑셀파일을 연동할때, IPython 매직명령어 기반으로 %sql 형태로 표현해서 연동하려고 했는데 공식 문서를 확인해보면 SECRET 을 생성후 연결한다고 되어있는데, 문제는 minio 에서 연결하는 예제가 잘 안되어 있어서 실패가 났는데, minio 기반의 s3 를 접근하기위한 예제를 알려주고자 한다. https://duckdb.org/docs/extensions/httpfs/s3api.html S3 API SupportThe httpfs extension supports reading/writing/globbing files on object storage servers using the S3 API. S3 offers a standard API to r..
Helm 을 통해 삭제를 했는데, pvc 가 계속 삭제안되고 있다. 그래서 kubectl delete pvc 명령을 입력해도 삭제가 안된다 -_-$ kubectl get pvc | grep sample sample-decrypt Terminating haha.hoho.sample-decrypt.4b123674-tb2f-55ab-c03f-bdcb2a794e3 1Gi ROX rbd-hdd 8d... 해결방법정확한 이유는 모르겠지만, 아래와 같이 pvc 를 edit 하는 화면으로 넘어간후$ kubectl edit pvc 아래와 같은 내용이 있는지 확인후, 삭제한후 저장해준다...
기본적으로 configMap 을 통한 파일을 등록하는건 1depth 만 지원된다.airflow 의 plugin 파일을 helm chart 폴더에서 관리하고자 했는데 안타갑게도 서브디렉토리는 사실상 필수였다.가장 쉽게 생각할 수 있는 접근은 git clone 을 해서 특정 리파지토리의 브랜치를 다운로드 받아서 처리하는것인데로컬에서 쉽게 배포하고 테스트 할 수 있는걸 원했다. 그래서 삽질의 삽질을 하다가 약간의 트릭으로 할 긴했다. 해결의 실마리?configMap 을 정의할때 다음과 같이 key, path 를 직접 정의하면 subdir 을 지정하는게 가능하다.그러면 local 폴더의 경로에서 / 를 다른문자열로 치환하고, 이를 1depth 파일처럼 관리하고, 다시 이걸 key, path 로 맵핑하면 된다는 ..
airflow 2.x 부터 롤기반으로 권한관리가 일어나고, 이에 따른 퍼미션 권한이 존재한다.그런데 이게 어떤걸 의미하는건지 잘 정리가 안되서 간단히 정리하고자한다. 1. can read on DAGsDAG 를 볼 수 있는지 여부를 의미한다.리스트에 나와서 어떤 DAGS 가 있는지 조회된다의 의미일뿐 실행이나 해제같은 동작은 안된다. (진짜 목록에만 보일뿐 할 수 있는게 없음) DAG 별로 따로 수동으로 관리하고, 기본적으로 조회가 안되게 하려면 이 옵션을 제거해주도록 하자.그러면 아래와 같이 기본적으로는 DAGS 의 목록이 조회되지 않는다.특정 DAG 만 조회 가능하게 하려면 "can read on DAG: " 형태로 부여하는것도 가능하다. 2. can edit on DAGsDAG 의 목록이 보이고,..
helm template 명령어로 확인하려고 했는데 아래와 같이 알수 없는 오류가 발생했다.결론부터 말하면, range 하위에 include 를 썼는데 이때 영향을 받았던 문제였다.Error: render error in "...deployment.yaml": template: ...deployment.yaml:81:16: executing "...deployment.yaml" at : error calling include: template: sample/templates/_helpers.tpl:166:8: executing "sample.kerberos" at : error calling include: template: sample/templates/_helpers.tpl:100:25: execu..