定义具有大量列的字典

Defining a dictionary with a very large amount of columns

我有一个数据集想移动到 spark sql。这个数据集有大约 200 列。我发现这样做的最好方法是将数据映射到字典,然后将该字典移动到 spark sql table.

问题是,如果我将它移到字典中,代码将变得超级 hacky 且不健壮。我可能不得不写这样的东西:

lines = sc.textFile(file_loc)
#parse commas
parts = lines.map(lambda l: l.split(","))
#split data into columns
columns = parts.map(lambda p:{'col1':p[0], 'col2':p[1], 'col3':p[2], 'col4': p[3], ;'col5': p[4], 'col6':p[5], 'col7':p[6], 'col8':p[7], col9':p[8], 'col10':p[9], 'col11':p[10], 'col12':p[11], 'col13':p[12]})

我只写了 13 个专栏,因为我不想输入更多内容,但你明白了。

我想做一些类似于您将 csv 读入 R 中的数据框的方式,您在其中将列名指定到一个变量中,然后使用该变量命名所有列。

示例:

col_names <- ('col0','col1','col2','col3','col4','col5','col6','col7','col8','col9','col10','col11','col12','col3')
df <- read.csv(file_loc, header=FALSE, col.names=col_names)

我无法使用 pandas 数据框,因为该数据结构目前无法在 spark 中使用。

有没有一种方法可以在 python 中创建字典,类似于在 R 中创建数据框的方式?

zip 可能会有帮助。

dict(zip(col_names, p))

如果您担心中间列表的额外内存,您可以使用 izip