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

将dataframe架构加载到元数据表

史骏
2023-03-14

用例是读取一个文件并在其上创建一个数据帧。之后,获取该文件的架构并存储到DB表中。

例如,我只是创建一个case类并获取printschema,但是我无法从中创建数据帧

下面是一个示例代码

case class Employee(Name:String, Age:Int, Designation:String, Salary:Int, ZipCode:Int)

val spark = SparkSession
.builder()
.appName("Spark SQL basic example")
.config("spark.master", "local")
.getOrCreate()

import spark.implicits._
val EmployeesData = Seq( Employee("Anto",   21, "Software Engineer", 2000, 56798))
val Employee_DataFrame = EmployeesData.toDF
val dfschema = Employee_DataFrame.schema

现在dfSchema是一个结构类型,并希望将其转换为两列的数据帧,如何实现

共有2个答案

叶书
2023-03-14

试试这个-

//-- For local file
val rdd = spark.read.option("wholeFile", true).option("delimiter",",").csv(s"file:///file/path/file.csv").rdd

val schema = StructType(Seq(StructField("Name", StringType, true),
                            StructField("Age", IntegerType, true),
                            StructField("Designation", StringType, true),
                            StructField("Salary", IntegerType, true),
                            StructField("ZipCode", IntegerType, true)))

val df = spark.createDataFrame(rdd,schema)
曾苗宣
2023-03-14

火花

为了将架构保存为字符串格式,可以使用StructType的toDDL方法。在您的情况下,DDL格式应为:

`Name` STRING, `Age` INT, `Designation` STRING, `Salary` INT, `ZipCode` INT

保存模式后,您可以从数据库中加载它并将其用作结构ype.fromDDL(my_schema),这将返回一个结构类型实例,您可以使用该实例使用spark.createDataFrame创建新的数据框架,如@Ajay已经提到的。

同样有用的是要记住,您总是可以通过以下方式提取给定案例类的模式:

import org.apache.spark.sql.catalyst.ScalaReflection
val empSchema = ScalaReflection.schemaFor[Employee].dataType.asInstanceOf[StructType]

然后您可以使用empSchema.toDDL获取DDL表示。

火花

对于火花

val empSchema = ScalaReflection.schemaFor[Employee].dataType

empSchema.simple字符串的示例输出:

struct<Name:string,Age:int,Designation:string,Salary:int,ZipCode:int>
 类似资料:
  • 当我说 table.drop() / metadata.drop_all() sqlacalchemy是否支持alter table、create view、create trigger、schema升级功能? 如何根据表对象的依赖关系对其排序? 如何以字符串形式获取创建表/删除表输出? 我如何子类表/列以提供某些行为/配置? 当我说 table.drop() / metadata.drop_al

  • 问题内容: 我有一个719mb的CSV文件,看起来像: 我想加载到熊猫DataFrame中。现在我知道csv方法有负载: 但我特别想将其加载为“ MultiIndex” DataFrame,其中from和to是索引: 所以最后以: 等等。我不确定该怎么做? 问题答案: 您可以使用: 我曾经摆脱标题行中那些烦人的空格的地方。

  • 我正在使用hazelcast IMap存储我的应用程序数据。 我面临着一个小问题。 问题说明:- 当我启动spring-boot应用程序时,我正在将数据库表数据加载到hazelcast中。 示例:- 但是当我获取相同的数据时,我得到的顺序不同。 那么有没有办法按照插入的顺序获取数据呢?

  • 问题内容: 我正在尝试通过一种称为的方法设置项目,到目前为止还可以。但是后来我从中创建了一个arrayList,但我不知何故找不到将这些信息存储到JTable中的方法。问题是我找不到设置固定行数的方法 这是我的代码: 上课开始联赛: 足球俱乐部课程: SportsClub课程(摘要): 最后是LeagueManager,它是一个接口: 有人能帮帮我吗?我已经尝试了好几天。谢谢。 问题答案: “问题

  • 我试图从一个名为的方法中设置项目,到目前为止还不错。但后来我从它创建了一个arrayList,不知何故,我找不到将这些信息存储到JTable中的方法。问题是我找不到设置固定行数的方法 下面是我的代码:

  • 我无法将数据加载到表中。我有类,其名称为、等。我想将、插入到TextField上的表播放器中。 我正在执行与下面所示完全相同的操作:http://docs.oracle.com/javase/8/javafx/user-interface-tutorial/table-view.htm#cjagaaee 但我不能让它起作用。有人能帮我吗?