首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spark在Qubole metastore中设置分区位置

使用Spark在Qubole metastore中设置分区位置
EN

Stack Overflow用户
提问于 2018-04-11 20:20:35
回答 1查看 164关注 0票数 0

如何在Qubole metastore中为我的Hive表设置分区位置?我知道这是Spark,但是如何使用MySQL访问它并传递带有修复的SQL脚本呢?

更新:问题是ALTER TABLE table_name PARTITION (partition_spec) SET LOCATION对于>1000个分区运行缓慢。你知道如何直接更新Qubole的转移存储吗?我希望将批处理中的位置传递给转移存储,以提高性能。

EN

回答 1

Stack Overflow用户

发布于 2018-04-11 21:30:35

在您的Spark配置中设置配置单元元存储uris (如果尚未设置)。这可以在Qubole集群设置中完成。

设置具有某些属性的SparkSession

代码语言:javascript
复制
val spark: SparkSession =
    SparkSession
        .builder()
        .enableHiveSupport()
        .config("hive.exec.dynamic.partition", "true")
        .config("hive.exec.dynamic.partition.mode", "nonstrict")
        .getOrCreate()

假设亚马逊网络服务,使用spark.sql在S3上定义一个外部表

代码语言:javascript
复制
CREATE EXTERNAL TABLE foo (...) PARTITIONED BY (...) LOCATION 's3a://bucket/path'

根据该表模式生成数据帧。

为数据帧注册一个临时表。让我们称它为tempTable

再次使用spark.sql对分区运行insert命令

代码语言:javascript
复制
INSERT OVERWRITE TABLE foo PARTITION(part1, part2)
SELECT x, y, z, part1, part2 from tempTable

分区必须位于所选内容的最后

分区位置将放置在S3中的表位置中。

如果您想使用外部分区,请查看接受LOCATION路径的ALTER TABLE [PARTITION (spec)]上的配置单元文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49774992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档