【问题标题】:Error writing to parquet file using pyspark使用 pyspark 写入镶木地板文件时出错
【发布时间】:2020-04-17 08:45:30
【问题描述】:

我正在使用 Windows 10。我安装了 spark,目标是使用 pyspark。我做了以下步骤:

  1. 我已经使用 anaconda 安装了 Python 3.7 -- Python 已添加到 C:\Python37
  2. 我从this link 下载wintils -- winutils 添加到C:\winutils\bin
  3. 我下载了spark——提取的spark是:C:\spark-3.0.0-preview2-bin-hadoop2.7
  4. 我从AdoptOpenJDK下载了Java 8

在系统变量下,我设置了以下变量:

  1. HADOOP_HOMEC:\winutils
  2. SPARK_HOME: C:\spark-3.0.0-preview2-bin-hadoop2.7
  3. JAVA_HOME: C:\PROGRA~1\AdoptOpenJDK\jdk-8.0.242.08-hotspot

最后,在系统路径下,我添加了:

  1. %JAVA_HOME%\bin
  2. %SPARK_HOME%\bin
  3. %HADOOP_HOME%\bin

在终端中:

所以我想知道为什么我会收到这个警告:

unable to load native-hadoop library... And why I couldn't bind on port 4040...

最后,在 Jupyter Notebook 中,尝试写入 Parquet 文件时出现以下错误。此图显示了一个工作示例,下图显示了有错误的代码:

这是我磁盘上的 DataMaster__3.csv:

还有 DaterMaster_par2222.parquet:

非常感谢任何帮助!

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    如果您以 csv 格式编写文件,我发现最好的方法是使用以下方法

    LCL_POS.toPandas().to_csv(<path>)
    

    还有另一种直接保存而不转换为 pandas 的方法,但问题是它最终会被拆分为多个文件(名称很奇怪,所以我倾向于避免使用这些文件)。如果您乐于拆分文件,我认为最好编写 parquet 文件。

    LCL_POS.repartition(1).write.format("com.databricks.spark.csv").option("header", "true").save(<path>)
    

    希望能回答你的问题。

    【讨论】:

    • 您能否添加完整的堆栈跟踪,以便我可以更好地评论为什么这似乎失败了。另外,这个文件有多少数据,分区是什么?
    • 另外,4040 端口通常会失败,因为您有其他进程在那里运行?可能正在使用该端口的其他终端
    猜你喜欢
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2017-06-20
    • 1970-01-01
    • 2018-08-13
    • 2019-09-02
    相关资源
    最近更新 更多