【问题标题】:pyspark - how to preserve schemapyspark - 如何保留模式
【发布时间】:2021-06-03 23:20:08
【问题描述】:

我有两个数据源,它们都有相同的列,即 id, product_name 以 csv 和 json 文件的形式出现。我希望将这两个数据帧联合起来,并将它们写在 parquet 文件中。在写出之前先强制执行模式的好方法是什么?我读到 parquet 保留了原始数据的模式,但我想在数据源有错误记录时捕获错误,例如 id 字段应该是一个 int 但有一个字符串。非常感谢您的帮助。

【问题讨论】:

  • 您需要考虑 DataSet 而不是 Dataframe,因为 DataSet 可确保检查数据类型。

标签: python apache-spark pyspark apache-spark-sql parquet


【解决方案1】:

您可以在 scala 中创建一个案例类并在您的 RDD 上应用映射操作,然后使用 toDF() 将其转换为 DF。最后,您可以将 DF 写入 parquet 文件。

Assuming you have data as:
1,x
2,y
3,z

case class demo(id Int, name String)
val df = rdd.map(_.split(",")).map(r=>demo(r(0).toInt,r(1))).toDF()
df.write.parquet("demo")

以上代码在scala中

Scala 案例类的 Python 等价物 - Python equivalent of Scala case class

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 2022-07-29
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    相关资源
    最近更新 更多