2016-04-13 1 views
0

J'ai utilisé spark-submit pour exécuter des tâches simples sur le service d'allumage Bluemix (Word Count, SparkPi). Les deux fonctionnent bien. J'ai utilisé un petit fichier texte pour tester Word Count via spark-submit.sh (téléchargé le fichier en utilisant --file). Cependant, lorsque j'ai utilisé un gros fichier à la place, le travail ne s'est pas exécuté. J'ai regardé les journaux et j'ai vu le message "413 Request Entity Too Large". Je suppose que cela signifie que le fichier est trop volumineux pour être envoyé. J'ai donc 3 questions. Puis-je augmenter la limite sur la taille du fichier que je suis autorisé à télécharger via spark-submit? Puis-je lier mon application au stockage d'objets swift existant et y télécharger simplement mon gros fichier? Sur la question 2, j'ai fait quelques recherches initiales et il me semble que j'ai besoin d'ajouter des informations d'identification à la demande d'accès au stockage d'objets. Donc, une question supplémentaire.Service Bluemix Apache Spark avec spark-submit. Téléchargement de données vers le stockage d'objets

  1. Est-il possible d'intégrer ces informations d'identification sans modifier le code source de l'application? (Comme ajouter les informations d'identification dans spark-submit comme vcap.json)?

J'apprécie votre temps. Je ne demanderais pas si je n'avais pas besoin de le faire.

Répondre

1

re: "413 requête trop grand"

Le Bluemix Apache service Spark est un service de calcul uniquement, ce qui signifie que vos données doivent résider dans un service de stockage, comme le service Bluemix de stockage d'objets, Cloudant, S3, quel que soit logique. Ensuite, votre programme spark-submit se connectera à ce service de stockage et vous créerez RDD par-dessus et allez en ville. Dans votre cas, vous essayez de transmettre les données sur lesquelles vous souhaitez exécuter des analyses via le paramètre de spark-submit, et le service se plaint que vous le faites mal ;-) spark-submit vous permettra de transmettre votre étincelle programme, libs, et quelques petits fichiers que votre programme doit exécuter, mais il rejettera tous les fichiers plus volumineux comme inacceptable; la taille maximale est actuellement d'environ 200 Mo, mais cela pourrait changer ;-)

Vous pouvez certainement coder, dans votre programme spark, la configuration requise pour accéder à votre compte de magasin d'objets; les creds et les propriétés de configuration endpoint définies via config connecteur Hadoop, selon l'exemple de python suivant:

def set_hadoop_config(creds): 
    prefix = "fs.swift.service." + creds['name'] 
    hconf = sc._jsc.hadoopConfiguration() 
    hconf.set(prefix + ".auth.url", creds['auth_url'] + '/v2.0/tokens') 
    hconf.set(prefix + ".auth.endpoint.prefix", "endpoints") 
    hconf.set(prefix + ".tenant", creds['project_id']) 
    hconf.set(prefix + ".username", creds['user_id']) 
    hconf.set(prefix + ".password", creds['password']) 
    hconf.setInt(prefix + ".http.port", 8080) 
    hconf.set(prefix + ".region", creds['region']) 
    hconf.setBoolean(prefix + ".public", True) 

Actuellement, seuls les Cahiers analytiques vous aider par la mise en place de configuration automatiquement pour vous lorsque vous liez un service de stockage d'objets à l'instance de service portable. Je m'attends à l'avenir cela peut également être possible avec spark-submit ;-)

+0

Merci pour votre réponse. En effet, vous avez répondu à ma question. Je vais modifier le code source existant pour inclure des informations d'identification pour accéder au stockage d'objets Bluemix existant. –