2016-04-27 10 views
0

Spark APIを初めて使用しています。私はストリングで平日(整数)として別の列を追加するcol_date(datetimeのスタンプ、例えば '13AUG15:09:40:15')というカラムから平日の数字を抽出しようとしています。私はうまくやることができません。spark apiの文字列(datetime stamp)から週の日数を抽出します。

+1

[SparkSQLの曜日を取得する方法](http://stackoverflow.com/questions/25006607/how-to-get-day-of-week-in-sparksql) –

+0

あなたは使用していますかRDDまたはDataFrames? –

+0

@nightingalen:私はデータフレームを使用しています – user6200992

答えて

0

これはかなり簡単です。

この単純な関数は、数値(月曜日= 1)として、すべてのジョブとリターン平日を行います

from time import time 
from datetime import datetime 

# get weekdays and daily hours from timestamp 
def toWeekDay(x): 
#  v = datetime.strptime(datetime.fromtimestamp(int(x)).strftime("%Y %m %d %H"), "%Y %m %d %H").strftime('%w') - from unix timestamp 
    v = datetime.strptime(x, '%d%b%y:%H:%M:%S').strftime('%w') 
    return v 

days = ['13AUG15:09:40:15','27APR16:20:04:35'] # create example dates 
days = sc.parallelize(days) # for example purposes - transform python list to RDD so we can do it in a 'Spark [parallel] way' 
days.take(2) # to see whats in RDD 
> ['13AUG15:09:40:15', '27APR16:20:04:35'] 

result = v.map(lambda x: (toWeekDay(x))) # apply functon toWeekDay on each element of RDD 
result.take(2) # lets see results 
> ['4', '3'] 

日時処理の詳細についてPython documentationを参照してください。

+0

_.strftime( '%w')_は重要な部分を忘れました。 – cimox

+0

私はattributeerrorを取得しています。 'str'には属性 'map'がありません。しかし、私はv = datetime.strptime( '13AUG15:09:40:15'、 '%d%b%y:%H:%M:%S')を実行することができますstrftime( '%w')、あなたのお時間をありがとう! – user6200992

+0

解決済みとしてマークする:)。 – cimox

関連する問題