본문 바로가기
반응형

전체 카테고리147

[Hive] managed table , external table 차이 managed table데이터가 hive.metastore.warehouse.dir 에 저장된다.위의 경로는 CREATE TABLE시 LOCATION 구문으로 변경할 수도 있다.테이블을 DROP하면 데이터도 사라진다.테이블의 라이프사이클을 관리하거나 임시테이블을 만들 때 사용한다.transaction, view 등이 가능하다. (external은 불가) external table원본이 저장된 데이터에 접근할 수 있다. (ex. S3, 다른 HDFS 등) hive입장에서는 메타데이터만 관리한다고 여겨진다.테이블을 DROP해도 데이터는 남아있다.파일이 이미 있거나 원격 위치에 있는 경우 사용한다. -> 1차테이블로 많이 사용하는 듯 -> msck repair 필요 (metadata 갱신) 참고Managed .. 2021. 3. 9.
[Hive] export, import Export hive table의 메타데이터와 데이터를 추출하는 명령어이다. hdfs 경로에 저장이 된다. export table import_tbl_2 to '/user/public/sunnytest/exporttest'; Import export한 테이블을 import 명령어로 가져올 수 있다. 대상 테이블이 이미 있고 파티션이 없는 경우, 데이터가 비워져 있어야 한다. 대상 테이블이 이미 있고 파티션이 있는 경우, 가져올 파티션에 데이터가 비워져 있어야 한다. import table imported_tbl from '/user/public/sunnytest/exporttest'; export한 디렉토리와 파일들은 import를 수행할 클러스터로 복사해야 할 것이다. distcp 같은 툴로 복사하거나.. 2021. 3. 9.
[python] 배열 복사하기 arr = [ [1,1,1], [2,2,2] ] temp = arr[1] print(arr[1]) # [2,2,2] temp[0] = 3 print(arr[1]) # [3,2,2] arr 배열값을 temp 배열에 할당했다. 그러고 나서 temp 배열값을 변경하였다. 그러면 temp 배열만 바뀔 줄 알았는데 arr 배열값도 같이 바뀐다. c++ 에선 arr 배열값이 안바뀔텐데 말이다. arr 배열값을 그대로 유지하려면? arr = [ [1,1,1], [2,2,2] ] temp = [] for i in arr[1]: temp.append(i) print(arr[1]) # [2,2,2] temp[0] = 3 print(arr[1]) # [2,2,2] for 문을 사용하여 temp 배열에 arr 값을 하나씩 할.. 2021. 2. 23.
[Airflow] task에서 return한 값 사용하기 (XCom) 이전 글에서 task 1개로 이루어진 DAG를 실행해봤다. 이 task는 extract라는 파이썬 함수를 호출한다. 여기에다가 task 1개를 추가해보자. 이 task는 transform이라는 파이썬 함수를 호출한다. transform은 extract함수가 return한 값을 처리하는 함수이다. 이런 경우, Airflow DAG를 어떻게 짜야할까? Airflow XCom를 사용하면 된다. Task간 데이터를 주고 받을때 사용됨 Airflow 웹UI에서 task instance 로그에서도 XCom으로 어떤 데이터를 주고받는지 확인 가능 python task의 경우, python_callable로 호출한 함수에서 return하는 값이 있을 경우 자동으로 xcom_push() 가 실행됨. 즉 return 값이.. 2021. 2. 19.
[Airflow] python 함수 호출시 argument 넘기기 간단한 Airflow DAG를 살펴보자. extract라는 파이썬 함수를 호출하는 task 1개로 이루어져 있다. extract 함수를 호출할 때 argument를 같이 전달해야 한다. 그러면 Airflow DAG에서 python 함수를 호출할 때 어떻게 argument를 전달할까? 1) context 사용하는 방법 DAG를 먼저 작성하자. (/var/lib/airflow/dags/params_test.py) ############## #DAG Setting ############## from airflow import DAG from airflow.operators import PythonOperator from datetime import datetime dag = DAG( dag_id = "sunn.. 2021. 2. 19.
[python] for문에서 index 값 수정하기 for i in range(1,n+1): if arr[x[i]][y[i]] == 0 : arr[x[i]][y[i]] = i #해당 자리에 아무도 없는 경우 else: if age[arr[x[i]][y[i]]] < age[i] : age[arr[x[i]][y[i]]] = age[i] #나중에 들어온 사람 나이가 더 많은 경우 remove(i) i -= 1 #i번째 사람 다시 한 번 확인 i가 3일때 else문에 들어왔다고 해보자. 그러면 i -= 1을 통해 i값이 1 감소되어 2가 된다. 그러면 그 다음 반복문에서 i값이 1 증가하니 3이 될 줄 알았다. 그러나 python에서는 원래 반복문대로 i가 4가 된다. 즉 i -= 1 의 효과가 없는 것이다. c++에서는 우리가 생각하는대로 i가 3이 된다. i.. 2021. 2. 17.
반응형