Spark写镶木地板不写任何文件,只有_SUCCESS

问题描述 投票:3回答:2

该应用程序包括

val stats = sqlContext.sql("select id, n from myTable")

stats.write.parquet("myTable.parquet")

这创建了dir myTable.parquet,除了空的_SUCCESS文件之外没有任何内容,即便如此

stats.show  // illustration only here, original size motivates parquet use

+-----+----+
|  id |  n |
+-----+----+
|   a |  1 |
|   b |  2 |
+-----+----+

stats.printSchema 

root
 |-- id: string (nullable = true)
 |-- n: long (nullable = true)

如何让write.parquet写出数据帧的实际内容?缺什么 ?

注意这也发生在saveAsTextFile上。

python scala apache-spark spark-dataframe parquet
2个回答
1
投票

就我而言,当我尝试将文件保存到本地文件系统而不是可从Spark集群访问的文件系统时,就会发生这种情况。

该文件由Spark工作节点编写,而不是由PySpark客户端编写,因此应将其输出到工作节点和客户端均可访问的文件系统。


0
投票

一种可能是您查看了错误的目录。 Spark使用的默认文件系统由fs.defaultFS Hadoop配置选项指定。例如,如果你有类似的东西

<property>
  <name>fs.defaultFS</name>
  <value>file:///tmp</value>
</property>

在你的core-site.xml中,如果省略输出路径的URL方案,Spark会写入本地文件系统而不是HDFS。反之亦然,如果是的话

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://some-host:9000</value>
</property>

Spark默认写入HDFS。

© www.soinside.com 2019 - 2024. All rights reserved.