我有2个数据文件:
1个文件是头文件,其他文件是数据文件。 头文件有两列(ID,标签):header.txt
Id,Tags
现在我试图在头文件之外创建dataFrame Schema :(我必须像实时那样使用这种方法,header.txt和data.txt中有1000列。因此,手动创建案例类不能使用1000列。
val dataFile=sparkSession.read.format("text").load("data.txt")
val headerFile=sparkSession.sparkContext.textFile("header.txt")
val fields=
headerFile.flatMap(x=>x.split(",")).map(fieldName=>StructField(fieldName,StringType,true))
val schema=StructType(fields)
但是上面的行以无法解析重载的方法StructType 失败。
有人可以帮忙吗
答案 0 :(得分:0)
StructType需要一个StructField数组,并且您使用的字段变量是RDD [String],因此收集 rdd来创建StructType。
from itertools import groupby
my_list = [['chr1', 65419, 65433], ['chr1', 65520, 65573], ['chr1', 69037, 71585], ['chr1', 69055, 70108], ['chr1', 137621, 139379],['chr2', 65419, 65433], ['chr2', 65520, 65573], ['chr2', 69037, 71585], ['chr3', 69055, 70108]]
f = lambda x: x[0]
for k, g in groupby(sorted(my_list, key=f), key=f):
print(k, sum(x[2] - x[1] for x in g))
# chr1 5426
# chr2 2615
# chr3 1053