Ich versuche, vom Lesen von CSV-Dateien in AVRO-Dateien auf Spark zu wechseln. folgenden https://github.com/databricks/spark-avro Ich benutze:Eine nicht unterstützte Mischung von Union-Typen aus einer Avro-Datei in Apache Spark lesen
import com.databricks.spark.avro._
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.avro("gs://logs.xyz.com/raw/2016/04/20/div1/div2/2016-04-20-08-28-35.UTC.blah-blah.avro")
und klar
java.lang.UnsupportedOperationException: This mix of union types is not supported (see README): ArrayBuffer(STRING)
die Readme-Datei Staaten erhalten:
Diese Bibliothek unterstützt alle Avro-Typen zu lesen, mit der Ausnahme von Komplex Verbindungstypen. Es verwendet die folgende Abbildung von Avro Typen Spark-SQL-Typen: "log_record":
wenn ich versuche, die gleiche Datei textread ich das Schema
val df = sc.textFile("gs://logs.xyz.com/raw/2016/04/20/div1/div2/2016-04-20-08-28-35.UTC.blah-blah.avro")
df.take(2).foreach(println)
{ "name" sehen , "Typ": "Datensatz", "Felder": [{"Name": "Anfrage", "Typ": {"Typ": "Datensatz", "Name": "Anfrage_Daten", "Felder": [{ "name": "datetime", "type": "string"}, {"name": "ip", "type": "string"}, {"name": "host", "type": "string "}, {" name ":" uri "," typ ":" string "}, {" name ":" request_uri "," typ ":" string "}, {" name ":" referer "," type ":" string "}, {" name ":" useragent "," type ":" string "}]}}
< ------- ein Auszug aus der vollständigen Antwort ------->
da ich nur wenig Kontrolle über das Format habe ich diese Dateien in, immer meine Frage ist hier - gibt es eine Ausweichlösung jemand getestet und kann empfehlen?
I verwenden gc Dataproc mit
MASTER = Garn-cluster funken Schale --num-Vollstrecker 4 --executor-Speicher-4G --executor Kerne 4 --packages com.databricks: spark -avro_2.10: 2.0.1, com.databricks: Funken csv_2.11: 1.3.0
jede Hilfe wäre sehr dankbar .....
http://stackoverflow.com/questions/23944615/how-can-i-load-avros-in-spark-use-the-schema-on-board-the-avro-files – Simon
Sie können newHadoopApi für verwenden Lesen von Avro-Dateien - Sie müssen Core API von Spark und nicht SQL-API verwenden. ein besonderer Grund, es nicht zu benutzen? –