2016-12-05 17 views
0

を働いていないgroupByKey私は最初の要素を持つグループにしたい怒鳴るデータ - を持っている - 私はpySparkコアをしようとしています(SQLスパークNOT)pySpark -

(u'CRIM SEXUAL ASSAULT', u'HZ256372', u'003', u'43'), 
(u'THEFT', u'HZ257172', u'011', u'27'), 
(u'ASSAULT', u'HY266148', u'019', u'6'), 
(u'WEAPONS VIOLATION', u'HY299741', u'010', u'29'), 
(u'CRIM SEXUAL ASSAULT', u'HY469211', u'025', u'19'), 
(u'NARCOTICS', u'HY313819', u'016', u'11'), 
(u'NARCOTICS', u'HY215976', u'003', u'42'), 
(u'NARCOTICS', u'HY360910', u'011', u'27'), 
(u'NARCOTICS', u'HY381916', u'015', u'25') 

私は

file.groupByKey().map(lambda x : (x[0], list(x[1]))).collect() 
てみました

これはうまくいかなかった

答えて

3

これはうまくいきません。 groupByKeyは、キーと値のペア(How to determine if object is a valid key-value pair in PySpark)のRDDでのみ呼び出すことができ、任意の長さのタプルはそうではありません。

どのキーがキーで、最初にmapまたはkeyByを決定します。例えば

rdd.map(lambda x: (x[0], x[1:])).groupByKey() 
+0

で働いていたガット"応答のおかげで - –

0

が、これは他の我々がpyspark.resultiterable.ResultIterable」のようなエラーが表示されますが、私は)リスト(でプレイしている上記に加えて怒鳴るコード

from pyspark import SparkContext 
sc = SparkContext() 
def chicagofile(line): 
     sLine = line.split(",") 
     cNum = sLine[1] 
     cDist = sLine[11] 
     cType = sLine[5] 
     cCommArea = sLine[13] 
     return (cType,cNum,cDist,cCommArea) 
cFile = sc.textFile("/user/sachinkerala6174/inData/ChicagoCrime15/crimes2015.csv") 
getFile = cFile.map(chicagofile) 
mapCType = getFile.map(lambda x : (x[0],(x[1],x[2],x[3]))) 
grp = mapCType.groupByKey().map(lambda x : (x[0], (list(x[1])))) 
saveFile = grp.saveAsTextFile("/user/sachinkerala6174/inData/ChicagoCrime15/res1") 
print grp.collect()