首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sparklyr删除/更新分区

使用sparklyr删除/更新分区
EN

Stack Overflow用户
提问于 2018-01-26 18:13:47
回答 1查看 679关注 0票数 2

我使用sparklyr的spark_write_table函数将表写入到HDFS中,并使用partition_by参数定义如何存储它们:

代码语言:javascript
复制
 R> my_table %>% 
       spark_write_table(., 
             path="mytable",
             mode="append",
             partition_by=c("col1", "col2")
        )

但是,现在我想通过只更改一个分区来更新表,而不是再次写入整个表。

在Hadoop-SQL中,我会这样做:

代码语言:javascript
复制
INSERT INTO TABLE mytable
PARTITION (col1 = 'my_partition')
VALUES (myvalues..)

在sparklyr中是否有相应的选项可以正确完成此操作?我在文档中找不到它。

重复说明:这个问题特别是关于如何在R中使用sparklyr函数来做这件事,而另一个问题是关于一般的配置单元语法

EN

回答 1

Stack Overflow用户

发布于 2018-01-26 23:58:15

感谢大家的评论。

似乎没有办法直接使用sparklyr做到这一点,但这就是我要做的。

简而言之,我将把新分区文件保存在一个临时表中,使用Hadoop SQL命令删除分区,然后使用另一个SQL命令将其插入到临时表中。

代码语言:javascript
复制
> dbGetQuery(con, 
   "ALTER TABLE mytable DROP IF EXISTS PARTITION (mycol='partition1');")

> spark_write_table(new_partition, "tmp_partition_table")

> dbGetQuery(con, 
      "INSERT VALUES INTO TABLE mytable
       PARTITION (mycol='partition1') 
       SELECT * 
       FROM tmp_partition_table "
   )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48459322

复制
相关文章

相似问题

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