Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyspark rdd操作!(蟒蛇3号,斯巴克2号)_Python_Python 3.x_Apache Spark_Pyspark - Fatal编程技术网

Python Pyspark rdd操作!(蟒蛇3号,斯巴克2号)

Python Pyspark rdd操作!(蟒蛇3号,斯巴克2号),python,python-3.x,apache-spark,pyspark,Python,Python 3.x,Apache Spark,Pyspark,我有一个“input.txt”文件,其中包含以下内容: [10,21,90,34,40,98,21,44,59,21,90,34,29,19, 21,90,34,29,49,78 ] 由于我是一名初学者,我尝试使用RDD操作对上述文件执行以下操作。(我可以通过将RDD元素复制到列表来执行此操作): 我想显示上面给定的列表和列表的第一个元素 我希望通过RDD显示排序后的输出(升序和降序),并使用RDD显示列表中不同的元素 显示给定列表的最大值和最小值 将上述列表与新输入组合在一起,格式为:{3

我有一个“input.txt”文件,其中包含以下内容:

[10,21,90,34,40,98,21,44,59,21,90,34,29,19, 21,90,34,29,49,78 ]
由于我是一名初学者,我尝试使用RDD操作对上述文件执行以下操作。(我可以通过将RDD元素复制到列表来执行此操作):

  • 我想显示上面给定的列表和列表的第一个元素

  • 我希望通过RDD显示排序后的输出(升序和降序),并使用RDD显示列表中不同的元素

  • 显示给定列表的最大值和最小值

  • 将上述列表与新输入组合在一起,格式为:
    {30,35,45,60,75,85}
    ,并显示输出

  • 使用具有不同值的reduce提供列表元素的总和

  • rdd.distinct().reduce(lambda x,y:x+y)
    
  • 使用reduce提供列表元素的总和

  • rdd.reduce(lambda x,y:x+y)
    
我可以使用Pyspark操作和转换来完成上述所有任务吗?还是我太野心勃勃了?为这么多问题道歉。我对spark感兴趣才一个星期

编辑 我不想在代码中硬编码列表。 我想读取文件(input.txt)。 我试着用

data = sc.textFile("./input.txt")
collected = data.collect()
print(data)
d2 = d1[0].encode('ascii', 'ignore')
print(d2)
但是使用这种方法,如果不将rdd转换为普通Python列表(d3=d2.strip(“{}”).split(“,”),我就无法将其转换为Int列表

我无法使用max(d2)或d2.max()获得最大值,因为它说max未移植


我希望我现在说清楚了

首先,将数据放入RDD:

rdd = sc.parallelize([10,21,90,34,40,98,21,44,59,21,90,34,29,19, 21,90,34,29,49,78])
显示上述给定列表和列表的第一个元素

rdd.collect()
rdd.take(1)
我还希望通过RDD显示排序后的输出(升序和降序),并使用RDD显示列表中的不同元素

rdd.distinct().sortBy(lambda x:x).collect()
rdd.distinct().sortBy(lambda x:-x).collect()
显示给定列表的最大值和最小值

rdd.max()
rdd.min()
以{30,35,45,60,75,85}的形式将上述列表与新输入组合,并显示输出

newrdd = sc.parallelize({30,35,45,60,75,85})
rdd.union(newrdd).collect()
使用具有不同值的reduce提供列表元素的总和

rdd.distinct().reduce(lambda x,y:x+y)
使用reduce提供列表元素的总和

rdd.reduce(lambda x,y:x+y)
附言。 事实上,如果按rdd降序对元素进行排序,max元素就是这个rdd的第一个元素。因此,您可以使用
max()
,在不使用
max>的情况下获得此rdd的最大值,因此,以下是代码:

rdd.distinct().sortBy(lambda x:-x).take(1)

谢谢你的回答!但我不想在代码中硬编码列表。我想读取文件(input.txt)。我尝试使用data=sc.textFile(“./input.txt”)collected=data.collect()print(data)d2=d1[0]。encode('ascii','ignore')print(d2),但使用这种方法,如果不将rdd转换为普通Python列表(d3=d2.strip(“{}”).split(','),我就无法将其转换为Int列表。我无法使用max(d2)或d2.max()获得最大值,因为它说max未移植。我希望我现在说清楚了!如果无法使用
max()
,则可以对其排序并获取第一个元素。嗨@iPrince!我使用sorted()然后使用take()来执行相同的操作。有更好的方法吗?