从数据湖的原始摄取层中的 CSV 文件推断架构的最佳实践?

问题描述

是否有在数据湖的原始摄取层中推断架构的最佳实践(不是架构验证,只是推断数据类型和列名)?

我正在使用 Azure 并想设计一种方法来验证摄取层下游的架构,因此想要一种从 CSV 推断它以进行验证的方法。

到目前为止,由于标头中的架构,我尝试使用 Azure 数据工厂读取带有整数的 csv 并写入 AVRO,并将所有内容存储为字符串。我还尝试使用 Purview 扫描文件(CSV 和 AVRO),但仍然返回所有字符串。

文件格式:NAICS 公司编号、NAICS 公司名称、每个州的列(值为 1 或 0)

我认为显而易见的答案可能是使用 Spark (Databricks),但我想确保我有一个简单/必要的理由来提出这个建议。

编辑:我们需要动态执行此操作,因为我们将每天运行它,并且对于一个摄取许多 csv(不仅仅是一个文件)的管道。

解决方法

我不确定我是否理解正确,但您可能会得到这样的信息。这将产生结构体,可用于验证您的文件。

val df = spark.read.format("csv")
     .option("header","true")
     .option("inferSchema","true")
     .load("/FileStore/tables/retail-data/by-day/2010_12_01.csv")

val scheme = df.schema

导致: 方案:org.apache.spark.sql.types.StructType = StructType(StructField(InvoiceNo,StringType,true),StructField(StockCode,StructField(Description,StructField(Quantity,IntegerType,true) ),StructField(InvoiceDate,StructField(UnitPrice,DoubleType,StructField(CustomerID,StructField(Country,true))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...