Ich möchte eine große Textdatei "mydata.txt" (die Größe der tatsächlichen Datei beträgt etwa 30 GB) mit Spark bearbeiten. Es ist Datensatzbegrenzer ist "\ |" gefolgt von "\ n". Da das Standard-Record-Trennzeichen der Ladedatei (von "sc.textFile") "\ n" ist, habe ich die Eigenschaft "texinputformat.record.delimiter" von org.apache.hadoop.conf.Configuration auf "\ | \ n" gesetzt Geben Sie den Datensatzbegrenzer an:
%Vor%Als nächstes habe ich den folgenden Code in Spark-Shell ausgeführt:
%Vor%so weit so gut. jedoch
%Vor% Warum kann ich RDD "Daten" nicht manipulieren, während alles in Ordnung ist, wenn sc.textFile("mydata.txt")
verwendet wird?
Und wie man es repariert?
Sie erhalten diese Ausnahme, weil Sie org.apache.hadoop.conf.Configuration
schließen, aber nicht serializable
Sie können zwei Dinge tun:
1. Registrieren Sie die Konfiguration mit einem Kyro Serializer ODER
2. Markieren Sie einfach Ihre conf-Variable als transient
, was Spark grundsätzlich anweist, es nicht mit der Schließung zu versenden.
Tags und Links scala configuration delimiter apache-spark rdd