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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez travailler avec une instance du singleton de la SQLContext. Vous pouvez prendre un coup d'oeil à cet exemple dans le spark référentiel