【问题标题】:How can I convert a text file stored in HDFS containing Rows into a Dataframe in Pyspark?如何将存储在 HDFS 中包含行的文本文件转换为 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')。

我该怎么做?

【问题讨论】:

    标签: hadoop apache-spark pyspark hdfs spark-dataframe


    【解决方案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)
    • 并在保存后加载数据帧我必须使用哪个命令?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 2014-03-06
    • 2023-03-14
    相关资源
    最近更新 更多