字段中的空值会生成 MatchError

2024-03-10

下面的内容很有趣:

val rddSTG = sc.parallelize(
      List ( ("RTD","ANT","SOYA BEANS", "20161123", "20161123", 4000, "docid11", null, 5) , 
             ("RTD","ANT","SOYA BEANS", "20161124", "20161123", 6000, "docid11",  null, 4) ,
             ("RTD","ANT","BANANAS", "20161124", "20161123", 7000, "docid11", null, 9) ,    
             ("HAM","ANT","CORN", "20161123", "20161123", 1000, "docid22", null, 33),
             ("LIS","PAR","BARLEY", "20161123", "20161123", 11111, "docid33", null, 44)
           )
                          )

val dataframe = rddSTG.toDF("ORIG", "DEST", "PROD", "PLDEPDATE", "PLARRDATE", "PLCOST", "docid", "ACTARRDATE", "mutationseq")
dataframe.createOrReplaceTempView("STG")
spark.sql("SELECT * FROM STG ORDER BY PLDEPDATE DESC").show()

它会产生如下错误:

scala.MatchError: Null (of class scala.reflect.internal.Types$TypeRef$$anon$6)

一旦我将其中一个空值更改为非空值,它就会起作用。我想我明白了,因为在球场上无法做出任何推论,但这确实看起来很奇怪。有想法吗?


问题是 -Anyscala 中的类型太泛型了。在你的情况下NULL被视为ANY type.

Spark 只是不知道如何序列化NULL.

我们应该明确提供一些特定的类型。

由于不能将 null 分配给 Scala 中的基本类型,因此您可以使用 String 来匹配列其他值的数据类型。

所以试试这个:

case class Record(id: Int, name: String, score: Int, flag: String)
val sampleRdd = spark.sparkContext.parallelize(
  Seq(
    (1, null.asInstanceOf[String], 100, "YES"),
    (2, "RAKTOTPAL", 200, "NO"),
    (3, "BORDOLOI", 300, "YES"),
    (4, null.asInstanceOf[String], 400, "YES")))

sampleRdd.toDF("ID", "NAME", "SCORE","FLAG")

这样,df将保留空值。

另一种方式

with case class

case class Record(id: Int, name: String, score: Int, flag: String)

val sampleRdd = spark.sparkContext.parallelize(
  Seq(
    Record(1, null.asInstanceOf[String], 100, "YES"),
    Record(2, "RAKTOTPAL", 200, "NO"),
    Record(3, "BORDOLOI", 300, "YES"),
    Record(4, null.asInstanceOf[String], 400, "YES")))
sampleRdd.toDF()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字段中的空值会生成 MatchError 的相关文章

随机推荐

  • 使用函数而不调用模块[重复]

    这个问题在这里已经有答案了 我将 Canopy 与 Jupyter 笔记本一起使用 我想知道是否有一种方法可以使用模块中的函数而无需调用模块 例如 如果我有 import numpy as np print np sin 2 我希望能够只输
  • 可可移动鼠标

    我正在 Snow Leopard 上编写 Mac OS X 应用程序 我有一个由 NSTimer 定期触发的步骤方法 在这种方法中 我想将鼠标移动到屏幕中央 不按下或释放任何按钮 这是我所拥有的 void step NSTimer time
  • Python 的 os.system() 是否等待进程结束?

    The Python手册 http docs python org library os html os system没有提及是否os system cmd 等待或不等待进程结束 引用手册 在子 shell 中执行命令 字符串 看起来它确实
  • 明天的 Wiki 应包含哪些功能? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 明天的 wiki 应该包含哪些功能 他们如何整合 AJAX 等 Web 2 0 功能 他们目前还缺少哪些其他功能 做什么you想查看您最喜欢的 Wik
  • TextView 上的 OnClick 事件停止 CardView 上的 RippleEffect

    我在 CardView 中有一个 TextView 通过添加 OnClick 事件并添加属性来在 CardView 上启用 Lollipop 的涟漪效果时 android foreground android attr selectable
  • 如何使用FastAPI返回JSON格式的数据?

    我在两者中编写了具有相同功能的相同 API 应用程序FastAPI and Flask 但是 当返回 JSON 时 两个框架之间的数据格式不同 两者使用相同的json库 甚至相同的代码 import json from google clo
  • 为什么 PyLint 会警告没有 __init__ ?

    我们有许多似乎不需要的Python类 init 将它们初始化为空是完全可以接受的 甚至是更好的选择 PyLint 似乎认为这是一件坏事 我是否错过了一些关于为什么没有的见解 init 是难闻的气味吗 或者我应该压制这些警告并克服它 你用这些
  • 如何进行C++对齐数组分配?

    我想修改数组分配 float a new float n 使用对齐的分配器 我倾向于尝试使用placement new 和 posix memalign 或新的 c 11 等效项 但请注意数组的新放置对于数组分配来说是有问题的 https
  • 相机意图/活动 - 避免保存到图库

    我正在使用相机活动捕捉照片 我用MediaStore EXTRA OUTPUT额外参数 图像正确保存到提供的路径 也将其保存到图库文件夹 这样我就可以在 图库 应用程序中查看图像 我可以避免这种情况吗 File file new File
  • 哪些 Git 分支模型适合您?

    我们公司目前正在使用简单的主干 发布 修补程序分支模型 并且希望了解哪些分支模型最适合您的公司或开发流程 工作流程 分支模型 以下是我所看到的三个主要描述 但它们部分相互矛盾 或者不足以解决我们遇到的后续问题 如下所述 因此 我们的团队到目
  • AVAudioRecorder - 正确的 MPEG4 AAC 录制设置

    我有一个实时应用程序 估计有 15 的用户报告记录功能不起作用 我们的测试设备上没有发生这种情况 但报告显示问题在于prepareToRecord 返回 否 我无法找到 AAC 格式的示例设置 我的任何设置是否已关闭 应用程序需要 iOS5
  • 如何将 og:Title og:Image og:Description og:url 信息从 C# 发送到 Facebook

    我的页面上有一个 赞 按钮 单击按钮后 我尝试在 facebook 中发送以下标签信息 以下是我的 赞 按钮框架
  • 如何仅使用音频编解码器制作 iOS VOIP/SIP 应用程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以帮助我消除我的疑虑 我正在尝试实现 SIP 应用程序 我已经设置了 sip 服务器 并且我有我的 sip 帐户的用户名和密码
  • 在 Eclipse 中从 jar 或 war 中排除文件

    有没有办法告诉 Eclipse 不要在 JAR 或 WAR 中包含指定的文件 目录或模式 You can specify includes and excludes by opening the Project Properties alt
  • 如何在不使用 strip_tags 的情况下从变量中删除

    这是我的代码 str div this is the variable div 我想删除它的 html 标签 div 不使用 strip tags 我需要 str this is the variable 因为我的服务器不支持 strip
  • 您能否指定与 Sinatra 重定向一起使用的 HTTP 方法?

    我有这样的事情 post login do end get login do end post register do redirect login I would like to redirect to get login instead
  • 使用 AAD 在 Application Insights REST API 上进行身份验证

    到目前为止 我成功使用 Application Insights REST API 来获取带有 X Api Key 标头的指标 然而 通过我们的新仪表板 抓取多个指标 我们严重达到了 1500 个请求 API 密钥的限制 有些人建议尝试使用
  • Jenkins 中的 WorkflowScript.with

    我在 jenkins 共享库中有一个类 它存储来自 jenkins 管道脚本的 WorkflowScript 类的实例 如下所示 def myTools new my org MyTools this MyTools 的构造函数只是存储 W
  • 如何在 Spring MVC 中将集合属性绑定到表单

    我正在尝试使用 Spring MVC 将我的模型对象之一绑定到表单的字段 一切工作正常 除了模型对象的属性之一是无序集合 做类似的事情
  • 字段中的空值会生成 MatchError

    下面的内容很有趣 val rddSTG sc parallelize List RTD ANT SOYA BEANS 20161123 20161123 4000 docid11 null 5 RTD ANT SOYA BEANS 2016