Hive и RJDBC: дата типа данных не обнаружена -> таким образом: преобразовано в тип данных R столбца типа «символ» - PullRequest
0 голосов
/ 11 октября 2019

Я использую R-Studio для обработки данных из HIVE. Здесь я использую RJDBC. RJDBC преобразует оператор выбора в фрейм данных. К сожалению, преобразование типов данных столбцов куста «дата» и «отметка времени», по-видимому, не распознается. Таким образом, он преобразуется как символ во время dbReadTable (conn, db2.ibor_lending), что плохо.

У вас есть идеи по этому поводу? Я не хочу переписывать символ на дату снова в R, потому что он 1. накладные расходы, 2. приводит к связыванию и 3. увеличивает усилия по обслуживанию

library(DBI)
library(rJava)
library(RJDBC)

print("Attempting Hive Connection...")

hadoop.class.path = list.files(path=c("/usr/hdp/current/hadoop-client"),pattern="jar", full.names=T);
hadoop.client.lib = list.files(path=c("/usr/hdp/current/hadoop-client/lib"),pattern="jar", full.names=T);
hive.class.path = list.files(path=c("/usr/hdp/current/hive-client/lib"),pattern="jar", full.names=T);
hadoop.hdfs.lib.path = list.files(path=c("/usr/hdp/current/hadoop-hdfs-client"),pattern="jar",full.names=T);
zookeeper.lib.path = list.files(path=c("/usr/hdp/current/zookeeper-client"),pattern="jar",full.names=T);
mapred.class.path = list.files(path=c("/usr/hdp/current/hadoop-mapreduce-client"),pattern="jar",full.names=T);


cp = c(hive.class.path,mapred.class.path,hadoop.class.path,hadoop.client.lib,hadoop.hdfs.lib.path)
.jinit(classpath=cp, parameters="-Djavax.security.auth.useSubjectCredsOnly=false")

drv <- JDBC("org.apache.hive.jdbc.HiveDriver","/usr/hdp/current/hive-client/lib/hive-jdbc.jar",identifier.quote="`")

conn <- dbConnect(drv,"jdbc:hive2://xxx:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=hive/_HOST@yyyy")

show_databases <- dbGetQuery(conn, "select * from db2.ibor_lending LIMIT 100")
show_datatypes <- dbGetQuery(conn, "describe db2.ibor_lending")

show_table <- dbReadTable(conn, db2.ibor_lending)

Результат:

          Hive:              col_name data_type comment
                             cutoffdate timestamp        

          R dataframe:       ibor_lending.cutoffdate character

Br, Dennis

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...