【问题标题】:Update Dataframe Schema Read Spark Scala更新 Dataframe Schema 读取 Spark Scala
【发布时间】:2017-06-21 02:09:57
【问题描述】:

我正在尝试从 hdfs 读取模式以加载到我的数据帧中。这允许模式被更新并驻留在 Spark Scala 代码之外。我想知道最好的方法是什么?以下是我目前在代码中的内容。

val schema_example = StructType(Array(
    StructField("EXAMPLE_1", StringType, true),
    StructField("EXAMPLE_2", StringType, true),
    StructField("EXAMPLE_3", StringType, true))

def main(args: Array[String]): Unit = { 
   val df_example = get_df("example.txt", schema_example)
}

def get_df(filename: String, schema: StructType): DataFrame = {
    val df = sqlContext.read
      .format("com.databricks.spark.csv")
      .option("delimiter","~")
      .schema(schema)
      .option("quote", "'")
      .option("quoteMode", "ALL")
      .load(filename)
    df.select(df.columns.map(c => trim(col(c)).alias(c)): _*)
  }

【问题讨论】:

  • 您是否考虑过使用 parquet 数据格式,它同时具有架构和文件中的数据,并支持出色的压缩和优化?

标签: scala apache-spark dataframe schema


【解决方案1】:

最好从 HOCON Config 文件中读取 Schema,它可以在需要时更新。

schema[
  {
     columnName = EXAMPLE_1
     type = string
  },
  {
     columnName = EXAMPLE_2
     type = string
  },
  {
     columnName = EXAMPLE_3
     type = string
  }
]

您可以使用ConfigFactory 阅读此文件。 这将是维护文件架构的更好和更清洁的方式。

【讨论】:

    猜你喜欢
    • 2021-02-03
    • 2020-08-10
    • 2019-06-13
    • 2016-09-13
    • 2021-10-08
    • 1970-01-01
    • 2017-06-02
    • 2016-02-27
    • 1970-01-01
    相关资源
    最近更新 更多