次のように、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 テーブルを作成するにはどうすればよいですか?