Я пытаюсь загрузить данные нескольких файлов JSON в HIVE, используя spark-shell и Scala.
import org.apache.spark.SparkConf
import org.apache.spark.sql.SQLContext
val conf = new SparkConf().setAppName("App").setMaster("local")
import org.apache.spark.sql.hive._
val hiveContext = new HiveContext(sc)
val df = hiveContext.read.schema(buildSchema()).json(<path to json>)
df.printSchema()
df.show()
df.write.mode("append").saveAsTable("data")
Проблема заключается в том, что некоторые поля в моих файлах json являются Array of Strings.Если у любого данного файла есть хотя бы одна запись с полем «Массив строк» с некоторым допустимым значением, то результирующий фрейм данных имеет правильный тип данных (т. Е. Массив строк) для указанного поля, но если все записи в данном файле json пустыезначение в полях Array of Strings, тогда запись записывается как тип String в кадре данных.И когда в конечном итоге данные должны быть добавлены из фрейма данных в таблицу HIVE, записи отклоняются из-за несоответствия типов данных.Как я могу гарантировать, что этого несоответствия типов данных избежать и независимо от какого-либо значения или нет в указанном поле, его тип данных читается как массив строк (возможно, с нулевым значением, если массив пуст)?