如何在qubole metastore中为我的配置单元表设置分区位置?我知道这是mysql数据库,但是如何访问它并使用spark传递带有修复的sql脚本呢?upd:问题是alter table table\u name[partition(partition\u spec)]set location对于大于1000个分区工作缓慢。你知道如何直接为qubole更新metastore吗?我希望将批处理中的位置传递给metastore以提高性能。
23c0lvtd1#
如果尚未设置,请在spark配置中设置配置单元元存储URI。这可以在qubole集群设置中完成。使用一些属性设置sparksession
val spark: SparkSession = SparkSession .builder() .enableHiveSupport() .config("hive.exec.dynamic.partition", "true") .config("hive.exec.dynamic.partition.mode", "nonstrict") .getOrCreate()
假设aws,使用 spark.sql ```CREATE EXTERNAL TABLE foo (...) PARTITIONED BY (...) LOCATION 's3a://bucket/path'
spark.sql
根据表模式生成Dataframe。 为Dataframe注册临时表。我们就叫它吧 `tempTable` 对分区运行insert命令,再次使用 `spark.sql` ``` INSERT OVERWRITE TABLE foo PARTITION(part1, part2) SELECT x, y, z, part1, part2 from tempTable
分区必须排在选择的最后分区位置将放在s3中的表位置中。如果要使用外部分区,请查看上的配置单元文档 ALTER TABLE [PARTITION (spec)] 接受一个 LOCATION 路径
ALTER TABLE [PARTITION (spec)]
LOCATION
1条答案
按热度按时间23c0lvtd1#
如果尚未设置,请在spark配置中设置配置单元元存储URI。这可以在qubole集群设置中完成。
使用一些属性设置sparksession
假设aws,使用
spark.sql
```CREATE EXTERNAL TABLE foo (...) PARTITIONED BY (...) LOCATION 's3a://bucket/path'
分区必须排在选择的最后
分区位置将放在s3中的表位置中。
如果要使用外部分区,请查看上的配置单元文档
ALTER TABLE [PARTITION (spec)]
接受一个LOCATION
路径