我是靠谱客的博主 孤独枕头,最近开发中收集的这篇文章主要介绍spark写表指定外部表_如何将Spark结构化流式 DataFrame 插入Hive外部表/位置?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Spark结构化流不支持将流查询的结果写入配置单元表。

scala> println(spark.version)

2.4.0

val sq = spark.readStream.format("rate").load

scala> :type sq

org.apache.spark.sql.DataFrame

scala> assert(sq.isStreaming)

scala> sq.writeStream.format("hive").start

org.apache.spark.sql.AnalysisException: Hive data source can only be used with tables, you can not write files of Hive data source directly.;

at org.apache.spark.sql.streaming.DataStreamWriter.start(DataStreamWriter.scala:246)

... 49 elided

如果不支持目标系统(aka sink),则可以使用foreach和foreachbatch操作(突出显示mine):

foreach和foreachbatch操作允许您对流式查询的输出应用任意操作和写入逻辑。它们有稍微不同的用例——虽然foreach允许在每一行上自定义写入逻辑,但是foreach batch允许在每个微批的输出上执行任意操作和自定义逻辑。

我认为foreachbatch是你最好的选择。

import org.apache.spark.sql.DataFrame

sq.writeStream.foreachBatch { case (ds: DataFrame, batchId: Long) =>

// do whatever you want with your input DataFrame

// incl. writing to Hive

// I simply decided to print out the rows to the console

ds.show

}.start

还有一个ApacheHiveWarehouse join器,我从未使用过,但它似乎有一些帮助。

最后

以上就是孤独枕头为你收集整理的spark写表指定外部表_如何将Spark结构化流式 DataFrame 插入Hive外部表/位置?的全部内容,希望文章能够帮你解决spark写表指定外部表_如何将Spark结构化流式 DataFrame 插入Hive外部表/位置?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部