Der Code unten ist, wie es in HDFS mit Scala geschrieben wurde. Wie lautet die HQL-Syntax zum Erstellen einer Hive-Tabelle zum Abfragen dieser Daten?Wie erstelle ich eine Hive-externe Tabelle aus AVRO-Dateien, die mit Databricks geschrieben wurden?
import com.databricks.spark.avro._
val path = "/user/myself/avrodata"
dataFrame.write.avro(path)
Die Beispiele, die ich finden erfordern eine avro.schema.literal bietet das Schema oder eine avro.schema.url dem eigentlichen avro Schema zu beschreiben.
In der Funken Schale alles, was ich dies tun müssen, wäre zu lesen ist:
scala> import com.databricks.spark.avro._
scala> val df = sqlContext.read.avro("/user/myself/avrodata")
scala> df.show()
Ein Kommentar aus dem Spark-Avro-Quellcode besagt, dass * "Schema-Evolution noch nicht unterstützt wird. Hier wählen wir nur eine Stichprobe aus, um ** das Schema ** des gesamten Datensatzes herauszufinden" * (https://github.com/databricks/spark-avro/blob/master/src/main/scala/com/databricks/spark/avro/DefaultSource.scala). –
Hive funktioniert nicht so, es erfordert ** explizit ** das aktuelle AVRO-Schema zum Zeitpunkt CREATE. Aber die Dokumentation (https://cwiki.apache.org/confluence/display/Hive/AvroSerDe) besagt, dass es zwei Möglichkeiten gibt, dies zu tun: Entweder eine Verknüpfung zu einem AVRO-Schema (verfügbar in einer lokalen Datei/in einer URL), oder listen Sie die Spalten einfach auf, als ob es eine Textdatei wäre, und lassen Sie Hive das AVRO-Schema von diesem SQL-Schema ableiten. –