为了账号安全,请及时绑定邮箱和手机立即绑定

Pyspark 从具有不同列的行/数据创建 DataFrame

Pyspark 从具有不同列的行/数据创建 DataFrame

HUH函数 2021-09-01 21:09:20
我有多个键/值对的数据/行,键的数量未知——有些重叠,有些不重叠——我想从中创建一个 Spark DataFrame。我的最终目标是从此 DataFrame 写入 CSV。我对输入数据/行具有灵活性:最容易的是它们是 JSON 字符串,但可以转换,因可能重叠的键而异:{"color":"red", "animal":"fish"}{"color":"green", "animal":"panda"}{"color":"red", "animal":"panda", "fruit":"watermelon"}{"animal":"aardvark"}{"color":"blue", "fruit":"apple"}理想情况下,我想从这些数据中创建一个如下所示的 DataFrame:-----------------------------color | animal   | fruit-----------------------------red   | fish     | nullgreen | panda    | nullred   | panda    | watermelonnull  | aardvark | nullblue  | null     | apple-----------------------------值得注意的是,没有特定键的数据/行是null,并且数据/行中的所有键都表示为列。我对 Spark 的许多基础知识感到相对舒服,但是我无法想象一个有效地使用我的 RDD/DataFrame 和键/值对——但未知数量的列和键——并使用这些键创建一个 DataFrame 的过程列。高效,因为如果可能的话,我想避免创建一个所有输入行都保存在内存中的对象(例如单个字典)。再一次,编写 CSV 的最终目标是,我假设创建一个 DataFrame 是实现这一目标的合乎逻辑的步骤。另一个皱纹:一些数据将是多值的,例如:{"color":"pink", "animal":["fish","mustang"]}{"color":["orange","purple"], "animal":"panda"}使用提供的分隔符,例如/为了避免与,用于分隔列的冲突,我想在列的输出中分隔这些,例如:------------------------------------color         | animal       | fruit------------------------------------pink          | fish/mustang | nullorange/purple | panda        | null------------------------------------一旦有了解决主要问题的方法,我相信我可以解决这部分问题,但无论如何都将其扔掉,因为这将是问题的一个方面。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信