Я пытаюсь создать линию данных, в которой несоответствующие данные сохраняются в паркете, и я создаю и внешнюю таблицу кустов, и пользователи могут запрашивать таблицу кустов и получать данные. Я могу сохранить данные паркета и получить их напрямую, но когдая запрашиваю таблицу улья, не возвращая никаких строк.Я выполнил следующую настройку теста
- СОЗДАТЬ ВНЕШНЮЮ ТАБЛИЦУ HIVE создать внешнюю таблицу emp (id double, временная метка hire_dt, строка пользователя), хранящуюся как расположение паркета '/ test / emp';
сейчассоздал фрейм данных на некоторых данных и сохранил в паркет.
--- создайте фрейм данных и вставьте ДАННЫЕ
val employeeDf = Seq(("1", "2018-01-01","John"),("2","2018-12-01", "Adam")).toDF("id","hire_dt","user")
val schema = List(("id", "double"), ("hire_dt", "date"), ("user", "string"))
val newCols= schema.map ( x => col(x._1).cast(x._2))
val newDf = employeeDf.select(newCols:_*)
newDf.write.mode("append").parquet("/test/emp")
newDf.show
--read the contents directly from parquet
val sqlcontext=new org.apache.spark.sql.SQLContext(sc)
sqlcontext.read.parquet("/test/emp").show
+---+----------+----+
| id| hire_dt|user|
+---+----------+----+
|1.0|2018-01-01|John|
|2.0|2018-12-01|Adam|
+---+----------+----+
--read from the external hive table
spark.sql("select id,hire_dt,user from emp").show(false)
+---+-------+----+
|id |hire_dt|user|
+---+-------+----+
+---+-------+----+
Как показано выше, я могу видеть данные, если читаю из паркета напрямую, ноне из улья. Вопрос в том, что я здесь делаю неправильно?Что я делаю неправильно, что улей не получает данные.Я думал, что восстановление msck может быть причиной, но я получаю ошибку, если я пытаюсь сделать таблицу восстановления msck, говоря, что таблица не разбита на разделы.