2017-10-24 15 views
0

私は日付today_dateを持ってdataframe1の列を持っていないと私は他の列と一緒にdaysを持つ別のdataframe2を持っている..私は、私はdataframe1に参加する必要がありTEMPTABLEDATE_ADD機能の復帰なし

にこれらの二つのデータフレームに変換しています1列にdataframe2で置き換え、daystoday_dateを追加します。私はsqlcontextを使用してこれら2つの一時テーブルを照会します

私は現在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にはNone値が返されます。使用していますハイブのバージョンは、このすべてのヘルプははるかに高く評価され

pysparkのコード... ..

注意を実行しています...かなり古いです:私は

を使用して intunicodeから days機能を変換しました
dataframe2['days']=dataframe2['days'].astype(int) 

答えて

0

それはたぶんtoday_dateが(それはおそらくStringTypeだ?)タイプDateTypeではない...サンプルデータフレームなしで何が悪かったのか言うのは難しいです。

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") 

をそれはそれは通常、最も問題のしているHiveContextすべての機能を持っていないので、私はここにSQLContextを使用:ここで

は働くあなたのコードをテストする簡単な例です。しかし、コードはHiveContextspark.sql(スパーク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| 
    +-----------+ 
関連する問題