我正在通過加載PySpark
中的文本文件中的數據來創建RDD
。現在我想將此RDD
轉換爲dataframe
,但我不知道RDD
中有多少列和哪些列。我正在嘗試使用createDataFrame()
,並且顯示的語法是sqlDataFrame = sqlContext.createDataFrame(rdd, schema)
。我試圖看看如何創建schema
,但大多數示例顯示了一個硬編碼模式創建示例。現在,因爲我不知道列是什麼,所以我如何將rdd
轉換爲dataframe
?這是我到目前爲止的代碼:如何將PySpark RDD轉換爲具有未知列的數據框?
from pyspark import SQLContext
sqlContext = SQLContext(sc)
example_rdd = sc.textFile("\..\file1.csv")
.map(lambda line: line.split(","))
#convert the rdd into a dataframe
# df = sc.createDataFrame() # dataframe conversion here.
注1:我不知道列的原因是因爲我想創建一個可以從RDD創建數據框一般腳本的文件中讀取與任何列數。
注2:我知道有一個叫toDF()
另一個函數,可以轉換到RDD數據框,但同樣我也有同樣的問題,如何通過未知列wuth。
注意3:文件格式不只是一個csv文件。我已經展示了它的一個例子,但它可以是任何格式的任何文件
爲什麼不爲列名創建任意佔位符?假設數據的預期維度是n列,那麼對於範圍(n)]中的'cols = [「col」.join(str(i))''。 – Jon
另外,對於您的模式,當您將數據輸入到腳本時,應該建立一種檢測數據類型的方法,例如'types = [type(i)for i in data]',其中數據只是佔位符你正在閱讀的東西。 – Jon
@Jon我怎麼知道n的價值?我的意思是在文件中可以有10列,但在另一個文件中可以有15 – user2966197