Pyspark-python中的数据转换
如何编写python函数语句 我想更改dataMillion记录l=0,m=1,h=2,c=3,因为稍后我会找到平均值。我使用'Order Priority'作为id,但字符串不能还原ByKey 我的数据如下所示:Pyspark-python中的数据转换,python,if-statement,pyspark,Python,If Statement,Pyspark,如何编写python函数语句 我想更改dataMillion记录l=0,m=1,h=2,c=3,因为稍后我会找到平均值。我使用'Order Priority'作为id,但字符串不能还原ByKey 我的数据如下所示: +--------------+------------+ |Order Priority| Units Sold| +--------------+------------+ |M |1593 | |M |4611
+--------------+------------+
|Order Priority| Units Sold|
+--------------+------------+
|M |1593 |
|M |4611 |
|C |7676 |
|H |4790 |
|L |3973 |
L=低,M=中,H=高,C=临界
这是my code.py:
def parseLine(line):
fields = line.split(',')
priority = (fields[0])
sold = float(fields[1])
return (priority, sold)
lines = sc.textFile("file:///SparkCourse/project/1MillSalesRecords.csv", 4)
rdd = lines.map(parseLine)
print(rdd.take(2))
结果:
['M',1593.0',M',4611.0]由于您需要一种可扩展的方法,请使用另一个映射函数,将字母替换为您想要的数字。在这种方法中,我使用映射字母创建一个字符串,然后查找传入字母所在的索引 也可以将此函数与第一个map解析器合并
def cleanLine(line):
#Get the character index
letter_index = 'LMHC'.find(line[0])
return (letter_index , line[1])
cleanedLine = rdd.map(cleanLine)
print(cleanedLine.take(2))
对不起,我只是个初学者。错误:字母\索引='LMHC'。findline。\ 1 AttributeError:'tuple'对象没有属性'\ 1'my bad。我打算在rdd元素上调用map,因为它具有来自上一个map的解析行。我把我的回答又编辑了一遍。我在斯卡拉工作。现在这应该在pyspark中起作用了