2017-10-11 13 views
0

Je suis assez nouveau pour étinceler. J'ai produit un fichier ayant environ 420 Mo de données avec le travail SPARK. J'ai une application Java qui a seulement besoin d'interroger les données simultanément à partir de ce fichier en fonction de certaines conditions et de retourner les données au format json. Jusqu'à présent, j'ai trouvé deux API RESTful pour SPARK, mais ils sont seulement pour soumettre des travaux de SPARK à distance et à la gestion des contextes SPARK,Demander des données produites par le travail SPARK via API RESTful

1)Livy 
2)Spark job-server 

Le cas échéant, quelles sont les autres options pour faire la même chose (sauf base de données)?

Répondre

1

Vous pouvez réellement utiliser Livy pour obtenir des résultats JSON amicaux de manière RESTful!

session_url = host + "/sessions/1" 
statements_url = session_url + '/statements' 
data = { 
     'code': textwrap.dedent("""\ 
     val d = spark.sql("SELECT COUNT(DISTINCT food_item) FROM food_item_tbl") 
     val e = d.collect 
     %json e 
     """)} 
r = requests.post(statements_url, data=json.dumps(data), headers=headers) 
print r.json() 

Ma référence réponse: Apache Livy: query Spark SQL via REST: possible?

connexes: Livy Server: return a dataframe as JSON?

+0

Merci Garren. Y at-il une limite de taille ou de longueur pour la création de JSON dans cette approche qui peut être renvoyée à l'application –

+0

Je ne sais pas s'il y a une limite de taille, mais il y a des contraintes inhérentes puisqu'elle doit faire une "collecte" de les résultats reviennent au conducteur. Si vous avez le temps d'attendre pour générer et renvoyer un résultat de million de lignes, cela peut très bien obliger;) – Garren

+0

Je poste des données dans le corps de la requête dans 'postman' sous la forme' {"code": "textwrap.dedent (\" \ "\" val d = spark.sql (\ "CHOISIR COUNT (DISTINCT food_item) FROM food_item_tbl \") val e = d.collecter \% json e \ "\" \ ")}' .Il est ne fonctionne pas.Ai-je manquant quelque chose ici –