Apache spark 使用Databricks将Excel转换为标准格式
我正试图实现一个过程,使用数据工厂和DataRicks将数据摄取到DataLake中,并将其全部转换为标准格式,即拼花地板。因此,我们将有一个原始数据层和一个干净/标准化的数据层 当源系统是DB或分隔文件时,它(相对)比较容易,但在某些情况下,我们将使用excel源。我一直在用Apache spark 使用Databricks将Excel转换为标准格式,apache-spark,apache-spark-sql,azure-data-lake,databricks,Apache Spark,Apache Spark Sql,Azure Data Lake,Databricks,我正试图实现一个过程,使用数据工厂和DataRicks将数据摄取到DataLake中,并将其全部转换为标准格式,即拼花地板。因此,我们将有一个原始数据层和一个干净/标准化的数据层 当源系统是DB或分隔文件时,它(相对)比较容易,但在某些情况下,我们将使用excel源。我一直在用com.crealytics.spark.excel测试转换过程,这是可以的,因为我们可以推断模式,但它无法迭代多个工作表,也无法获得工作表名称列表,以便我迭代将每个工作表转换为单个文件 我需要这是尽可能动态的,以便我们可
com.crealytics.spark.excel
测试转换过程,这是可以的,因为我们可以推断模式,但它无法迭代多个工作表,也无法获得工作表名称列表,以便我迭代将每个工作表转换为单个文件
我需要这是尽可能动态的,以便我们可以摄取几乎任何文件,无论其类型或模式
有人知道做这件事的其他方法吗?如果有必要,我愿意离开Databrick,比如带有自定义C#脚本的Azure批处理
提前谢谢 由于您的目标是将数据存储在Azure data Lake中,另一种方法可能是使用带有自定义Excel提取器的Azure data Lake Analytics。然后U-SQL可以将其转换为拼花地板。有关Excel提取器的示例,请参见 您希望Excel工作表的可变性有多大
这里的主要问题是很难完全不区分模式,特别是当您有许多列时。要处理模式的可变性,您可以更改提取器,将列作为键/值对输出,或者(如果列的数量和行的大小合理的话)作为
SqlMap
(或者针对不同的目标类型输出一些列)。尽管在创建拼花地板之前,您可能需要将其转换为列格式,这需要第二个脚本来创建旋转脚本或一些自定义输出(而不是内置拼花地板输出)。因为您的目标是将数据存储在Azure data Lake中,另一种方法可能是将Azure Data Lake Analytics与自定义Excel提取器一起使用。然后U-SQL可以将其转换为拼花地板。有关Excel提取器的示例,请参见
您希望Excel工作表的可变性有多大
这里的主要问题是很难完全不区分模式,特别是当您有许多列时。要处理模式的可变性,您可以更改提取器,将列作为键/值对输出,或者(如果列的数量和行的大小合理的话)作为SqlMap
(或者针对不同的目标类型输出一些列)。尽管在创建拼花地板之前,您可能需要将其旋转为列格式,这可能需要第二个脚本来创建旋转脚本或一些自定义输出(而不是内置拼花输出)