如何在Qubole metastore中为我的Hive表设置分区位置?我知道这是Spark,但是如何使用MySQL访问它并传递带有修复的SQL脚本呢?
更新:问题是ALTER TABLE table_name PARTITION (partition_spec) SET LOCATION对于>1000个分区运行缓慢。你知道如何直接更新Qubole的转移存储吗?我希望将批处理中的位置传递给转移存储,以提高性能。
发布于 2018-04-11 21:30:35
在您的Spark配置中设置配置单元元存储uris (如果尚未设置)。这可以在Qubole集群设置中完成。
设置具有某些属性的SparkSession
val spark: SparkSession =
SparkSession
.builder()
.enableHiveSupport()
.config("hive.exec.dynamic.partition", "true")
.config("hive.exec.dynamic.partition.mode", "nonstrict")
.getOrCreate()假设亚马逊网络服务,使用spark.sql在S3上定义一个外部表
CREATE EXTERNAL TABLE foo (...) PARTITIONED BY (...) LOCATION 's3a://bucket/path'根据该表模式生成数据帧。
为数据帧注册一个临时表。让我们称它为tempTable
再次使用spark.sql对分区运行insert命令
INSERT OVERWRITE TABLE foo PARTITION(part1, part2)
SELECT x, y, z, part1, part2 from tempTable分区必须位于所选内容的最后
分区位置将放置在S3中的表位置中。
如果您想使用外部分区,请查看接受LOCATION路径的ALTER TABLE [PARTITION (spec)]上的配置单元文档
https://stackoverflow.com/questions/49774992
复制相似问题