scala – 如何自动化StructType创建以将RDD传递给DataFrame
发布时间:2020-12-16 18:50:33 所属栏目:安全 来源:网络整理
导读:我想将RDD保存为镶木地板文件.为此,我将RDD传递给DataFrame,然后使用结构将DataFrame保存为镶木地板文件: val aStruct = new StructType(Array(StructField("id",StringType,nullable = true),StructField("role",nullable = true))) val newDF = sqlContex
我想将RDD保存为镶木地板文件.为此,我将RDD传递给DataFrame,然后使用结构将DataFrame保存为镶木地板文件:
val aStruct = new StructType(Array(StructField("id",StringType,nullable = true),StructField("role",nullable = true))) val newDF = sqlContext.createDataFrame(filtered,aStruct) 问题是如何为所有列自动创建一个Struct,假设它们都是StringType?另外,nullable = true是什么意思?这是否意味着所有空值都将被Null取代? 解决方法
为什么不使用内置的toDF?
scala> val myRDD = sc.parallelize(Seq(("1","roleA"),("2","roleB"),("3","roleC"))) myRDD: org.apache.spark.rdd.RDD[(String,String)] = ParallelCollectionRDD[60] at parallelize at <console>:27 scala> val colNames = List("id","role") colNames: List[String] = List(id,role) scala> val myDF = myRDD.toDF(colNames: _*) myDF: org.apache.spark.sql.DataFrame = [id: string,role: string] scala> myDF.show +---+-----+ | id| role| +---+-----+ | 1|roleA| | 2|roleB| | 3|roleC| +---+-----+ scala> myDF.printSchema root |-- id: string (nullable = true) |-- role: string (nullable = true) scala> myDF.write.save("myDF.parquet") nullable = true只表示指定的列可以包含空值(这对于通常没有空值的int列很有用–Innt没有NA或null). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |