2017-10-24 14 views
0

내가 날짜 today_date이있는 dataframe1의 열이없고 내가 다른 컬럼과 함께 days을 가진 다른 dataframe2이 .. 내가 dataframe1에 가입 할 필요가 TEMPTABLEDATE_ADD 함수를 반환 없음

에이 두 dataframes 변환하고 한 열에 dataframe2으로 입력 한 다음 에 days을 추가하십시오. sqlcontext을 사용하여이 두 임시 테이블을 쿼리합니다.

현재 date_add 기능을 사용하고 있습니다.

sqlcontext.sql("select date_add(today_date,days) as 'Future_date' from dataframe1 x1 join dataframe2 x2 on x1.a=x2.a" 

그러나 future_date에는 없음 값이 반환됩니다. 사용하고 하이브 버전이 어떤 도움이 많이 감사합니다

pyspark 코드 ... ..

주를 실행하고 있습니다 ... 꽤 오래 : 나는

를 사용하여 intunicode에서 days 기능을 변환
dataframe2['days']=dataframe2['days'].astype(int) 

답변

0

그것은 어쩌면 today_date하지 유형 DateType (이것은 아마도 StringType있어?)입니다 ... 샘플 dataframe없이 무엇이 잘못되었는지 말할 어렵다. 이 때문에 일반적으로 가장 문제입니다했다 HiveContext 모든 기능이 없기 때문에

from datetime import date 
sc.parallelize([[m, date(2017, m, 1)] for m in range(1, 11)]).toDF(["a", "today_date"]).registerTempTable("dataframe1") 
sc.parallelize([[m, 10*m] for m in range(10)]).toDF(["a", "days"]).registerTempTable("dataframe2") 

내가 여기 SQLContext을 사용 :

여기에 작동하는 코드를 테스트하는 빠른 예입니다. 그러나 코드는 HiveContextspark.sql (스파크 2)에서 정상적으로 작동합니다 (스파크 2에서) :

from pyspark.sql import SQLContext 
sqlcontext = SQLContext(sc) 
sqlcontext.sql("select date_add(today_date,days) as Future_date from dataframe1 x1 join dataframe2 x2 on x1.a=x2.a").show() 

    +-----------+ 
    |Future_date| 
    +-----------+ 
    | 2017-09-09| 
    | 2017-07-31| 
    | 2017-11-30| 
    | 2017-06-20| 
    | 2017-01-11| 
    | 2017-03-31| 
    | 2017-10-20| 
    | 2017-02-21| 
    | 2017-05-11| 
    +-----------+