背景
我有8k个实木复合地板文件,它们代表要按特定列存储的表,从而创建了一组新的8k实木复合地板文件。我想这样做,以便从存储桶列上的其他数据集联接将不需要重新改组。我正在处理的文档在这里:
问题
输出存储桶中的实木复合地板文件的最简单方法是什么?我想做这样的事情:
df.write()
.bucketBy(8000, "myBucketCol")
.sortBy("myBucketCol")
.format("parquet")
.save("path/to/outputDir");
但是根据上面链接的文档:
加括号和排序仅适用于持久表
我猜我需要使用saveAsTable
而不是save
。但是saveAsTable
并没有采取任何措施。我需要在调用saveAsTable
之前创建表吗?是在该表创建语句中声明了实木复合地板文件应写入的位置吗?如果是这样,我该怎么办?
答案 0 :(得分:0)
spark.sql("drop table if exists myTable");
spark.sql("create table myTable ("
+ "myBucketCol string, otherCol string ) "
+ "using parquet location '" + outputPath + "' "
+ "clustered by (myBucketCol) sorted by (myBucketCol) into 8000 buckets"
);
enlDf.write()
.bucketBy(8000, "myBucketCol")
.sortBy("myBucketCol")
.format("parquet")
.mode(SaveMode.Append)
.saveAsTable("myTable");