Je viens juste d'avoir accès à spark 2.0; je l'utilise depuis spark 1.6.1 jusqu'à ce point. Quelqu'un peut-il m'aider s'il vous plaît de m'aider à configurer une sparkSession à l'aide de pyspark (python)? Je sais que les exemples scala disponibles en ligne sont similaires ( ici )], mais j’espérais une procédure directe en python langue.
Mon cas spécifique: je charge des fichiers avro de S3 dans un bloc-notes zeppelin spark. Puis, je construis des df et je lance diverses requêtes pyspark & sql. Toutes mes anciennes requêtes utilisent sqlContext. I sais que c’est une mauvaise pratique, mais j’ai commencé mon cahier avec
sqlContext = SparkSession.builder.enableHiveSupport().getOrCreate()
.
Je peux lire dans les avros avec
mydata = sqlContext.read.format("com.databricks.spark.avro").load("s3:...
et construire des cadres de données sans problèmes. Mais une fois que je commence à interroger les tables dataframes/temp, je continue à obtenir l'erreur "Java.lang.NullPointerException". Je pense que cela indique une erreur de traduction (par exemple, les anciennes requêtes fonctionnaient en 1.6.1 mais doivent être modifiées pour la version 2.0). L'erreur se produit indépendamment du type de requête. Donc je suppose
1.) l'alias sqlContext est une mauvaise idée
et
2.) Je dois configurer correctement une sparkSession.
Donc, si quelqu'un pouvait me montrer comment cela se passait, ou peut-être expliquer les divergences qu’ils connaissent entre les différentes versions de spark, je l’apprécierais beaucoup. S'il vous plaît laissez-moi savoir si je dois élaborer sur cette question. Je m'excuse si c'est compliqué.
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('abc').getOrCreate()
maintenant importer un fichier .csv que vous pouvez utiliser
df=spark.read.csv('filename.csv',header=True)
À partir d'ici http://spark.Apache.org/docs/2.0.0/api/python/pyspark.sql.html
Vous pouvez créer une session spark) en utilisant ceci:
>>> from pyspark.conf import SparkConf
>>> SparkSession.builder.config(conf=SparkConf())
Comme vous pouvez le voir dans l'exemple scala, Spark fait partie du module sql. Similaire en python. Voir aussi documentation de module pyspark sql)
class pyspark.sql.SparkSession (sparkContext, jsparkSession = None) Le point d'entrée pour la programmation Spark avec les ensembles de données et les API DataFrame. Vous pouvez utiliser SparkSession pour créer DataFrame, enregistrer DataFrame en tant que tables, exécuter SQL Pour créer une SparkSession, utilisez le modèle de générateur suivant:
>>> spark = SparkSession.builder \
... .master("local") \
... .appName("Word Count") \
... .config("spark.some.config.option", "some-value") \
... .getOrCreate()
spark = SparkSession.builder\
.master("local")\
.enableHiveSupport()\
.getOrCreate()
spark.conf.set("spark.executor.memory", '8g')
spark.conf.set('spark.executor.cores', '3')
spark.conf.set('spark.cores.max', '3')
spark.conf.set("spark.driver.memory",'8g')
sc = spark.sparkContext