2016-12-05 58 views
0

我有波紋管數據 - 我想的第一個元素組 - 我與pySpark核心嘗試(NOT星火SQL)pySpark - groupByKey不工作

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

這didnt摸索出

回答

3

它不應該工作。 groupByKey可以被稱爲僅在鍵 - 值對(How to determine if object is a valid key-value pair in PySpark)和任意長度的一個元組的RDD不是。

決定哪些值是一個鍵和mapkeyBy第一。例如

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

添加到上面,我有清單(玩)的工作,否則我們會得到像「pyspark.resultiterable.ResultIterable錯誤「感謝您的迴應 - –

0

得到這個與婁代碼

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