我对 Spark 相当陌生,我有兴趣从一开始就了解什么是最佳实践,但到目前为止找不到类似的查询。我得到了一些(很多)由这样的行组成的数据:
['this is some key; followed, by, some, values',
'this is some other key; followed, by, some, , other, values']
我想分割这些线,这样我就得到了一对看起来像这样的
(key,value)
:
(this is some key, [followed, by, some, values])
(this is some other key, [followed, by, some, other, values])
最有效或最漂亮的方法是什么? 我尝试使用 UDF:
def key_value_pair(line):
if not line:
return
split_line = line.split(';')
k, v = split_line[0], split_line[1]
return (k, [v])
加上
rdd.map(lambda x: key_value_pair(x))
给了我正确的结果,但我读到应该避免在 Spark 中使用 UDF。
这不是 UDF。您正在使用带有映射和 lambda 函数的 RDD。 UDF 用于 pyspark 的数据帧。
也就是说,你有什么就好。