Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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:timesteps的rdd操作_Python_Python 3.x_Pyspark_Bigdata_Rdd - Fatal编程技术网

Python pyspark:timesteps的rdd操作

Python pyspark:timesteps的rdd操作,python,python-3.x,pyspark,bigdata,rdd,Python,Python 3.x,Pyspark,Bigdata,Rdd,我有一个文件格式如下: 0, Alpha,-3.9, 4, 2001-02-01 08:00:00, 5, 20 0, Beta, -3.8, 3, 2001-02-01 08:15:00, 6, 21 1, Gamma,-3.7, 8, 2001-02-01 08:30:00, 7, 22 0, Alpha,-3.5, 4, 2001-02-01 08:45:00, 8, 23 0, Alpha,-3.9, 4, 2001-02-01 09:00:00, 8, 27 0, Gamma,-3.5

我有一个文件格式如下:

0, Alpha,-3.9, 4, 2001-02-01 08:00:00, 5, 20
0, Beta, -3.8, 3, 2001-02-01 08:15:00, 6, 21
1, Gamma,-3.7, 8, 2001-02-01 08:30:00, 7, 22
0, Alpha,-3.5, 4, 2001-02-01 08:45:00, 8, 23
0, Alpha,-3.9, 4, 2001-02-01 09:00:00, 8, 27
0, Gamma,-3.5, 5, 2001-02-01 09:15:00, 6, 21
等等。。。 我对给定的
Alpha/Beta/Gamma
08:00:00到09:00:00
之间的时间间隔内,每个原始数据中第5个元素的
之和感兴趣。我只希望在08:00:00到09:00:00之间使用基于
rdd
的操作得到以下结果

Alpha 21
Beta 6
Gamma 7
这就是我目前所做的

rdd = sc.textFile(myDataset)
newrdd = rdd.map(myFun) # myFun process each line 
filterrdd = newrdd.filter(lambda e : e[4].startswith('2001-02-01') )

但我不知道如何继续。或者至少无法找到一种仅使用基于
rdd
的操作来解决它的简单方法

要按08:00:00-09:00:00(包括)之间的时间进行筛选,只需确保此字符串的时间部分以
08:
09:00:00
开头,因此筛选函数可以是
e[4].split()[1].startswith('08:','09:00:00')
。然后可以执行常规的RDD reduceByKey()等操作


谢谢jxc。这很有帮助。如果我想在一小时内从08:00到12:00:00进行此操作,我应该如何修改?@Mass17,在一小时内
是什么意思,您可以添加一个具有预期结果的示例吗?从08:00:00到12:00:00,然后
('08'或转换为datetime.time对象以处理任何时间范围。我的意思是[('Alpha',),('Beta',),('Gamma',)]在8-9之间,在9-10之间,[('Alpha',*),('Beta',),('Gamma',)],在10-11之间,[('Alpha',*),('Beta',),('Gamma',*),等等。。
newrdd.filter(lambda e: e[4].split()[1].startswith(('08:', '09:00:00'))) \
      .map(lambda e: (e[1], int(e[5]))) \
      .reduceByKey(lambda x,y: x+y) \
      .collect()
#[(' Alpha', 21), (' Beta', 6), (' Gamma', 7)]