Apache spark 为什么spark insertInto不编写扩展名为.parquet的拼花文件?

Apache spark 为什么spark insertInto不编写扩展名为.parquet的拼花文件?,apache-spark,Apache Spark,我有一个用Scala编写的工具,它使用Spark的DataFramesAPI将数据写入HDFS。这是写入数据的行: temp\u table.write.mode(SaveMode.Overwrite).insertInto(tableName) 我们的一个内部团队正在hadoop/spark集群上使用该工具,当它将文件写入HDFS时,在文件上没有.parquet扩展名,这(出于我不想深入讨论的原因)会给他们带来下游问题 以下是该团队提供的屏幕截图,其中显示了那些没有.parquet扩展名的文

我有一个用Scala编写的工具,它使用Spark的DataFramesAPI将数据写入HDFS。这是写入数据的行:

temp\u table.write.mode(SaveMode.Overwrite).insertInto(tableName)
我们的一个内部团队正在hadoop/spark集群上使用该工具,当它将文件写入HDFS时,在文件上没有.parquet扩展名,这(出于我不想深入讨论的原因)会给他们带来下游问题

以下是该团队提供的屏幕截图,其中显示了那些没有.parquet扩展名的文件:

请注意,我们已经验证了它们是拼花文件(即,可以使用
spark.read.parquet(文件名)
读取它们)

我无法在我的测试环境中重现这个问题,当我在那里运行相同的代码时,文件的扩展名是.parquet


有人知道是什么原因导致拼花地板文件的扩展名不是.parquet吗?

我认为“原因”是因为您有一个分区表,对于非分区表,文件结尾是正确的,另请参阅我的相关问题Hadoop根本不使用文件扩展名-除了用
.gz
.snappy
等标记压缩文本文件。从历史上看,Spark借用了很多Hadoop代码库,尤其是对于文件格式,它还没有定制的读/写接口。这也许可以解释为什么你在不同的上下文中看到不同的命名约定——老实说,我很惊讶有人会认为Spark使用了文件扩展名……谢谢你的评论,Samson,但是我不欣赏你最后一句话的贬义语气。如果我做一个假设,那只是因为我到目前为止看到的行为,以及在今天的测试中,spark编写拼花地板文件时,它们有一个扩展名。我不明白一个假设怎么会被理解为“惊人”。再次感谢您抽出时间发表评论。关于hadoop使用(或不使用)文件扩展名的解释当然很有趣,我将在此基础上进行调查,谢谢。@RaphaelRoth谢谢您,在阅读您的问题后,我想知道原因是否是使用了外部表。明天,我将与我提到的内部团队的同事一起检查他们是使用外部表还是托管表。我认为“原因”是因为您有一个分区表,对于非分区表,文件结尾是正确的,另请参阅我的相关问题Hadoop根本不使用文件扩展名-除了用
.gz
.snappy
等标记压缩文本文件。从历史上看,Spark借用了很多Hadoop代码库,尤其是对于文件格式,它还没有定制的读/写接口。这也许可以解释为什么你在不同的上下文中看到不同的命名约定——老实说,我很惊讶有人会认为Spark使用了文件扩展名……谢谢你的评论,Samson,但是我不欣赏你最后一句话的贬义语气。如果我做一个假设,那只是因为我到目前为止看到的行为,以及在今天的测试中,spark编写拼花地板文件时,它们有一个扩展名。我不明白一个假设怎么会被理解为“惊人”。再次感谢您抽出时间发表评论。关于hadoop使用(或不使用)文件扩展名的解释当然很有趣,我将在此基础上进行调查,谢谢。@RaphaelRoth谢谢您,在阅读您的问题后,我想知道原因是否是使用了外部表。我明天将与我提到的内部团队中的同事核实他们是使用外部表还是托管表。