无法从 Spark 插入到 Hive 分区表中



我在hive中创建了一个外部分区表。 在日志中,它显示数字输入行。这意味着查询正在工作并发送数据。但是当我使用直线和查询连接到 Hive 时,select * or count(*)它总是空的。

def hiveOrcSetWriter[T](event_stream: Dataset[T])( implicit spark: SparkSession): DataStreamWriter[T] = {
import spark.implicits._
val hiveOrcSetWriter: DataStreamWriter[T] = event_stream
.writeStream
.partitionBy("year","month","day")
.format("orc")
.outputMode("append")
.option("compression", "zlib")
.option("path", _table_loc)
.option("checkpointLocation", _table_checkpoint)
hiveOrcSetWriter
}

可能是什么问题?我无法理解。

msck repair table tablename

它放弃并检查表的位置,并在新分区退出时添加分区。

在 Spark 过程中,添加此步骤以便从 hive 进行查询。

流式处理作业正在将新分区写入table_location。但 Hive 元存储并不知道这一点。

对表运行选择查询时,Hive 会检查元存储以获取表分区列表。由于元存储中的信息已过时,因此数据不会显示在结果中。

你需要运行 -

ALTER TABLE <TABLE_NAME> RECOVER PARTITIONS

命令,以使用新的分区信息更新元存储。

相关内容

  • 没有找到相关文章

最新更新