如何从列标题中的大rdd创建rdd

时间:2018-07-20 22:55:08

标签: apache-spark pyspark apache-spark-sql rdd

我的rdd很大,我想根据提供的标头列表创建4个不同的rdd,然后通过创建4个parquest文件将其保存在impala表中。

像这样:

a    b    c   d   e   f   g    h
--------------------------------
abc  1   3   4   5   7   9    11
xyz  2   5   7   4   9   4    12

我有黑斑羚副桌的栏目列表:

table 1 impala side :- a,b,c 

table 2 impala side :- d, e, f
...

还需要为每个表添加新列以用于用户定义的主键,例如:

table 1 impala side : - id, a, b, c

尝试过rdd.map函数,但如何申请特定列表:

rdd_1 = rdd.map(lambda x: (x['a'],x['b],x['c']))

还如何使用不同的主键添加新列?

1 个答案:

答案 0 :(得分:0)

您可以使用运算符itemgetter从rdd获取特殊列表。

import operator

list1 = ['a', 'b', 'c']
list2 = ['d', 'e', 'f']

rddGetter1 = operator.itemgetter(*list1)
rddGetter2 = operator.itemgetter(*list2)

rdd1 = rdd.map(rddGetter1)
rdd2 = rdd.map(rddGetter2)