gpt4 book ai didi

scala - 如何从 CSV 文件创建架构并将该架构持久化/保存到文件中?

转载 作者:行者123 更新时间:2023-12-04 16:48:25 25 4
gpt4 key购买 nike

我有 10 列的 CSV 文件。半字符串和半是整数。

什么是 Scala 代码:

  • 创建(推断)架构
  • 将该模式保存到文件

  • 到目前为止我有这个:
    import org.apache.spark.sql.SQLContext

    val sqlContext = new SQLContext(sc)
    val df = sqlContext.read
    .format("com.databricks.spark.csv")
    .option("header", "true") // Use first line of all files as header
    .option("inferSchema", "true") // Automatically infer data types
    .load("cars.csv")

    保存该模式的最佳文件格式是什么?是 JSON 吗?

    目标是 - 我只想创建一次架构,下次从文件加载而不是即时重新创建它。

    谢谢。

    最佳答案

    DataType API 提供了所有必需的实用程序,因此 JSON 是一个自然的选择:

    import org.apache.spark.sql.types._
    import scala.util.Try

    val df = Seq((1L, "foo", 3.0)).toDF("id", "x1", "x2")
    val serializedSchema: String = df.schema.json


    def loadSchema(s: String): Option[StructType] =
    Try(DataType.fromJson(s)).toOption.flatMap {
    case s: StructType => Some(s)
    case _ => None
    }

    loadSchema(serializedSchema)

    根据您的要求,您可以使用 standard Scala methods to write this to file ,或破解 Spark RDD :
    val schemaPath: String = ???

    sc.parallelize(Seq(serializedSchema), 1).saveAsTextFile(schemaPath)
    val loadedSchema: Option[StructType] = sc.textFile(schemaPath)
    .map(loadSchema) // Load
    .collect.headOption.flatten // Make sure we don't fail if there is no data

    有关 Python 等效项,请参阅 Config file to define JSON Schema Struture in PySpark

    关于scala - 如何从 CSV 文件创建架构并将该架构持久化/保存到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42004245/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com