Создайте Spark StructType/Schema из класса case

Если бы я хотел создать StructType (т.е. a DataFrame.schema) из case class, есть ли способ сделать это, не создавая DataFrame? Я легко могу сделать:

case class TestCase(id: Long)
val schema = Seq[TestCase]().toDF.schema

Но, кажется, слишком сложно создать DataFrame, когда все, что я хочу, это схема.

(Если вам интересно, причина в том, что я определяю UserDefinedAggregateFunction, и для этого вы переопределяете пару методов, возвращающих StructTypes, и я использую классы case.)

4b9b3361

Вы можете сделать это так же SQLContext.createDataFrame:

import org.apache.spark.sql.catalyst.ScalaReflection
val schema = ScalaReflection.schemaFor[TestCase].dataType.asInstanceOf[StructType]
24
ответ дан 20 апр. '16 в 17:03
источник

Я знаю, что этот вопрос почти год, но я наткнулся на него и подумал, что другим, которые тоже могут захотеть узнать, что я только что научился использовать этот подход:

import org.apache.spark.sql.Encoders
val mySchema = Encoders.product[MyCaseClass].schema
21
ответ дан 18 марта '17 в 1:43
источник

если кто-то захочет сделать это для пользовательской Java bean:

ExpressionEncoder.javaBean(Event.class).schema().json()
2
ответ дан 28 марта '17 в 11:32
источник