RImpala: Ошибка запроса при больших данных

check1<-rimpala.query("select * from sum2")
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.sql.SQLException: Method not supported

dim(sum2) составляет 49501 строку и 18 столбцов.

check1<-rimpala.query("select *from sum3")

dim(sum3) — 102 строки и 6 столбцов.

Это работало с меньшим размером выборки.

извините, что я не могу воспроизвести пример к этому. Кто-нибудь сталкивается с той же проблемой с большим объемом данных? Любая идея решить эту проблему? Спасибо.


person chee.work.stuff    schedule 29.01.2015    source источник


Ответы (3)


Как отмечалось в другом месте StackOverflow, RImpala делает не реализует executeUpdate и поэтому не может выполнять запросы, изменяющие состояние. Я подозреваю, что вы столкнулись с ошибкой не из-за того, что выполнили более крупный запрос SELECT, а потому, что попытались вставить, обновить или удалить некоторые данные.

Если вы хотите использовать Impala из R, я бы рекомендовал использовать dplyrimpaladb.

person Jeff Hammerbacher    schedule 31.01.2015

В сборку RImpala (v0.1.6) добавлена ​​поддержка выполнения DDL-запросов с помощью executeUpdate.

Последняя сборка содержит следующие исправления/дополнения:

  1. Поддержка выполнения DDL-запросов.
  2. Параметр fetchSize в функции запроса, чтобы указать количество записей, которые могут быть извлечены за одно считывание из Impala туда и обратно.
  3. Исправлена ​​ошибка запроса при возврате значений NULL.
  4. Совместимость с CDH 5.x.x

Вы можете запускать DDL-запросы, используя функцию запроса, как показано ниже:

rimpala.query(Q="drop table sample_table",isDDL="true")

Вы также можете указать fetchSize в функции запроса, чтобы помочь эффективно считывать большие данные.

rimpala.query(Q="select * from sample_table",fetchSize="10000")

Пожалуйста, найдите последнюю сборку в Cran: http://cran.r-project.org/web/packages/RImpala/index.html

Исходный код: https://github.com/Mu-Sigma/RImpala

person G S Vijay Raajaa    schedule 08.05.2015
comment
Но действительно ли вы можете вставлять пакетные строки? Это было изначальное ограничение, я думаю - person uh_big_mike_boi; 01.04.2016

У меня такая же проблема с пакетом RImpala, и я рекомендую использовать пакет RJDBC:

library(RJDBC)
drv <- JDBC(driverClass = "org.apache.hive.jdbc.HiveDriver",
          classPath = list.files("path_to_jars",pattern="jar$",full.names=T),
          identifier.quote="`")
conn <- dbConnect(drv, "jdbc:hive2://localhost:21050/;auth=noSasl")
check1 <- dbGetQuery(conn, "select *from sum3")

Я использовал эти jar-файлы, и все работает как положено: https://downloads.cloudera.com/impala-jdbc/impala-jdbc-0.5-2.zip

Для получения дополнительной информации и сравнения скорости см. этот пост в блоге: http://datascience.la/r-and-impala-its-better-to-kiss-than-using-java/

person fc9.30    schedule 02.11.2015
comment
Но это не имеет ничего общего со вставкой строк. Вы умеете вставлять строки? - person uh_big_mike_boi; 01.04.2016