-2
votes

Sortie d'étincelles combinée en un seul fichier

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')


2 commentaires

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?


3 Réponses :


2
votes

Eh bien, avant de sauvegarder, vous pouvez repartiter une fois, comme ci-dessous: xxx

alors vous obtiendrez un seul fichier de résultat.


1 commentaires

Ou peut-être coalesce (1) :)



0
votes

Vous pouvez le stocker dans un format code> parquet code>. Ceci est le meilleur format adapté aux HDFS

all_urls.write.parquet("dir_name")


0 commentaires

2
votes

Veuillez trouver ci-dessous quelques suggestions:

  • collecte () et Savastextfile () 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.

  • Dans votre cas, il vous suffit de stocker les données avec SavastextFile () Il n'est pas nécessaire d'appeler collecter () .

  • collecte () renvoie une matrice d'éléments (dans votre cas, vous n'utilisez pas la variable renvoyée)

  • As Glennie et Akash suggéraient simplement d'utiliser coalesce (1) pour forcer une seule partition. regroupement (1) ne provoquera pas trop efficacement.

  • 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.

    Veuillez vous reporter aux liens suivants pour plus de détails sur RDD et DataFrames:

    Différence entre Dataframe, DataSet et RDD dans Spark

    https://databricks.com/blog/2016/07/14/a-tale-frothree-apache-spark-apis-rdds-dataframes-and-DataSets.html


0 commentaires