728x90

빅데이터(BigData) 54

sqoop 실행 시 unrecognized argument 에러가 발생하는 경우 해결 방법

RDBMS(Oracle)의 데이터를 Hive 테이블로 옮기기 위해 sqoop import를 이용했다. 먼저 sqoop으로 RDBMS에서 데이터를 정상적으로 조회할 수 있는지 확인하기 위해서 sqoop eval 명령을 이용했다. sqoop eval \ --connect jdbc:oracle://localhost/db \ --username 'admin' \ --password 'pass$word' \ --query "SELECT * FROM employee where rownum < 3" 이 때 "unrecognized argument SELECT * ...." 와 같은 메시지와 함께 에러가 발생했다. 아래와 같이 공식 홈페이지에 가서 확인해봐도 문제가 눈에 잘 보이지 않았다. 마침내 원인을 찾았다. 문제..

spark-submit으로 spark 코드 실행시 Non-ASCII character 에러 대처 방법

spark shell에서는 pyspark 코드가 실행되는데 .py 파일로 만든 후 spark-submit으로 실행하면 오류가 발생하는 경우가 있습니다. 제 경우에는 원인이 한글로 된 주석이 있어서였습니다. 해결 방법은 두 가지가 있습니다. 1. 한글로된 주석을 제거하기 2. py 파일을 utf8로 변경하는 방법 당연히 2번 방법을 원할 것입니다. 해결 방법은 아래와 같이 두 가지 중 하나를 선택하면 됩니다. 첫 번째, spark-submit을 실행하기 전 아래와 같이 pythonioencoding을 utf8로 변경합니다. export PYTHONIOENCODING=utf8 두 번째, 파이썬 파일애서 아래 코드르 추가합니다. import sys sys.stdout = open(sys.stdout.filen..

Spark에서 Dataframe을 이용하여 Hive 테이블 생성하기

df라는 데이터프레임이 있을 경우 아래와 같이 실행하면 tb_df라는 테이블이 생성된다. df.write.saveAsTable("tb_df") df.write.saveAsTable("tb_df") 만약에 기존에 동일한 이름의 테이블이 있다면 아래와 같은 에러가 발생할 것이다. Table `tb_df` already exists. 이런 에러가 발생한다면 두 가지방법으로 해결할 수 있다. 첫 번째 방법은 spark.sql을 이용하여 테이블이 있는 경우 삭제하는 것이다. spark.sql("DROP TABLE IF EXISTS tb_df") 두 번째 방법은 데이터프레임으로 테이블을 만들 때 기존에 테이블이 있다면 overwrite하는 방법이다 df.write.mode(SaveMode.Overwrite).sav..

Hive에서 파티션을 기준으로 데이터 삭제하기

Hive에서 데이터를 빠르게 삭제하는 방법은 파티션 기준으로 데이터를 삭제하는 것입니다. 파티션을 기준으로 데이터를 삭제하기 위해서는 데이터를 삭제하려는 기준이 파티션을 분할한 기준과 일치해야 합니다. ALTER TABLE table_name DROP PARTITION(파티션 분할 기준 컬럼='파티션명'); 위와 같이 파티션 분할 기준 컬럼과 파티션명을 이용하여 데이터를 삭제할 수 있습니다. 예를들어 보겠습니다. 아래 테이블은 2019년 1월부터 12월까지의 매출 데이터가 있는 테이블입니다. 테이블명 : FACT_SALES 파티션 기준 컬럼 : BASE_YM 파티션명 : 201901,201902.....201912 위의 테이블에서 2019년 03월 데이터만 삭제할 경우 아래와 같이 할 수 있습니다. AL..

728x90