当前位置: 首页 > 知识库问答 >
问题:

spark中的Csv自定义架构[重复]

贺恩
2023-03-14

我有一份CSV档案

1577,真,假,假,假,真

我试图用自定义模式加载csv文件,

val customSchema = StructType(Array(
      StructField("id", StringType, nullable = false),
      StructField("flag1", BooleanType, nullable = false),
      StructField("flag2", BooleanType, nullable = false),
      StructField("flag3", BooleanType, nullable = false),
      StructField("flag4", BooleanType, nullable = false),
    StructField("flag6", BooleanType, nullable = false))

    )
    val df =
      spark.read.schema(customSchema).option("header","false").
     option("inferSchema","false").csv("mycsv.csv")

但模式的可正确为null并没有按预期更改。

df.printSchema
root
 |-- id: string (nullable = true)
 |-- flag1: boolean (nullable = true)
 |-- flag2: boolean (nullable = true)
 |-- flag3: boolean (nullable = true)
 |-- flag4: boolean (nullable = true)
 |-- flag6: boolean (nullable = true)

共有2个答案

师曦
2023-03-14

//创建RDD val rowRDD1=spark。sparkContext。textFile(“../yourfile.csv”)

//架构编码为字符串val schemaString=“id flag1 flag2 flag3 flag4 flag5 flag6”

//根据schema val fields=schemaString的字符串生成架构。拆分(“”)。地图(字段名=

val模式=结构类型(字段)

//将RDD(rowRDD1)的记录转换为Row val rowRDD=rowRDD. map(_分割(",")). map(属性=

//将架构应用于RDD val rowDF=spark。createDataFrame(rowRDD,schema)

诸葛雨泽
2023-03-14

请查看以下URL以了解详细信息

Spark DataFrame架构可空字段

如何将nullable=false的模式应用于json读取

解决方法

val rowDF = spark.read.textFile("mycsv.csv")
    val df= spark.read.schema(customSchema).csv(rowDF)
    df.printSchema()
 类似资料:
  • 我在尝试使用Spark简单读取CSV文件时遇到了这个问题。在这样的操作之后,我想确保: 数据类型是正确的(使用提供的模式) 根据提供的架构,标头是正确的 这是我使用的代码,并且有问题: 类型为产品类型,即案例类。这是可行的,但它不会检查列名是否正确,因此我可以提供另一个文件,只要数据类型正确,就不会发生错误,而且我不知道用户提供了错误的文件,但由于某种程度上的巧合,正确的数据类型具有正确的顺序。

  • 问题内容: 创建一个新的数据库架构,并创建一个不存在的数据库架构,并更新现有的数据库架构。如果我想检查数据库模式是否存在,并根据将要创建的数据库模式来检查,该如何实现。目前,我的配置是: 和HibernateEMSDao.java: 这是工作。什么配置可以帮助我实现这一目标?就像是: 检查ID = 1的用户是否存在 如果没有创建架构 感谢致敬。 问题答案: 您可以禁用该选项,检查条件(可能使用普通

  • 主要内容:弹性分布式数据集(RDD),有向无环图(DAG)Spark遵循主从架构。它的集群由一个主服务器和多个从服务器组成。 Spark架构依赖于两个抽象: 弹性分布式数据集(RDD) 有向无环图(DAG) 弹性分布式数据集(RDD) 弹性分布式数据集是可以存储在工作节点上的内存中的数据项组。 弹性:失败时恢复数据。 分布式:数据分布在不同的节点之间。 数据集:数据组。 稍后将详细了解RDD。 有向无环图(DAG) 有向无环图是一种有限的直接图,它对数据

  • 我得到了一个定义字段的警告: 我试图将其更改为: 现在它根本不起作用,因为模式无效。 错误: 知道怎么解决吗?

  • 这实际上与我之前的问题相同,但使用Avro而不是JSON作为数据格式。 我正在使用一个Spark数据框架,它可以从几个不同的模式版本之一加载数据: 我正在使用Spark Avro加载数据。 它可能是版本一文件或版本二文件。但是我希望能够以相同的方式处理它,将未知值设置为“null”。我之前的问题中的建议是设置模式,但是我不想重复自己在文件中编写模式,也不想重复自己在和朋友中编写模式。如何将avro

  • 我试图在spark executor中使用自定义的log4j appender,以便将所有日志转发到Apache Kafka。 大卫