Я создал данные в формате ORC в Spark следующим образом:
var select: String = "SELECT ..."
sqlContext.sql(select).write.format("orc").save("/tmp/out/20160101")
select = "SELECT ..."
sqlContext.sql(select).write.format("orc").save("/tmp/out/20160102")
& so on...
Теперь я пытаюсь создать внешнюю таблицу в Hive следующим образом:
CREATE EXTERNAL TABLE `mydb.mytable`
(`col1` string,
`col2` decimal(38,0),
`create_date` timestamp,
`update_date` timestamp)
PARTITIONED BY (`my_date` string)
STORED AS ORC
LOCATION '/tmp/out/';
Когда я делаю:
"select count(*) from mydb.mytable"
Я получаю значение count как 0. Но в Spark-shell, когда я запускаю:
val results = sqlContext.read.format("orc").load("/tmp/out/*/part*")
results.registerTempTable("results")
sqlContext.sql("select count(*) from results").show
Как и ожидалось, я получаю 500 000 строк.
Похоже, что «Разделы» не распознаются или что-то в этом роде. Как я могу создать «внешнюю» таблицу Hive поверх данных, созданных в Spark?
/tmp/out/my_date=<date>
, но в искре вы сохраняете в/tmp/out/<date>
- person puhlen   schedule 08.12.2016<column_name>=<value>
- это формат имен каталогов разделов куста. Измените мощность искры, чтобы она соответствовала этому. - person puhlen   schedule 09.12.2016