我在 Spark 下创建了 ORC 格式的数据,如下所示:
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"
我得到计数值为 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 行。
似乎“分区”没有被识别或其他东西。如何在 Spark 中创建的数据之上创建“外部”Hive 表?