我通过从RDD
中的文本文件加载数据来创建PySpark
。现在我想将此RDD
转换为dataframe
,但我不知道RDD
中有多少列和哪些列。我正在尝试使用createDataFrame()
,并显示的语法为sqlDataFrame = sqlContext.createDataFrame(rdd, schema)
。我试图了解如何创建schema
,但大多数示例都显示了硬编码的架构创建示例。现在因为我不知道列是什么,所以如何将rdd
转换为dataframe
?到目前为止,这是我的代码:
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转换为数据帧,但是我也有与传递未知列相同的问题。
注3:文件格式不仅仅是csv文件。我已经将它展示给一个例子,但它可以是任何格式的文件
答案 0 :(得分:4)
Spark 2.0.0以后支持直接读取csv作为DataFrame。要读取csv,请使用DataFrameReader.csv方法
df = spark.read.csv("\..\file1.csv", header=True)
在您的情况下,如果您无权访问spark对象,则可以使用
from pyspark import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.read.csv("\..\file1.csv", header=True)
如果文件有不同的分隔符,您也可以指定它。
# Eg if separator is ::
df = spark.read.csv("\..\file1.csv", head=True,sep="::")