Hadoop spark数据集写入HDFS期间创建的空分区

Hadoop spark数据集写入HDFS期间创建的空分区,hadoop,apache-spark,hdfs,Hadoop,Apache Spark,Hdfs,尝试使用write方法将dataset/dataframe保存为hdfs的拼图。 分区在HDFS中用括号表示,但数据为空。我使用的是Spark版本-2.x dataset.write.mode("append").partitionBy("empNo").format("parquet").save("hdfs path") 或 请建议我刚刚检查了它的数据帧。根据您的查询在单个列上对其进行分区。在输出文件夹中创建了两个具有适当值的分区文件夹。每个文件夹都有一个扩展名为.gz.parquet的文

尝试使用write方法将dataset/dataframe保存为hdfs的拼图。 分区在HDFS中用括号表示,但数据为空。我使用的是Spark版本-2.x

dataset.write.mode("append").partitionBy("empNo").format("parquet").save("hdfs path")


请建议

我刚刚检查了它的数据帧。根据您的查询在单个列上对其进行分区。在输出文件夹中创建了两个具有适当值的分区文件夹。每个文件夹都有一个扩展名为.gz.parquet的文件

我使用了以下命令:

df.write.mode(SaveMode.Append)
  .partitionBy("column_name")
  .format("parquet")
  .save("hdfs://namenode/output")
我正在使用Spark 1.6,因此无法检查DataSet API


我认为您的数据分区可能存在一些问题。某些分区可能是空的。您编写的命令很好。

您是否已将HiveContext的dynamic.partition设置为true,并将dynamic.partition.mode设置为nonstrict?否。但在从spark到hdfs的写入操作中是否需要该命令?抱歉,我读错了您的问题。我以为你在将分区数据写入一个配置单元表。有什么建议吗?我已在我的应用程序中使用SparkSession设置了.configspark.sql.warehouse.dir、/user/hive/warehouse。您确定数据已正确分区吗?可能有一个歪斜导致了空分区。
df.write.mode(SaveMode.Append)
  .partitionBy("column_name")
  .format("parquet")
  .save("hdfs://namenode/output")