我有一个csv文件
1577,TRUE,FALSE,FALSE,FALSE,TRUE
我尝试使用自定义架构
加载csv文件a.b.SomeClass
但是,架构的正常可空性并没有像预期的那样发生变化。
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")
答案 0 :(得分:0)
请查看以下网址了解详情
解决方法
val rowDF = spark.read.textFile("mycsv.csv")
val df= spark.read.schema(customSchema).csv(rowDF)
df.printSchema()
答案 1 :(得分:0)
//创建RDD val rowRDD1 = spark.sparkContext.textFile(" ../ yourfile.csv&#34)
//模式以字符串val schemaString =" id flag1编码 flag2 flag3 flag4 flag5 flag6"
//基于schema val fields =的字符串生成模式 schemaString.split("")。 map(fieldName => StructField(fieldName,StringType,nullable = true))
val schema = StructType(fields)
//将RDD(rowRDD1)的记录转换为行valRDRDD = rowRDD。 地图(_分裂("&#34))。 map(attributes => Row(attributes(0),attributes(1),..,..))
//将架构应用于RDD val rowDF = spark.createDataFrame(rowRDD,schema)