Conjunto de dados Spark 2.0 vs DataFrame

começando com o spark 2.0.1 eu tenho algumas perguntas. Eu li muita documentação, mas até agora não consegui encontrar respostas suficientes:

Qual é a diferença entredf.select("foo")df.select($"foo")eu entendi corretamente quemyDataSet.map(foo.someVal) é tipicamente seguro e não será convertido emRDD mas permaneça na representação do DataSet / sem custos adicionais (desempenho para o 2.0.0)todos os outros comandos, por exemplo selecione, .. são apenas açúcar sintático. Eles não são tipicamente seguros e um mapa pode ser usado. Como eu poderiadf.select("foo") tipo seguro sem uma declaração de mapa?por que devo usar um UDF / UADF em vez de um mapa (assumindo que o mapa permaneça na representação do conjunto de dados)?

questionAnswers(2)

yourAnswerToTheQuestion