我正试图将表中的某些列转换为行。 我正在使用Python和Spark 1.5.0。这是我的初始表格:
+-----+-----+-----+-------+
| A |col_1|col_2|col_...|
+-----+-------------------+
| 1 | 0.0| 0.6| ... |
| 2 | 0.6| 0.7| ... |
| 3 | 0.5| 0.9| ... |
| ...| ...| ...| ... |
我想要这样的东西:
+-----+--------+-----------+
| A | col_id | col_value |
+-----+--------+-----------+
| 1 | col_1| 0.0|
| 1 | col_2| 0.6|
| ...| ...| ...|
| 2 | col_1| 0.6|
| 2 | col_2| 0.7|
| ...| ...| ...|
| 3 | col_1| 0.5|
| 3 | col_2| 0.9|
| ...| ...| ...|
有人知道我能做到吗?谢谢你的帮助。
Spark局部线性代数库目前非常薄弱:而且它们不包括上述基本运算。
对于Spark 2.1,有一个JIRA可以解决这个问题,但这对你今天的工作没有帮助。
需要考虑的是:执行转置很可能需要完全洗牌数据。
现在您需要直接编写RDD代码。我用scala编写了
transpose
,但不是用python。这是scala
版本:所以你可以把它转换成python供你使用。在这个特殊的时刻,我没有足够的带宽来编写/测试它:如果您无法进行转换,请告诉我。
至少-以下内容很容易转换为
python
。zipWithIndex
-->;enumerate()
(python等价物-记入@zero323)map
-->;[someOperation(x) for x in ..]
groupBy
-->;itertools.groupBy()
以下是
flatten
的实现,它没有等效的python:所以你应该可以把这些放在一起解决问题。
使用基本的Spark SQL函数相对简单。
Python
斯卡拉:
使用平面图。下面这样的东西应该有用
相关问题 更多 >
编程相关推荐