pyspark dataframe join 후 원하는 column 선택하기 spark에서 df를 조인한 후에 원하는 컬럼을 선택해야 한다. 이때 sql처럼 편하게 "*" 기호를 쓰거나, 원하는 컬럼을 선택하기를 원한다. 이 때는 아래와 같이 하면된다. "*"를 쓰기 위해서는 alias로 df의 별칭을 지정해줘야 한다. df = (df_a.alias("a").join(df_b.alias("b"), df_a.prd_no == df_b.prd_no) .selectExpr("a.*", "b.mem_no")) 빅데이터(BigData)/Spark 2020.12.01
spark-submit 중 spark config 값 변경하기 spark를 실행 중에 config 값을 변경해야하는 경우가 있다. 필자 같은 경우에는 처음 spark submit을 할 때는 spark.master를 yarn을 사용하다가 중간에 local mode로 변경해야 하는 경우가 있다. 조금 더 자세히 이야기를 하자면 yarn cluster에서는 필자가 접근하려는 db에 방화벽이 있기 때문에 접속을 못하고 driver node에서만 접근이 가능했기 때문에 사용했다. # spark session을 stand alone node로 변경 conf = spark.sparkContext._conf.setAll([('spark.master', 'local[10]'),('spark.driver.memory','8g')]) spark.sparkContext.stop() sp.. 빅데이터(BigData)/Spark 2020.11.20
spark에서 string으로 날짜 데이터 만들기 아래와 같은 패턴을 이용하면 문자열로 날짜 값을 만들 수 있다. select from_unixtime(unix_timestamp('20161023235959', 'yyyyMMddHHmmss'), 'yyyy-MM-dd HH:mm:ss') as new_format 빅데이터(BigData)/Spark 2020.11.19
python에서 선택한 일자의 월요일 일자 가져오기 아래와 같이 코드를 이용하면 월요일의 일자를 계산할 수 있다. from datetime import datetime, timedelta now = datetime.strptime('20201118', '%Y%m%d') monday = now - timedelta(days = now.weekday()) monday = monday.strftime("%Y%m%d") print(monday) 참고 stackoverflow.com/questions/59981999/find-monday-of-current-week-in-python 파이썬(Python) 2020.11.18
hive에서 선택한 일자의 월요일 일자 가져오기 어떤 데이터를 추출할 때에는 월요일~일요일 사이의 데이터를 가져와야 할 경우가 있다. 예를들어 주간 실적같은 것을 보여줄 때가 그렇다. 이럴 때는 월요일~일요일의 일자를 알아야 한다. 월요일만 알면 6일을 더하면 일요일이 되기 때문에 월요일 날짜를 찾는게 집중하면 된다. hive에서는 아래와 같이 쿼리를 실행하면 월요일의 일자를 알 수 있다. select next_day(date_sub('2019-01-01', 7), 'MON') hive 1.2 버전 이상에서만 될 수 있으니 hive의 버전을 확인하자. 참고 stackoverflow.com/questions/33196651/how-to-get-the-date-of-the-first-day-of-a-week-given-a-time-stamp-in-hado.. 빅데이터(BigData)/Hive 2020.11.18
pyspark dataframe에서 join하고 컬럼을 select 하거나 drop 하기 spark dataframe에서 조인을 하면 동일한 컬럼이 2개 생길 수 있다. 안 생길 때도 있다. 어쨌든 동일한 컬럼이 중복으로 생기면 제거해줘야 한다. 이 때는 2가지 방법이 있다. .select()를 이용해 사용할 컬럼만 선택하거나 .drop을 이용해서 필요없는 컬럼을 제거해야 한다. 여러 개의 컬럼을 선택하거나 삭제할 때는 아래와 같은 방법을 이용해야 한다. df = (df.join(df_b, (df.mem == df_b.mem) & (df.prd == df_b.prd), "left_anti") .drop("df_b.mem_no,df_b.prd_no")) spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=join pyspark.. 빅데이터(BigData)/Spark 2020.10.26
spark에서 list로 dataframe 만들기 spark에서 createDataFrame을 하면 df를 만들 수 있다. 이 때 스키마를 지정해야하는데 기존의 df와 동일하게 만들고 싶다면 df.schema를 바로 이용할 수 있다. list_rslt_on_driver_node = df_rslt.collect() df_rslt_on_driver_node = spark.createDataFrame(list_rslt_on_driver_node,schema=df_rslt.schema) df_rslt_on_driver_node.repartions(1) df2 = df_rslt_on_driver_node.repartition(1) 빅데이터(BigData)/Spark 2020.10.19
spark에서 master node로 데이터를 모으기 위해서 collect를 사용하는 방법 spark에서 dataframe을 이용할 때 데이터는 worker node에 분산되어 저장된다. 이 때 어떠한 필요에 의해서 데이터를 master node로 보내야 하는 경우가 있다면 collect()를 이용하면 된다. 필자의 경우 df의 데이터를 oracle 데이터로 보내기 위해서 이 작업이 필요했다. master node는 오라클 db에 접근이 가능하지만 worker node는 보안 정책으로 인해 접근할 수 없었다. 그래서 데이터를 master node로 보내고 master node의 데이터를 다른 db로 보내려고 했다. 결론적으로는 실패 해서 다른 방법을 이용했지만 어쨌든 데이터를 master node에 모으고 싶다면 이 방법을 이용하면 된다. df.collect() 데이터가 많은 경우에는 데이터가.. 빅데이터(BigData)/Spark 2020.10.19
dataframe의 partition 수 확인하기 만들어 놓은 데이터프레임이 몇개로 분할되어 있는지 확인하고 싶을 때는 아래와 같이 실행하면 파티션 수를 확인할 수 있다. df.rdd.getNumPartitions() 추가로 파티션을 조정하고 싶다면 repartition() 이나 Coalesce()를 사용할 수 있다. df = df.repartition(5) 또는 df = df.coalesce(5) 참고 sparkbyexamples.com/pyspark/pyspark-repartition-vs-coalesce/ 빅데이터(BigData)/Spark 2020.10.16
visual studio code(vscode) 단축키 현재 가장 많이 쓰는 단축키는 2개다. 기능 윈도우 맥북 왼쪽 사이드바 숨기기 / 보이기 ctrl + b command + b 하단 패널 숨기기 / 보이기 ctrl + j command + j doc string 생성 shift + ctrl + 2 shift + cmd + 2 참고 sub0709.tistory.com/58 자주쓰는 VSCode 단축키 관련지식 visual studio code Edit 한줄삭제 : ctrl + shift + k 커서가 위치한 line을 삭제한다. 만약 여러 line이 선택된 상태면 선택된 모든 line 을 삭제한다. 한줄이동 : alt + 상하방향키 커서가 위치한 lin.. sub0709.tistory.com https://marketplace.visualstudio.co.. 개발환경 2020.10.12