Spark SQL saveAsTable ist nicht kompatibel mit Hive als partition angegeben ist

Art von edge-Fall, beim speichern von Parkett-Tabelle in Spark SQL mit partition

#schema definitioin
final StructType schema = DataTypes.createStructType(Arrays.asList(
    DataTypes.createStructField("time", DataTypes.StringType, true),
    DataTypes.createStructField("accountId", DataTypes.StringType, true),
    ...

DataFrame df = hiveContext.read().schema(schema).json(stringJavaRDD);

df.coalesce(1)
    .write()
    .mode(SaveMode.Append)
    .format("parquet")
    .partitionBy("year")
    .saveAsTable("tblclick8partitioned");

Funke warnt:

Anhaltende partitioniert data-source-relation in den Hive-metastore in
Spark SQL-spezifischen format, das NICHT kompatibel ist mit Hive

Hive:

hive> describe tblclick8partitioned;
OK
col                     array<string>           from deserializer
Time taken: 0.04 seconds, Fetched: 1 row(s)

Offensichtlich das schema nicht korrekt - aber, wenn ich saveAsTable Spark SQL ohne partition der Tabelle abgefragt werden können, ohne problem.

Frage ist, wie kann ich einen Parkett-Tabelle in Spark SQL-kompatibel mit Hive mit partition info?

Daten in hdfs-und Metadaten werden in hive-metastore
Hast du versucht auf "registrieren Sie sich als temp-Tabelle" führen Sie dann die SQL-Befehle "TABELLE ERSTELLEN" und dann "EINFÜGEN <mit dynamischer Partitionierung syntax>"?
Danke Samson , noch nicht, ist aber nicht saveAsTable tun, was es wohl auf sich ?
Vielleicht ist es davon abhängig, welche version von Spark, die Sie verwenden, z.B. "seine" not a bug, it 's a feature" vs. "umgesetzt werden someday"

InformationsquelleAutor dunlu_98k | 2016-08-31

Schreibe einen Kommentar