Apache Spark Query с HiveContext не работает
Я использую Spark 1.6.1. В моей Java-программе Spark я подключаюсь к базе данных Postgres и регистрирую каждую таблицу как временную таблицу через JDBC. Например:
Map<String, String> optionsTable = new HashMap<String, String>();
optionsTable.put("url", "jdbc:postgresql://localhost/database?user=postgres&password=passwd");
optionsTable.put("dbtable", "table");
optionsTable.put("driver", "org.postgresql.Driver");
DataFrame table = sqlContext.read().format("jdbc").options(optionsTable).load();
table.registerTempTable("table");
Это работает без проблем:
hiveContext.sql("select * from table").show();
Также это работает:
DataFrame tmp = hiveContext.sql("select * from table where value=key");
tmp.registerTempTable("table");
И затем я могу видеть содержимое таблицы с:
hiveContext.sql("select * from table").show();
Но теперь у меня есть проблема. Когда я выполняю это:
hiveContext.sql("SELECT distinct id, timestamp FROM measure, measure_range w WHERE tble.timestamp >= w.left and tble.timestamp <= w.right").show();
Spark ничего не делает, но в исходной базе данных на Postgres он работает очень хорошо. Поэтому я решил изменить запрос немного к этому:
hiveContext.sql("SELECT id, timestamp FROM measure, measure_range w WHERE tble.timestamp >= w.left").show();
Этот запрос работает и дает мне результаты. Но другой запрос не работает. В чем разница и почему первый запрос не работает, но второй работает хорошо?
И база данных не очень большая. Для тестирования он имеет размер 4 МБ.