Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 是否可以根据用于划分数据集的列的值动态命名零件XXXX文件?_Scala_Apache Spark_Hadoop - Fatal编程技术网

Scala 是否可以根据用于划分数据集的列的值动态命名零件XXXX文件?

Scala 是否可以根据用于划分数据集的列的值动态命名零件XXXX文件?,scala,apache-spark,hadoop,Scala,Apache Spark,Hadoop,我有一个val dataset=dataset[FeedData],其中FeedData类似于案例类FeedData(feed:String,data:XYZ) 我想避免对文件进行后处理,因此我决定调用dataset.repartition($“feed”).json(“s3a://…”),以便每个feed都位于不同的文件中。问题是这些文件仍然按照XXXX部分的内容命名,因此我无法轻松地为给定提要选择相关文件,除非a)打开它们以检查feed内部的值,或者b)对文件进行后期处理以使其更友好 我希望

我有一个
val dataset=dataset[FeedData]
,其中
FeedData
类似于
案例类FeedData(feed:String,data:XYZ)

我想避免对文件进行后处理,因此我决定调用
dataset.repartition($“feed”).json(“s3a://…”)
,以便每个
feed
都位于不同的文件中。问题是这些文件仍然按照XXXX部分的内容命名,因此我无法轻松地为给定提要选择相关文件,除非a)打开它们以检查
feed
内部的值,或者b)对文件进行后期处理以使其更友好

我希望文件看起来像
部分XXXX-{feed}
而不是
部分XXXX

是否可以根据用于对数据集进行分区的列
feed
的值动态命名分区文件

背景:

我找到的答案提到了一个
saveAsNewAPIHadoopFile()
方法,在这个方法中,我可以为自己的文件命名实现扩展一些相关的类


有谁能帮助我理解这个方法,如何从
数据集访问它,并告诉我是否可以将所需的信息(
feed
)投射到我的实现中,以动态命名分区?

我试图以错误的方式进行操作:

dataset.repartition($“colName”).write.format(“json”).save(path)

正确的方法是:

dataset.write.partitionBy(“colName”).format(“json”).save(path)


区别在于您应该在
.write
之后调用
.partitionBy
。生成的目录如下所示:
colName=value/part XXXX


有关更多信息,请参阅。

它们实际上有完全不同的用途,请参阅