如何将存储在 HDFS 中包含行的文本文件转换为 Pyspark 中的数据框?

Posted

技术标签:

【中文标题】如何将存储在 HDFS 中包含行的文本文件转换为 Pyspark 中的数据框?【英文标题】:How can I convert a text file stored in HDFS containing Rows into a Dataframe in Pyspark? 【发布时间】:2017-11-07 12:40:37 【问题描述】:

我正在使用 Pyspark,最近将数据帧作为文本文件存储在 HDFS 中,如下所示:

df.rdd.repartition(1).saveAsTextFile(path)

文件创建成功,但内容格式如下:

Row(APP_PRESS=0.8322056773315432, LINE_PRESS=0.0, POSITION=324.17885120541024, SH_SP=-1.610030115550595, TEMP=24.300001144400007, TRIGGER=4.0869775365401934e-19, V_IND=98.36323547359974)
Row(APP_PRESS=0.8025359920151738, LINE_PRESS=0.0, POSITION=324.12892475616513, SH_SP=1.8780468896210554, TEMP=24.300001144399893, TRIGGER=-1.7645281682240943e-19, V_IND=98.36323547359977)
...

现在,我要做的是将这些数据加载到 Pyspark 的数据帧中,只是为了获得与之前保存的数据帧相同的数据帧('df')。

我该怎么做?

【问题讨论】:

【参考方案1】:

试试这样的:

df=sc.textFile(...).toDF()

但您可以通过将上面的代码修改为:

df.rdd.repartition(1).toDF()

然后保存。

【讨论】:

当我尝试选项“df=sc.textFile(...).toDF()”时,我收到错误消息:TypeError: Can not infer schema for type: 对不起,是我的错误,因为它是字符串的 rdd,所以它不起作用。最简单的方法可能是我写的第二部分——你绝对需要保存为文本文件吗? 并非如此。如果我执行“df.rdd.repartition(1).toDF()”,我如何指定在 HDFS 中保存数据帧的位置? 与 rdd 一样,使用 df.write.save(path) 并在保存后加载数据帧我必须使用哪个命令?

以上是关于如何将存储在 HDFS 中包含行的文本文件转换为 Pyspark 中的数据框?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 txt 文件转换为 parquet 文件并将其加载到 hdfs table-pyspark

hdfs文件格式

是否有将存储在 HDFS 中的数据转换为 JSON 的直接方法?

将utf-8文本转换为UILabel

如何将 .wav 音频文件转换为文本并使用 LUIS 识别意图

使用 pyspark 更改分隔符并将其保存为 HDFS 中的文本文件