自定义数据源的spark模式推断

时间:2016-05-31 12:49:57

标签: apache-spark apache-spark-sql apache-spark-1.5

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

有人可以解释一下应该如何实现自动推理算法?

1 个答案:

答案 0 :(得分:0)

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

创建架构可以简单如下:

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

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