Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sparklyr删除/更新分区_R_Hadoop_Apache Spark_Sparklyr_Hadoop Partitioning - Fatal编程技术网

使用sparklyr删除/更新分区

使用sparklyr删除/更新分区,r,hadoop,apache-spark,sparklyr,hadoop-partitioning,R,Hadoop,Apache Spark,Sparklyr,Hadoop Partitioning,我正在使用SparkyR中的spark_write_table函数将表写入HDF,并使用partition_by参数定义如何存储它们: R> my_table %>% spark_write_table(., path="mytable", mode="append", partition_by=c("col1", "col2") ) 但是,现在我只想通过修改一个分区来

我正在使用SparkyR中的spark_write_table函数将表写入HDF,并使用partition_by参数定义如何存储它们:

 R> my_table %>% 
       spark_write_table(., 
             path="mytable",
             mode="append",
             partition_by=c("col1", "col2")
        )
但是,现在我只想通过修改一个分区来更新表,而不是再次写入整个表

在Hadoop SQL中,我将执行以下操作:

INSERT INTO TABLE mytable
PARTITION (col1 = 'my_partition')
VALUES (myvalues..)
是否有一个同等的选项可以正确地执行此操作?我在文档中找不到它


重复说明:这个问题是关于如何使用SparkyR函数在R中执行此操作的,而另一个问题是关于一般配置单元语法的

谢谢大家的评论

似乎没有办法直接用Sparkyr实现这一点,但这就是我要做的

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

> 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 "
   )

我不确定这是否在中可用,因此可能不在中,因为它是一个包装器。唯一的解决方案(通常使用spark)可能是在分区目录中写入。@eliasah谢谢,但我认为没有选择使用Sparkyr,我将不得不直接使用SQL。将分区保存到一个临时表中,然后调用INSERT INTO table mytable partition。我不认为它与metastore一起工作,正如您所说的@user8371915Sorry,但我不认为这个问题是重复的,因为我明确地问了如何在R中使用Sparkyr实现这一点。另一个相关的问题是关于如何在Spark中实现它,但我是用一个小动词来询问它的。