UDF 导致警告:CachedKafkaConsumer 未在 UninterruptibleThread 中运行 (KAFKA-1894)

     2023-03-10     187

关键词:

【中文标题】UDF 导致警告:CachedKafkaConsumer 未在 UninterruptibleThread 中运行 (KAFKA-1894)【英文标题】:UDF cause warning: CachedKafkaConsumer is not running in UninterruptibleThread (KAFKA-1894) 【发布时间】:2018-06-26 00:16:37 【问题描述】:

在通常的structured_kafka_wordcount.py 代码中,

当我通过udf 将行拆分为单词时,如下所示,

my_split = udf(lambda x: x.split(' '), ArrayType(StringType()))

words = lines.select(
    explode(
        my_split(lines.value)
    )
)

警告将继续显示:

WARN CachedKafkaConsumer: CachedKafkaConsumer 没有运行 不间断线程。当 CachedKafkaConsumer 的方法时它可能会挂起 因 KAFKA-1894 而中断

另一方面,当我通过pyspark.sql.functions.split 将行拆分为单词时,一切正常。

words = lines.select(
    explode(
        split(lines.value, ' ') 
    ) 
)

为什么会发生这种情况以及如何解决警告?

这是我在实践中尝试执行的代码:

pattern = "(.+) message repeated (\\d) times: \\[ (.+)\\]"
prog = re.compile(pattern)


def _unfold(x):
    ret = []
    result = prog.match(x)
    if result:
        log = " ".join((result.group(1), result.group(3)))
        times = result.group(2)
        for _ in range(int(times)):
            ret.append(log)
    else:
        ret.append(x)

    return ret

_udf = udf(lambda x: _unfold(x), ArrayType(StringType()))
lines = lines.withColumn('value', explode(_udf(lines['value'])))

【问题讨论】:

【参考方案1】:

除了拒绝 Python UDF *,您对代码中的这个问题无能为力。正如您在异常消息中看到的那样,UninterruptibleThread 是 Kafka 错误 (KAFKA-1894) 的解决方法,旨在防止在中断 KafkaConsumer 时出现无限循环。

它不与PythonUDFRunner 一起使用(在此处引入特殊情况可能没有意义)。

除非您遇到一些相关问题,否则我个人不会担心。你的 Python 代码永远不会直接与 KafkaConsumer 交互。如果您遇到任何问题,应该在上游修复 - 在这种情况下,我建议创建一个 JIRA ticket。


* 你的 unfold 函数可以用 SQL 函数重写,但这将是一个 hack。将消息计数添加为整数:

from pyspark.sql.functions import concat_ws, col, expr, coalesce, lit, regexp_extract, when

p = "(.+) message repeated (\\d) times: \\[ (.+)\\]"

lines = spark.createDataFrame(
    ["asd message repeated 3 times: [ 12]", "some other message"], "string"
)

lines_with_count = lines.withColumn(
   "message_count", coalesce(regexp_extract("value", p, 2).cast("int"), lit(1)))

用它来explode

exploded = lines_with_count.withColumn(
     "i", 
      expr("explode(split(repeat('1', message_count - 1),''))")
).drop("message_count", "i")

并提取:

exploded.withColumn(
    "value",
    when(
        col("value").rlike(p),
         concat_ws(" ", regexp_extract("value", p, 1), regexp_extract("value", p, 3))
    ).otherwise(col("value"))).show(4, False)


# +------------------+
# |value             |
# +------------------+
# |asd 12            |
# |asd 12            |
# |asd 12            |
# |some other message|
# +------------------+

【讨论】:

Spark UDF 导致作业中止

】SparkUDF导致作业中止【英文标题】:SparkUDFCausingJobAbort【发布时间】:2020-01-1621:50:10【问题描述】:我正在尝试对数据框执行非常简单的UDF操作,但遇到了错误我正在处理一个直接来自PySparkAPI的示例,唯一的区别是我使用了不... 查看详情

Pig 的 UDF 中存在“in”会导致问题

】Pig的UDF中存在“in”会导致问题【英文标题】:Presenceof"in"inPig\'sUDFcausesproblems【发布时间】:2015-06-0217:04:16【问题描述】:我在pig中尝试了我的第一个UDF,并编写了以下函数-packagecom.pig.in.action.assignments.udf;importorg.apache.p... 查看详情

SQL Server 2008 R2 - 标量 UDF 导致无限循环

】SQLServer2008R2-标量UDF导致无限循环【英文标题】:SQLServer2008R2-ScalarUDFresultsininfiniteloop【发布时间】:2012-05-2019:44:45【问题描述】:以下代码会导致无限循环或执行速度非常慢:CREATEFUNCTION[dbo].[CleanUriPart](--Addtheparametersforthefunction... 查看详情

UDF 元组包导致错误“Long 不能转换为元组”

】UDF元组包导致错误“Long不能转换为元组”【英文标题】:UDFbagoftuplescauseserror"LongcannotbecasttoTuple"【发布时间】:2013-12-1820:12:28【问题描述】:我有一个JavaUDF,它接受元组并返回一袋元组。当我对那个包进行操作时(参... 查看详情

鉴于我将 DataBag 溢出到磁盘,为啥此 Pig UDF 会导致“错误:Java 堆空间”?

】鉴于我将DataBag溢出到磁盘,为啥此PigUDF会导致“错误:Java堆空间”?【英文标题】:WhydoesthisPigUDFResultinan"Error:Javaheapspace"GiventhatIamSpillingtheDataBagtoDisk?鉴于我将DataBag溢出到磁盘,为什么此PigUDF会导致“错误:Java堆空间... 查看详情

df.loc 导致 SettingWithCopyWarning 警告消息

】df.loc导致SettingWithCopyWarning警告消息【英文标题】:df.loccausesaSettingWithCopyWarningwarningmessage【发布时间】:2017-06-1117:25:59【问题描述】:我的以下代码行会导致警告:importpandasaspds=pd.DataFrame(np.random.randint(0,100,size=(100,4)),columns=list(... 查看详情

状态恢复发出警告 - 导致莫名的视觉异常

】状态恢复发出警告-导致莫名的视觉异常【英文标题】:StateRestorationemitswarning-Causesinexplicablevisualabberations【发布时间】:2014-05-1323:49:54【问题描述】:到目前为止,互联网上还没有出现这种发生在我身上的状态恢复警告:-[UIVie... 查看详情

警告 C4407 会导致哪些问题?

】警告C4407会导致哪些问题?【英文标题】:WhatproblemscouldwarningC4407cause?【发布时间】:2011-09-2623:29:48【问题描述】:我通过多重继承在一些MFCCWnd派生对象上使用纯虚拟接口得到了一些警告。我相信这是由定义需要为消息映射实... 查看详情

Swift 结构警告“'UnsafeMutableRawPointer' 的初始化导致指针悬空”

】Swift结构警告“\\\'UnsafeMutableRawPointer\\\'的初始化导致指针悬空”【英文标题】:SwiftStructWarning"Initializationof\'UnsafeMutableRawPointer\'resultsinadanglingpointer"Swift结构警告“\'UnsafeMutableRawPointer\'的初始化导致指针悬空”【发布时... 查看详情

空drawRect实现导致内存警告

】空drawRect实现导致内存警告【英文标题】:EmptydrawRectimplementationcausesmemorywarning【发布时间】:2012-10-2310:08:34【问题描述】:我有一个UIView,我用手指在其上绘制UIBezierPath。当我重新缩放视图时(比如在绘制路径之后),会触发... 查看详情

UIAlertView 在启动时导致警告消息

】UIAlertView在启动时导致警告消息【英文标题】:UIAlertViewcausingwarningmessageonstartup【发布时间】:2012-03-1612:39:47【问题描述】:nilMy应用程序需要运行一些检查,然后可能会在我的应用程序激活时显示UIAlertView。为此,我已注册didB... 查看详情

编译器警告是不是会导致智能感知停止工作?

】编译器警告是不是会导致智能感知停止工作?【英文标题】:Doescompilerwarningscauseintellisensetostopworking?编译器警告是否会导致智能感知停止工作?【发布时间】:2010-10-0217:05:54【问题描述】:我正在使用VisualStudio2010(c++),而Intell... 查看详情

无法修复警告检测到重复键:“0”。这可能会导致更新错误

】无法修复警告检测到重复键:“0”。这可能会导致更新错误【英文标题】:UnabletofixawarningDuplicatekeysdetected:\'0\'.Thismaycauseanupdateerror【发布时间】:2020-02-2710:28:23【问题描述】:Vuejs抛出警告说vue.runtime.esm.js?2b0e:619[Vuewarn]:Duplicat... 查看详情

在 UITesting 期间导致内存警告和崩溃的背景图像

】在UITesting期间导致内存警告和崩溃的背景图像【英文标题】:BackgroundImagecausingmemorywarningandcrashduringUITesting【发布时间】:2015-12-1117:29:04【问题描述】:我有一个简单的UITest,它在工具栏上点击一个项目100次,运行没有背景图... 查看详情

嵌套推送动画可能导致导航栏损坏多次警告

】嵌套推送动画可能导致导航栏损坏多次警告【英文标题】:nestedpushanimationcanresultincorruptednavigationbarmultiplewarning【发布时间】:2012-08-0500:39:50【问题描述】:我是ios应用程序开发的新手,遇到多个警告问题。我有一个加载表格... 查看详情

MIME 编码的折叠主题标头在调用 mail() 时导致警告

】MIME编码的折叠主题标头在调用mail()时导致警告【英文标题】:MIMEencodedfoldedSubjectheaderresultsinwarningwhencallingmail()【发布时间】:2013-04-2017:05:14【问题描述】:当主题标头被MIME编码并折叠mail()时,会导致PHP警告:<?php$mime_subject=... 查看详情

具有动态高度的水平 CollectionView 导致 FlowLayout 警告

】具有动态高度的水平CollectionView导致FlowLayout警告【英文标题】:HorizontalCollectionViewwithdynamicheightcauseFlowLayoutwarning【发布时间】:2018-02-1910:31:34【问题描述】:我有一个包含两个图像的横向滚动集合视图。用户可以在运行时更改... 查看详情

MIME 类型警告导致网站图像损坏

】MIME类型警告导致网站图像损坏【英文标题】:MIMETypeWarningCausingBrokenImageonWebsite【发布时间】:2012-05-0713:09:39【问题描述】:这是一个有问题的示例页面:http://estorkdelivery.com/template/view/69我们的网站提供模板预览。一旦您输入... 查看详情