我试图对数据存储进行一些性能优化。我们的想法是使用hive的bucketing / clustering来存储可用的设备(基于列id)。我目前的方法是将基于镶木地板文件的外部表格中的数据插入到表格中。因此,它应用了分组。
INSERT INTO TABLE bucketed_table PARTITION (year, month, day)
SELECT id, feature, value, year, month, day
FROM parquet_table ;
我想通过直接从PySpark 2.1直接将数据摄取到该表中来消除这一步骤。 使用SparkSQL执行相同的语句会导致不同的结果。按子句添加集群
INSERT INTO TABLE bucketed_table PARTITION (year, month, day)
SELECT id, feature, value, year, month, day
FROM parquet_table cluster by id ;
仍会导致不同的输出文件。
这导致两个问题: 1)从spark插入聚类蜂巢表的正确方法是什么? 2)使用clustered by语句进行编写是否能够使hive Metastore对数据产生好处?