da-analysis / asac_5_dataanalysis

ASAC 5기 Data Analysis Project (google map recommendation system)
0 stars 1 forks source link

구글 colab -> 데이터브릭스 unity catalog (delta sharing) #37

Open syleeie2310 opened 1 month ago

syleeie2310 commented 1 month ago

https://medium.com/geekculture/delta-sharing-bc9f1939d08b https://docs.gcp.databricks.com/en/dev-tools/databricks-connect/python/index.html

구글 드라이브에 데이터 올려서 하거나 또는 델타 쉐어링 통해서 colab에서 접근하거나

syleeie2310 commented 1 month ago

https://github.com/da-analysis/asac_4_dataanalysis/blob/main/2.Feature%20Engineering/0420_text_embedding_v2.py

syleeie2310 commented 1 month ago

아래 코드 참고. https://github.com/da-analysis/asac_4_dataanalysis/blob/main/4.%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85/%E1%84%8E%E1%85%AE%E1%84%8E%E1%85%A5%E1%86%AB%E1%84%89%E1%85%B5%E1%84%89%E1%85%B3%E1%84%90%E1%85%A6%E1%86%B7.py

syleeie2310 commented 1 month ago

colab > databricks jdbc sql 로 읽는 방법

-> token은 제가 만든 거니깐 본인 걸로 교체해주세요. -> sql warehouse 를 부팅한 다음에 사용 가능합니다. 부팅하지 않은 상태로 실행하면 부팅 이후에 쿼리가 실행되요. 부팅하는데는 최소 5분 정도 걸려요. (https://tacademykr-asacanalysis.cloud.databricks.com/compute/sql-warehouses?o=3001521127938963&page=1&page_size=20) -> sql query 그대로 읽으면 데이터가 엄청 커서, 아래처럼 쿼리 히스토리 보면 용량이 크긴 하네요.

image

-> 데이터가 보니깐 155기가라서 그냥 판다스로 바꾸면 터지네요. (쿼리로 확인해보니깐 16분 걸려서 가져옵니다. 155기가 네요, describe detail sentence_bert_emb_default 하면 나옴) -> jdbc 통해서 가져올 때 데이터를 colab에서 chunk 로 잘라서 loop 읽어서 별도 공간에 저장해두고 사용하는 방법이 좋을 듯 해요.

syleeie2310 commented 1 month ago

그리고 unity catalog (sentence_bert_emb_default) 에서 gmap_id 를 zorder 함수 사용하면 읽을 때 조금 더 빠를거에요

zorder 는 아래 참고하시면 되는데, 데이터브릭스에서 데이터 빠르게 읽을 때 쓰는 optimize 방식이에요 (db에 index랑 다르지만 사용 관점에선 비슷한 기능) https://docs.databricks.com/en/delta/data-skipping.html

-> 아래 형태로 쿼리로 1번만 실행하면 됩니다. OPTIMIZE sentence_bert_emb_default ZORDER BY (gmap_id)