如何将pyspark中的csv读取为不同的类型,或将数据集映射为两种不同的类型

如何将pyspark中的csv读取为不同的类型,或将数据集映射为两种不同的类型,pyspark,Pyspark,有没有办法将RDD映射为 covidRDD = sc.textFile("us-states.csv") \ .map(lambda x: x.split(",")) #reducing states and cases by key reducedCOVID = covidRDD.reduceByKey(lambda accum, n:accum+n) print(reducedCOVID.take(1)) 数据集由1列状态和1列案例组成。当它被创建时,它被读取为 [[u'Was

有没有办法将RDD映射为

covidRDD = sc.textFile("us-states.csv") \
    .map(lambda x: x.split(",")) 

#reducing states and cases by key
reducedCOVID = covidRDD.reduceByKey(lambda accum, n:accum+n)
print(reducedCOVID.take(1))
数据集由1列状态和1列案例组成。当它被创建时,它被读取为

[[u'Washington',u'1'],…]

因此,我希望有一列字符串和一列int。我正在RDD上做一个项目,所以我希望避免使用dataframe。。有什么想法吗


谢谢

由于数据集包含键值对,请使用groupBykey并聚合计数

如果您有一个类似于[['WH',10],'TX',5],'WH',2],'IL',5],'TX',6]]的数据集

下面的代码给出了这个输出-[('IL',5),('TX',11),('WH',12)]

data.groupByKey().map(lambda行:(行[0],和(行[1]))).collect()

可以将aggregateByKey与UDF一起使用。此方法需要3个参数:开始位置、分区内的聚合函数和跨分区的聚合函数

此代码还生成与上面相同的结果

def addValues(a,b):
    return a+b
data.aggregateByKey(0, addValues, addValues).collect()


亲爱的@tknpw,为了方便其他可能想回答此问题的用户,需要进行一些澄清。让我解释其中一些:首先,请详细说明缩写词,例如RDD。第二,请共享部分数据集,而不是解释“数据集由1列状态和1列案例组成”。这有助于提高再现性并尽早回答您的问题。