Spark sql Dataframe - import sqlContext.implicits._

J'ai principaux qui crée l'étincelle contexte:

    val sc = new SparkContext(sparkConf)
    val sqlContext = new org.apache.spark.sql.SQLContext(sc)
    import sqlContext.implicits._

Crée ensuite dataframe et n'des filtres et des validations sur le dataframe.

    val convertToHourly = udf((time: String) => time.substring(0, time.indexOf(':')) + ":00:00")

    val df = sqlContext.read.schema(struct).format("com.databricks.spark.csv").load(args(0))
    //record length cannot be < 2 
    .na.drop(3)
    //round to hours
    .withColumn("time",convertToHourly($"time"))

Cela fonctionne très bien.

MAIS Quand j'essaie de bouger mes validations à un autre fichier en envoyant le dataframe de

function ValidateAndTransform(df: DataFrame) : DataFrame = {...}

qui obtient le Dataframe & ne les validations et les transformations: Il semble que j'ai besoin de la

 import sqlContext.implicits._

Pour éviter l'erreur: “la valeur de $ n'est pas un membre de StringContext”
qui se passe sur la ligne:
.withColumn("le temps",convertToHourly($"le temps"))

Mais d'utiliser le import sqlContext.implicits._
J'ai aussi besoin de la sqlContext soit défini dans le nouveau fichier comme ceci:

val sc = new SparkContext(sparkConf)
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

ou de l'envoyer à la

function ValidateAndTransform(df: DataFrame) : DataFrame = {...}
function

J'ai envie de la séparation, je suis en train de faire 2 fichiers (main & validation) n'est pas fait correctement...

Aucune idée sur la manière de concevoir ce? Ou tout simplement envoyer le sqlContext à la fonction?

Merci!

source d'informationauteur Etti Gur