自定义数据源的自动火花模式推断

Posted

技术标签:

【中文标题】自定义数据源的自动火花模式推断【英文标题】:Automatic spark schema inference for custom data source 【发布时间】:2016-05-31 12:49:56 【问题描述】:

我正在为自定义数据源(属性文件)实现 spark(1.5.2) sql RelationProvider。

谁能解释一下自动推理算法应该如何实现?

【问题讨论】:

***.com/a/35372282/1560062 【参考方案1】:

通常,您需要创建一个代表您的架构的StructTypeStructType 包含 Array[StructField],其中数组的每个元素对应于架构中的一列。 StructField 可以是任何受支持的 DataType - 包括另一个用于嵌套模式的 StructType

创建架构可以很简单:

val schema = StructType(Array(
  StructField("col1", StringType),
  StructField("col2", LongType)
))

如果您想从一个复杂的数据集(包括嵌套的StructTypes)生成一个模式,那么您很可能需要创建一个递归函数。在spark-avro 集成库中可以找到这样一个函数的一个很好的例子。 toSqlType 函数采用 Avro 架构并将其转换为 Spark StructType

【讨论】:

谢谢@david-griffin,但我在自动模式发现/推理。我应该如何对数据进行采样并合并架构?

以上是关于自定义数据源的自动火花模式推断的主要内容,如果未能解决你的问题,请参考以下文章

火花连接数据帧和合并模式

java - 调用自定义火花UDF时如何解决Java中的NoSuchMethodException

使用 Slick 3 进行自定义表映射类型推断

主动模式和被动模式添加监控主机添加自定义模板自动发现

六十主动模式和被动模式添加监控主机添加自定义模板处理图形中的乱码自动发现

带有数据定义的火花数据框架架构