首页 > 解决方案 > Spark Dataframe 的多个 numpy 数组(索引、数据)最快的方法

问题描述

我想直接从多个数据和时间戳索引 Numpy 数组(时间序列数据)创建一个Spark Dataframe

我有一个包含所有数据数组的所有唯一索引的主数组。Spark Dataframe 中的示例数据类型为 double、long、int 或 string。

每个数据数组都应该是 Spark Dataframe 中的一个新列。

示例数据:

idx1:  [2.00e-01, 3.00e-01, 4.00e-01, ... 5.00e+03, 6.00e+03]
data1: [ 0,  10,   15, ... 65535, 65535, 65535]
...
idx2: [8.70e-01, 5.70e+02, ... 9.90e+02, 1.07+03 1.12e+03]
data2: [19282, 19282, 19282, ... 19284, 19285, 19286]

masterIndex: [2.00e-01, 3.00e-01, 4.00e-01, 8.70e-01, 5.70e+02, ...]

目标火花数据框(自动填充 NaN):

| masterIdx| data1 |data(N)| ... |
|     0.2  |   0   |  NaN  | ... |
| ...      |    .. |  ..   | ... |
|     0.87 |  NaN  | 19282 | ... |

在我目前的方法中,我执行以下步骤:

  1. 创建以 masterIndex 为索引的空 Panda Dataframe
  2. Numpy 数组索引和样本作为熊猫系列
  3. 将熊猫系列合并为熊猫数据框上的列->df[name] = pdSeries
  4. 将 Panda Dataframe 转换为 Spark Dataframe 并启用 Pyarrow 和数据类型的 Schema

如何有效地将多个 numpy 数据数组作为列(带有索引数组)添加/合并到 Spark Dataframe?我想直接将数据写入 Spark Dataframe。

目标是在创建 Spark Dataframe 时获得最佳性能

谢谢您的意见!

标签: pandasnumpydataframeapache-sparkpyspark

解决方案


推荐阅读