当前位置: 首页 > 知识库问答 >
问题:

在分区配置单元表中插入spark Dataframe而不覆盖数据

魏雅惠
2023-03-14

我使用partitionBy(“columnname”)、insertInto(“hivetable”),但这给我带来了partitionBy和intsertInto不能同时使用的问题。

共有1个答案

阎丰
2023-03-14

不能使用insertinto运算符执行partitionby。PartitionBy将现有数据分区到多个配置单元分区中。insertinto用于将数据插入预定义分区。

因此,您可以这样做

spark.range(10)
.withColumn("p1", 'id % 2)
.write
.mode("overwrite")
.partitionBy("p1")
.saveAsTable("partitioned_table")

val insertIntoQ = sql("INSERT INTO TABLE 
partitioned_table PARTITION (p1 = 4) VALUES 41, 42")

如果需要动态添加分区,则需要设置hive.exec.dynamic.partition

hiveContext.setConf("hive.exec.dynamic.partition", "true")
df.write().mode(SaveMode.Append).partitionBy("colname").saveAsTable("Table")
 类似资料:
  • 非常感谢任何帮助。

  • 我正在与AWS工作,我有使用Spark和Hive的工作流。我的数据是按日期分区的,所以每天我的S3存储中都有一个新分区。我的问题是,当有一天加载数据失败时,我不得不重新执行那个分区。接下来编写的代码是: 在我的流动中发生了什么?如果我使用savemode.overwrite,完整的表将被删除,并且只保存分区。如果我使用savemode.append,我可能会有重复的数据。 我想要的是:在表中,分区

  • 我正在编写一个将HBASE-0.98.19与HIVE-1.2.1集成的示例。我已经使用以下命令在hbase中创建了一个表 然后创建了'testemp'用于将数据导入到'hbase_table_emp'。下面的代码显示了创建'testemp'表的方法 到现在,一切正常。但当我运行命令时 ps:类路径中包含了hbase.jar、zookeeper.jar和guava.jar。 提前道谢。

  • 查询示例: 典型错误消息: 处理语句时出错:失败:执行错误,从org.apache.hadoop.hive.ql.exec.mr.MapredTask返回代码2 问题2:当我运行命令?我是否只运行相同的命令,但使用STRING而不是bigint?**完整错误消息:**

  • 插入覆盖失败,出现空指针异常- 失败:NullPointerException为空