をレンジ機能を使用するには、入力データを区切り:私はテキストファイルを作ってきたApacheのスパーク - Pythonの - 私は宇宙の一部のラインを持っているどのようにPyspark
Naresh HDFC 2017 01
Naresh HDFC 2017 02
Naresh HDFC 2017 03
Anoop ICICI 2017 05
Anoop ICICI 2017 06
Anoop ICICI 2017 07
:
Name Company Start_Date End_Date
Naresh HDFC 2017-01-01 2017-03-31
Anoop ICICI 2017-05-01 2017-07-30
私はのような出力を必要としますこのデータをHadoopクラスタに配置し、コードを書いていますが、出力を取得する際に問題があります。親切に助けてください。 は私がエントリから月を抽出し、レンジ機能でそれらを置く方法を取得しておりませんので、私はハードレンジ機能で3
コードの値がコード化されています:あなたがようpysparkのto_date
機能を使用することができます
from pyspark import SparkConf,SparkContext
from pyspark.sql import SQLContext,Row
from pyspark.sql.types import *
import datetime
sc = SparkContext()
sqlcon = SQLContext(sc)
month_map={'01':1,'02':2,'03':3,'04':4,'05':5,'06':6,'07':7,'08':8,'09':9,
'10':10,'11':11,'12':12}
def get_month(str):
return datetime.date(int(str[:4]),month_map[str[5:7]],int(str[8:10]))
def parse_line(str):
match = str.split()
return (Row(name = match[0],type = match[1],start_date =
get_month(match[2]),end_date = get_month(match[3])))
#-----------------create RDD---------------
filepath = '/user/vikasmittal/Innovacer_data.txt'
rdd1 = sc.textFile(filepath)
rdd2 =rdd1.map(parse_line)
for i in range(3):
rdd3 = rdd2.map(lambda l:(l.name,l.type,l.start_date.year,i))
print(rdd3.collect())