我正在通过加载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