L'agrégation par Groupe Par date dans Spark SQL

J'ai un RDD contenant un timestamp nommé temps de type long:

root
 |-- id: string (nullable = true)
 |-- value1: string (nullable = true)
 |-- value2: string (nullable = true)
 |-- time: long (nullable = true)
 |-- type: string (nullable = true)

Je suis en train de groupe par valeur1, valeur2 et le temps que le AAAA-MM-JJ. J'ai essayé de groupe en plâtre(le temps que la Date) mais j'ai eu l'erreur suivante:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:40)
    at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)
Caused by: java.lang.RuntimeException: [1.21] failure: ``DECIMAL'' expected but identifier Date found

Est-ce à dire il n'y a pas moyen de regrouper en un jour? J'ai même essayé d'ajouter un autre niveau de casting pour l'avoir comme une Chaîne de caractères:

cast(cast(time as Date) as String)

Qui renvoie la même erreur.

J'ai lu que je pouvais utiliser probablement aggregateByKey sur le CA, mais je ne comprends pas comment l'utiliser pour un peu de colonnes, et de convertir de temps pour une AAAA-MM-JJ Chaîne. Comment dois-je procéder?

OriginalL'auteur galex | 2015-05-05