我正在嘗試將一個 intID和一個包含 3 個 int 的陣列轉換為一個具有 2 列的資料框,然后與 pyspark 中的另一個資料框合并;
但是,我只是在與架構相關的錯誤之后出現錯誤,似乎沒有任何效果。我不確定這是為什么。
emp_rdd = spark.sparkContext.emptyRDD()
schema = StructType([
StructField("id", IntegerType(), True),
StructField("data", ArrayType(IntegerType()), True),])
df = spark.createDataFrame(data=emp_rdd, schema=schema)
columns = ['id','data']
for i in range(10):
data = [id, data1]
newRows = spark.createDataFrame(data,columns)
df= df.union(newRows)
這給了我這個錯誤;
無法推斷型別的架構:<class 'int'>
任何幫助,將不勝感激
uj5u.com熱心網友回復:
您收到此錯誤的原因是在您的 for 回圈中,您將引數data作為一個簡單的串列傳遞,同時spark.createDataFrame期望一個可迭代的串列或元組。
嘗試將其更改為:
data = [(id, data1)]
例子:
for i in range(5):
data = [(i, [i 1, i 2, i 3])]
newRows = spark.createDataFrame(data, columns)
df = df.union(newRows)
df.show()
# --- ---------
#| id| data|
# --- ---------
#| 0|[1, 2, 3]|
#| 1|[2, 3, 4]|
#| 2|[3, 4, 5]|
#| 3|[4, 5, 6]|
#| 4|[5, 6, 7]|
# --- ---------
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360775.html
