如何在pyspark映射中添加增量数字

2024-10-03 21:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个代码:

import time
from datetime import datetime

ts = time.time()
dt = datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')

claims_data = data.map(lambda x: x.split(","))
claim_id = claims_data.map(lambda x: (
    x[9],
    'Claim_id',
    '0',
    'Claim_id',
    'Claim',
    1,
))

BeginDOS = claims_data.map(lambda x: (
    x[13],
    'BeginDOS',
    '0',
    'BeginDOS',
    'Claim',
    1,
))

我试图从现有的RDD中获取数据,下面是我要做的:

此代码示例提取单个列。claim是x[9],BeginDOS是当前加载的名为data的RDD的x[13]。使用映射,我正在为每个列使用静态数据创建新的RDD。随着时间的推移,我将添加更多的地图。在

我的问题是最后一个领域。在这些情况下,两者都硬设为数值1。在

我需要的是实例化一个变量计数器,并用一个数字预加载该变量。我想在claim_idBeginDOS中使用这个数字,但是每次都要递增。对于claim_id中的每一条记录,它都是递增的,BeginDOS

我该怎么做?在

谢谢

更新#1。请求的源数据示例:

^{pr2}$

谢谢。在


Tags: lambda代码importid示例mapdatadatetime
1条回答
网友
1楼 · 发布于 2024-10-03 21:29:19

通过你的例子,我假设你希望你的索引是从1开始的(而不是0)。在

如果是这样的话,这将得到您想要的结果(可以将此模板用于两个变量):

claim_ids = map(lambda x: (
    x[1][13],
    'BeginDOS',
    '0',
    'BeginDOS',
    'Claim',
    x[0]+1,
),enumerate(claims_data))

[('2014-05-28', 'BeginDOS', '0', 'BeginDOS', 'Claim', 1),
 ('2014-05-28', 'BeginDOS', '0', 'BeginDOS', 'Claim', 2)]

# the x used in the lambda is a tuple with (index#,value)

相关问题 更多 >