2015-12-02 1 views
1

J'ai besoin de charger une table Hive en utilisant spark-sql, puis d'exécuter un algho d'apprentissage automatique. Je fais qu'écrire:Spark-SQl partitions DataFrame

val dataSet = sqlContext.sql(" select * from table") 

Il fonctionne bien, mais si je voulais augmenter le nombre de partions du DataSet dataframe, Comment puis-je pu faire cela? Avec RDD normale je peux faire écrire:

val dataSet = sc.textFile(" .... ", N) 

Avec un nombre N de partitions que je veux avoir.

Merci

Répondre

0

Vous pouvez coalesce ou repartition résultant DataFrame, i.e. .:

val dataSet = sqlContext.sql(" select * from table").coalesce(N) 
+0

Il est assez opération coûteuse, non? Les frais généraux de coalescence devraient de toute façon être réduits en accélérant l'étape d'entraînement. Merci – Edge07

+0

Oui, c'est. Cela implique de transférer toutes les données entre les nœuds du cluster. Une autre option peut être essayer de définir la propriété de configuration 'spark.default.parallelism', mais vous devez essayer, je ne sais pas si cela fonctionne ... – mgaido

+0

Vous pouvez également vérifier ce lien https://deepsense.io/ optimiser-étincelle-avec-distribuer-par-et-cluster-par / –