我正在尝试在我的机器中使用Spark localy,我能够在以下位置重现教程:
但是,当我尝试使用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.
但是,错误仍然存在。
答案 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>
winutils.exe chmod -R 777 C:\tmp\hive
这解决了我们的Windows机器上的问题,我们现在可以使用hive支持运行SparkR。