使用JDBC将R连接到Hive

时间:2015-12-15 07:39:31

标签: java r hadoop jdbc

我正在尝试使用RJDBC软件包将R连接到Hive集群。

我写的代码是:

Error in path.expand(unlist(strsplit(classPath, .Platform$path.sep))) : 
  invalid 'path' argument

我添加了" C:/ hive-jdbc"也是我的系统路径变量。

但是我收到以下错误:

{{1}}

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

classPath = list.files("C:/hive-jdbc/hive-jdbc-0.10.0.jar",
                               pattern="jar$",full.names=T)

您使用list.fileslist.files的第一个参数应该是文件夹,您似乎已经为它提供了一个jar 文件。系统上list.files功能的只是的输出是多少?它可能是character(0)。这搞砸了classPath。修复了 - 并且不清楚您希望classPath参数的值在此处。如果您希望它是文件夹中的所有.jar个文件,那么

list.files("C:/wherever/", pattern="\.jar$", full.names=TRUE)

应该这样做。如果它只是一个jar文件,只需将其放入:

classPath="C:/hive-jdbc/hive-blahlah-999.jar"

在通话中。即,保持简单!

答案 1 :(得分:0)

回答Prateek - “未找到类”,因为它不在jar文件中:你的类路径中需要更多的jar文件。对我来说这是:

int n;
int lastDigit;

do
{
    cout << "Enter a positive integer: ";
    cin >> n;

}while ( n <= 1 || n == '0');

cout << endl;

// If even digit - tri
do
{
    lastDigit = n%10;

    if (lastDigit / 2 ==0)
    {
        for (int i = 1; i <= lastDigit; ++i)
            for (int tri = 1; tri <= i; ++tri)
                cout << "\t" << tri;

        cout << endl;
    }

    // if odd digit - rect
    else if (lastDigit / 2 != 0)
    {
        for (int i = 1; i <= lastDigit; i++)
        {
            for (int rect = 1; rect <= i; rect++)
                cout << "\t" << rect;

            cout << endl;
        }
        n = n/10;
    }

    cout << endl;

}while (lastDigit != 0);

n = n/10;
cout << endl;

return 0;

(其中一些文件引用是真实文件的符号链接 - 获取真实文件!)我还写了一篇关于让这个工作起作用的基本文章:https://pygot.wordpress.com/2016/10/13/connecting-r-studio-to-hadoop-via-hive/