我在配置单元中创建了一个外部分区表。在日志中它显示numinputrows。这意味着查询正在工作并发送数据。但当我用直线和查询连接到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
}
有什么问题吗?我无法理解。
2条答案
按热度按时间23c0lvtd1#
它会检查表的位置,如果存在新的分区,则会添加分区。
在spark过程中,添加此步骤以便从配置单元进行查询。
1cosmwyk2#
流式处理作业正在将新分区写入表\u位置。但是Hive元存储库并没有意识到这一点。
在表上运行select查询时,配置单元将检查metastore以获取表分区列表。由于metastore中的信息已过时,因此数据不会显示在结果中。
你得跑了-
来自hive/spark的用新分区信息更新元存储的命令。