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

SparkR on Windows - Spark SQL is not built with Hive support

我正在尝试在我的机器上本地使用 Spark,我能够在以下位置重现该教程:

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

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

Error in value[3L] : Spark SQL is not built with Hive support

代码:

## 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.

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

如果您只是按照教程的说明进行操作,那么您根本就没有安装 Hive(尝试从命令行 hive)...我发现这是 Spark 初学者的一个常见困惑点: "pre-built for Hadoop"并不意味着它需要 Hadoop,更不意味着它包含Hadoop(它没有),Hive也是如此。

我们遇到了同样的问题,但我们不能简单地移动到 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_HOME 如 hadoop winutils
  • 所述
  • 运行 winutils.exe chmod -R 777 C:\tmp\hive

这解决了我们 windows 机器上的问题,我们现在可以 运行 具有配置单元支持的 SparkR。