org. apache .spark. sql .AnalysisException: при сохранении Spark Dataframe - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть 1 таблица в 2 таблицах в моей базе данных. Я пытаюсь сохранить данные из первой таблицы во вторую таблицу, используя insertInto.

    CREATE TABLE if not exists dbname.tablename_csv ( id STRING, location STRING, city STRING, country STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE ;

    CREATE TABLE  if not exists dbname.tablename_orc ( id String,location STRING, country String PARTITIONED BY (city string) CLUSTERED BY (country) into 4 buckets ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS ORCFILE tblproperties("orc.compress"="SNAPPY");

    var query=spark.sql("id,location,city,country from dbname.tablename_csv")
    query.write.insertInto("dbname.tablename_orc")

, но это вызывает проблему. "

    "org.apache.spark.sql.AnalysisException: `dbname`.`tablename_orc` requires that the data to be inserted have the same number of columns as the target table: target table has 3 column(s) but the inserted data has 4 column(s), including 0 partition column(s) having constant value(s).;"

Пожалуйста, кто-нибудь подскажет, что еще нужно добавить. Я тоже пытался добавить partitionBy, но получил ту же ошибку и показывал partitionBy не требуется.

    query.write.partitionBy("city").insertInto("dbname.tablename_orc")

1 Ответ

0 голосов
/ 03 апреля 2020

saveAsTable (...) с mode = "append"

...