Windows上的SparkR - Spark SQL不是使用Hive支持构建的

时间:2015-11-16 01:33:11

标签: r apache-spark hive sparkr

我正在尝试在我的机器中使用Spark localy,我能够在以下位置重现教程:

http://blog.sparkiq-labs.com/2015/07/26/installing-and-starting-sparkr-locally-on-windows-os-and-rstudio/

但是,当我尝试使用Hive时,我收到以下错误:

  

值[3L]中的错误:Spark SQL不是使用Hive支持构建的

代码:

## Set Environment variables
Sys.setenv(SPARK_HOME = 'F:/Spark_build')
# Set the library Path
.libPaths(c(file.path(Sys.getenv('SPARK_HOME'), 'R','lib'),.libPaths()))

# load  SparkR
library(SparkR)

sc <- sparkR.init()
sqlContext <- sparkRHive.init(sc)

sparkR.stop()

首先我怀疑它是Spark的预构建版本,然后我尝试使用Maven构建我自己的版本,花费了将近一个小时:

mvn -Pyarn -Phadoop-2.6 -Dhadoop.version=2.6.0 -Phive -Phive-thriftserver -DskipTests clean package.

但是,错误仍然存​​在。

2 个答案:

答案 0 :(得分:1)

如果您只是按照教程的说明操作,那么您根本就没有安装Hive(从命令行尝试 List<RowFilter<Object,Object>> filters = new ArrayList<RowFilter<Object,Object>>(8); List<RowFilter<Object,Object>> filter = new ArrayList<RowFilter<Object,Object>>(4); filters.add(RowFilter.regexFilter(searchNameTxt.getText(), 1)); filters.add(RowFilter.regexFilter(searchNameTxt.getText(), 2)); filters.add(RowFilter.regexFilter(searchNameTxt.getText(), 3)); filters.add(RowFilter.regexFilter(searchNameTxt.getText(), 4)); RowFilter<Object,Object> orFilter = RowFilter.orFilter(filter); filters.add(orFilter); String gen = (String) searchGender.getSelectedItem(); if(gen.equals("Male")) gen = "M"; else gen = "F"; filters.add(RowFilter.regexFilter(gen, 5)); filters.add(RowFilter.regexFilter(searchMailTxt.getText(), 6)); filters.add(RowFilter.regexFilter(searchContactTxt.getText(), 7)); filters.add(RowFilter.regexFilter(searchContactTxt.getText(), 8)); rf = RowFilter.andFilter(filters); }catch(java.util.regex.PatternSyntaxException e){ System.out.println("Unable to parse"); return ; } sorter.setRowFilter(rf); )......我发现这对于Spark初学者来说是一个常见的混淆点:“pre - 为Hadoop构建“并不意味着需要 Hadoop,更不用说它包含Hadoop(它没有),Hive也是如此。

答案 1 :(得分:0)

我们遇到了同样的问题,但我们不能简单地转向Linux。过了一会儿,我们找到了这个页面spark on windows,我们提出了以下解决方案:

  • 创建一个名为hive-site.xml的文件并写入其中:

    <configuration> <property> <name>hive.exec.scratchdir</name> <value>C:\tmp\hive</value> <description>Scratch space for Hive jobs</description> </property> </configuration>

  • 将环境变量HADOOP_CONF_DIR设置为hive-site.xml目录。
  • 按照hadoop winutils
  • 中的说明设置环境变量HADOOP_HOME
  • 运行winutils.exe chmod -R 777 C:\tmp\hive

这解决了我们的Windows机器上的问题,我们现在可以使用hive支持运行SparkR。