保存之前和加载之后的数据框状态 - 有什么不同?

2023-12-19

我有一个包含一些 SQL 表达式(合并、case/when 等)的 DF。 我后来尝试映射/平面映射这个 DF,在那里我得到了Task not serializable由于字段包含 SQL 表达式而导致错误。

(为什么我需要 map/flatMap 这个 DF 是一个单独的问题)

当我将此 DF 保存到 Parquet 文件并随后加载时,错误消失了,我可以转换为 RDD 并进行转换,没有问题!

保存前和加载后的 DF 有什么不同?以某种方式,SQL 表达式必须已被评估并持久化。我怎样才能实现同样的目标without保存/加载? (df.perists() 没有成功;()

这是测试代码:

val data = Seq( (1, "sku1", "EUR", 99.0, 89.0), (2, "sku2", "USD", 89.0, 79.0),  (3, "sku3", "USD", 49.0, 39.9) )
val aditionalStuffForCertainSKUsMap = Map("sku1" -> List(10, 20, 30))

val listedPrice = coalesce(
    List("EUR", "USD").map(c => when($"currency" === c, col(c)).otherwise(lit(null))): _*)

val df = (sc.parallelize(data)
    .toDF("id", "sku", "currency", "EUR", "USD")
    .withColumn("price_in_given_currency",  when($"currency" === "EUR", $"EUR"*2).otherwise(1))
 //   .withColumn("fails_price_in_given_currency", listedPrice)
)
df.show
df.write.mode(SaveMode.Overwrite).parquet("test_df")

数据包含一个sku有些 SKU 代表捆绑包,例如 sku1,我想为其添加一些其他字段到 DF。仅当我尝试访问此 Map[String, List[Int]] 时在 map() 中我收到了投诉fails_price_in_given_currency列,但情况并非如此price_in_given_currency:

// If I load the df first, the map() works even when using `fails_price_in_given_currency`
//val df = sqlContext.read.parquet("test_df") 

val out = df.map(d => {
  val key = d.getAs[String]("sku")
  aditionalStuffForCertainSKUsMap.getOrElse(key, None)
})

当我使用时抛出错误fails_price_in_given_currency反而。如果我加载df之前的地图,它会再次运行!


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保存之前和加载之后的数据框状态 - 有什么不同? 的相关文章

随机推荐

  • Google Places 自动完成、地理编码和地址验证

    我的代码遇到了挑战 我有一个 JS 和 HTML 代码 允许用户输入他们的地点地址并将其提交到我的 Firebase 数据库 无论用户在地址输入中输入什么 代码都应首先检查它是否是有效输入 而不是像 thsd 这样的随机单词 从技术上讲 t
  • Laravel 5.1 - 路线不起作用

    我的路线有问题 我有我的路线 Route get dashboard password UserController password Route post dashboard updatepassword UserController u
  • 如何在Nuxt3配置中配置vite HMR端口?

    我在 Docker compose 设置中使用 Nuxt3 其中端口 8001 是通过 nginx 反向代理通道运行 Nuxt3 的节点容器的可访问端口 我的 nuxt config ts 看起来像这样 import defineNuxtC
  • ActivityUnitTestCase 和 ActivityInstrumentationTestCase2 之间的区别

    我是 Android Instrumentation 案例的新手 我一直在查看 API 示例 发现有时我们使用 ActivityUnitTestCase 和 ActivityInstrumentationTestCase2 两者有什么区别
  • 不同类型的数据库索引?

    我正在尝试编译非系统特定数据库索引的列表 我研究过 Oracle DB2 MySQL Postgres 和 Sybase 几乎每个资源都有不同的列表 到目前为止我已经看到 clustered multi dimensional cluste
  • 如何使用javascript中的函数应用复选框?

    如何使用javascript中的函数应用复选框 未选中复选框时如何隐藏具有特定标签的帖子 对象 我只需要知道如何设置在打开页面时自动检查复选框的功能以及如何隐藏带有特定标签的帖子 对象的复选框 申请是否正确 display none or
  • 当新文件添加到监视文件夹时,Java NIO 监视服务创建了“ENTRY_CREATE”和“ENTRY_MODIFY”

    我使用 java nio file WatchService 看到了一个奇怪的行为 不确定这是预期的行为 问题是我有一个向 WatchService 注册的文件夹 当我将一个新文件复制到此文件夹中时 会生成两个 WatchEvent 每个事
  • 下载当前 html 文件

    怎么可能让用户下载当前的html页面呢 网页使用ajax加载文本 所以我的代码不起作用 因为它下载了页面的原始状态 a href URL OF THIS PAGE Download a a href Download a 这是如何运作的 我
  • 如何确定 Java 中泛型字段的类型?

    我一直在尝试确定类中字段的类型 我已经看过所有的内省方法 但还没有完全弄清楚如何去做 这将用于从 java 类生成 xml json 我已经查看了这里的一些问题 但还没有找到我真正需要的 Example class Person publi
  • 在 Bootstrap 3 中将页面宽度设置为最大 970px

    我正在使用 Bootstrap 3 构建一个可以在移动设备和桌面上良好显示的网站 客户告诉我页面的最大宽度只能是970px 我如何使用 Bootstrap 3 执行此操作以确保 页面仍然位于浏览器屏幕中央吗 Bootstrap 3 中的所有
  • Android 在两个视图之间放置一个图像视图

    我需要创建一个如图所示的布局 带箭头的圆形按钮需要恰好位于蓝色和灰色背景之间 我在没有精确指定边距的情况下放置它时遇到困难 这是我不想做的事情 因为不能保证它在所有分辨率和设备上都会看起来很好 我希望有一个 xml 示例 Thanks 使用
  • 如何在不指定确切按键的情况下读取用户按下的按键?

    基本上我需要的是如何缩短我的代码的想法 所以我现在拥有的是一个 IF 系列来获取用户按下的键 if Input GetKeyDown KeyCode I AddToBuffer I else if Input GetKeyDown KeyC
  • Firebase:如何有效跟踪用户/记录更改历史记录

    关于这个问题有很多讨论 但几乎都是在 SQL 中处理 所以据我所知 其中很多内容对于我的问题来说是不适用的 我正在编写一个 CRUD 应用程序react redux a firebase后端 AWS lambda必要时发挥作用 我的用户将有
  • import 和 require 一起使用

    最近我进入了这个 import foo require foo 这听起来很奇怪 因为我通常这样使用 require var foo require foo 或者像这样导入 import foo from foo 那么 这有什么意义呢 查看导
  • eclipse已安装但无法启动java返回退出代码= 1

    我最近安装了 eclipse dsl juno SR1 win32 x86 64 并在提取文件后 当我开始运行 Eclipse 时 出现以下错误 Java 已启动但返回退出代码 1 所需的 java 版本 1 5 我检查了原因 也尝试重新安
  • EF Core 1.0 - Include() 生成多个查询

    我正在使用 EF 7 0 0 rc1 final 以下语句在服务器上生成多个查询 这是正常现象还是我遗漏了什么 Group myGroup dbContext Set
  • 使用 GhostScript 转换为 CMYK 时,CMY 通道上显示黑色

    我正在尝试使用名为的库生成 PDFwkhtml转pdf https wkhtmltopdf org 创建 RGB pdf 然后我使用 Ghostscript 将其转换为 CMYK 格式 但是 pdf 中的黑色文本不是纯黑色 cmyk 0 0
  • 如何动态分配 github 操作中的运行值

    name test if conditions name test if conditions on push branches master test env TEST BRANCH test EMPTY VALUE jobs test
  • 从字符串中过滤字符[重复]

    这个问题在这里已经有答案了 我需要创建一个函数 它接受两个字符串作为输入 并返回 str 1 的副本 其中删除了 str2 中的所有字符 第一件事是用 for 循环迭代 str1 然后与 str2 进行比较 为了完成减法 我应该创建一个第三
  • 保存之前和加载之后的数据框状态 - 有什么不同?

    我有一个包含一些 SQL 表达式 合并 case when 等 的 DF 我后来尝试映射 平面映射这个 DF 在那里我得到了Task not serializable由于字段包含 SQL 表达式而导致错误 为什么我需要 map flatMa