使用pyspark写入镶木地板文件时出错

时间:2020-04-16 20:15:39

标签: python apache-spark pyspark

我正在Windows 10上工作。我安装了spark,目标是使用pyspark。我已完成以下步骤:

  1. 我已将蟒蛇3.7与anaconda一起安装-Python已添加到C:\Python37
  2. 我从this link下载wintils-winutils已添加到C:\winutils\bin
  3. 我下载了spark-提取的火花是:C:\spark-3.0.0-preview2-bin-hadoop2.7
  4. 我从AdoptOpenJDK下载了Java 8

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

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

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

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

在终端机中:

enter image description here

enter image description here

所以我想知道为什么收到此警告:

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

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

enter image description here

这是磁盘上的DataMaster__3.csv:

enter image description here

还有DaterMaster_par2222.parquet:

enter image description here

enter image description here

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

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

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

还有另一种直接保存它而不转换为熊猫的方法,但是问题是它最终被分成多个文件(名称很奇怪,所以我倾向于避免使用这些名称)。如果您愿意分割文件,我认为写一个镶木地板文件会更好。

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

希望能回答您的问题。