Я создаю таблицу феникса со структурой ниже
CREATE TABLE IF NOT EXISTS "TEST1"(
"slhdr" VARCHAR(100),
"totmins" INTEGER,
"totslrcds" INTEGER,
"tottime" INTEGER, CONSTRAINT pk PRIMARY KEY ("sleepelement")
);
Теперь я создал фрейм данных из данных JSON, выбрав определенные столбцы из другого фрейма данных. Ниже приведена схема этого кадра данных:
newDF.printSchema
root
|-- slhdr: array (nullable = true)
| |-- element: string (containsNull = true)
|-- totmins: long (nullable = true)
|-- totslrcds: long (nullable = true)
|-- tottime: long (nullable = true)
Теперь я пытаюсь вставить данные в приведенную выше таблицу Феникса, используя этот кадр данных, с помощью приведенного ниже кода:
newDF.write
.format("org.apache.phoenix.spark")
.mode("overwrite")
.option("table", "TEST1")
.option("zkUrl", "Server details")
.save()
Однако невозможно сопоставить столбцы данных с столбцами таблицы, и я получаю сообщение об ошибке ниже:
Caused by: org.apache.spark.SparkException: Job aborted due to stage failure: Task 33 in stage 74.0 failed 4 times, most recent failure: Lost task 33.3 in stage 74.0 (TID 2663, ailab003.incedoinc.com, executor 2): java.sql.SQLException: Unable to resolve these column names:
SLHDR,TOTMINS,TOTSLRCDS,TOTTIME
Available columns with column families:
slhdr,0.totmins,0.totslrcds,0.tottime
Похоже, что таблица феникса создает семейство столбцов по умолчанию '0' для последних 3 столбцов, которые я не понимаю.
Есть ли способ вставить эти данные.