Je me demande s'il y a un moyen de combiner le résultat final dans un seul fichier lorsque vous utilisez Spark? Voici le code que j'ai:
conf = SparkConf().setAppName("logs").setMaster("local[*]") sc = SparkContext(conf = conf) logs_1 = sc.textFile('logs/logs_1.tsv') logs_2 = sc.textFile('logs/logs_2.tsv') url_1 = logs_1.map(lambda line: line.split("\t")[2]) url_2 = logs_2.map(lambda line: line.split("\t")[2]) all_urls = uls_1.intersection(urls_2) all_urls = all_urls.filter(lambda url: url != "localhost") all_urls.collect() all_urls.saveAsTextFile('logs.csv')
3 Réponses :
Eh bien, avant de sauvegarder, vous pouvez repartiter une fois, comme ci-dessous: alors vous obtiendrez un seul fichier de résultat. P> P>
Ou peut-être coalesce (1) code> :)
Vous pouvez le stocker dans un format code> parquet code>. Ceci est le meilleur format adapté aux HDFS
all_urls.write.parquet("dir_name")
Veuillez trouver ci-dessous quelques suggestions: p>
Dans votre cas, il vous suffit de stocker les données avec As Glennie et Akash suggéraient simplement d'utiliser Dans le code donné que vous utilisez l'API de RDD de Spark, je suggérerais d'utiliser des fichiers de données / jeux de données à la place. P> LI>
ul>
Veuillez vous reporter aux liens suivants pour plus de détails sur RDD et DataFrames: P>
Différence entre Dataframe, DataSet et RDD dans Spark A > p>
collecte () code> et
Savastextfile () code> sont des actions qui signifient qu'ils vont collecter les résultats sur le nœud pilote. Est donc redondant de les appeler les deux. p> li>
SavastextFile () code> Il n'est pas nécessaire d'appeler
collecter () code>. p> li>
collecte () code> renvoie une matrice d'éléments (dans votre cas, vous n'utilisez pas la variable renvoyée) p> li>
coalesce (1) code> pour forcer une seule partition.
regroupement (1) code> ne provoquera pas trop efficacement. p> li>
all_URLS.COALCECE (1) .SaveSaSestFile ('logsv')
Merci! Bien que je suis confondu par les bowvotes sur ma question. N'est-ce pas quelque chose qui vaut la peine d'être demandé, ou la communauté étincelle est-elle intolérante envers les débutants?