如何在传递给Flatmap的函数中返回数据

时间:2018-06-19 19:04:29

标签: pyspark apache-spark-sql pyspark-sql

我有以下格式的数据文件:

Import-Module activedirectory
Get-ADUser -Filter * -Properties Department,EmployeeNumber,Title,Email,Address,DisplayName |
    Export-Csv 'C:\temp\Ad.csv'

我想将每个记录更改为(令牌,id)对。例如,对于记录+--------------------+-------------------+ | full_text| id| +--------------------+-------------------+ ,我希望它转换为:

Hi, how are you, 1010

所以我是通过以下方式使用SparkSql做到的:

(hi, 1010)
(how, 1010)
(are, 1010)
(you, 1010)

data = spark.read.json("../input/Spark_tweets.json").select("full_text", "id") data.rdd.map(lambda data : (data[0], data[1]))\ .flatMap(lambda row: generateWordPlusId(row[0], row[1])).saveAsTextFile("out") 函数执行以下操作:

generateWordPlusId

,它可以按需工作。我的问题是传递给def generateWordPlusId(sentence, id): t = [] for i in [word for word in sentence.lower().split()]: t.append((i, id)) return tuple(t) 方法的函数,例如flatMap,应该返回什么?我将数据插入二维数组,最后将其转换为元组以返回。是这种典型的方法并已优化,还是有更好的方法呢?

0 个答案:

没有答案