【发布时间】:2018-03-21 16:28:05
【问题描述】:
我有按创建日期 (BusinessDate) 和数据源 (SourceSystem) 分区的镶木地板文件。一些源系统使用不同的列名生成它们的数据(小写,如大写,即orderdate vs OrderDate),但总体数据结构相同(文件之间的列顺序和数据类型始终相同)。
我的文件系统中的数据如下所示:
dataroot
|-BusinessDate=20170809
|-SourceSystem=StoreA
|-data.parquet (has column "orderdate")
|-SourceSystem=StoreB
|-data.parquet (has column "OrderDate")
有没有办法从dataroot 或dataroot/BusinessData=######/ 读取数据,并以某种方式将数据规范化为统一架构?
我的第一次尝试是尝试:
val inputDF = spark.read.parquet(samplePqt)
standardNames = Seq(...) //list of uniform column names in order
val uniformDF = inputDF.toDF(standardNames: _*)
但这不起作用(将重命名源系统之间具有相同列名的列,但将为来自源系统 B 的具有不同列名的记录填充 null)。
【问题讨论】:
标签: scala apache-spark apache-spark-sql parquet