这里是用于创建pyspark.sql DataFrame的代码:
import numpy as np
import pandas as pd
from pyspark import SparkContext
from pyspark.sql import SQLContext
df = pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]]), columns=['a','b','c'])
sparkdf = sqlContext.createDataFrame(df, samplingRatio=0.1)
这样sparkdf看起来像是
a b c
1 2 3
4 5 6
7 8 9
10 11 12
现在,我想添加一个 numpy 数组(或甚至是列表)作为新列。
new_col = np.array([20,20,20,20])
但是标准的做法是
sparkdf = sparkdf.withColumn('newcol', new_col)
失败了。 可能使用udf是解决问题的方法,但我不知道如何创建一个udf,使其为每个DataFrame行分配一个不同的值,即遍历new_col。 我已经查看了其他pyspark和pyspark.sql,但找不到解决方案。 另外,我需要在pyspark.sql内部保持,不能使用scala解决方案。谢谢!
ValueError: Can only zip with RDD which has the same number of partitions
- rstreppa