我正在尝试使用Hive Thrift和JDBC接口编写一个非平凡的Hive作业,而我在设置一个像样的JUnit测试时遇到了麻烦.非平凡,我的意思是这项工作至少会产生一个MapReduce阶段,而不是只处理Metastore.
测试应该启动一个Hive服务器,将一些数据加载到一个表中,在该表上运行一些非平凡的查询,并检查结果.
我根据Spring参考连接了Spring上下文.但是,MapReduce阶段的作业失败,抱怨没有Hadoop二进制文件存在:
java.io.IOException:无法运行程序"/ usr/bin/hadoop"(在目录"/ Users/yoni/opower/workspace/intellij_project_root"中):error = 2,没有这样的文件或目录
问题是Hive Server在内存中运行,但依赖于Hive的本地安装才能运行.为了让我的项目自成一体,我需要嵌入Hive服务,包括HDFS和MapReduce集群.我尝试使用相同的Spring方法启动Hive服务器并将其指向MiniDFSCluster和MiniMRCluster,类似于Hive QTestUtil源和HBaseTestUtility中使用的模式.但是,我无法让它发挥作用.
经过三天试图纠缠Hive集成测试后,我想我会问社区:
我看过的其他资源:
编辑:我完全清楚,针对Hadoop集群(无论是本地还是远程),可以针对全栈Hive实例运行集成测试.如上所述,问题在于,这不是有效测试Hive工作流的可行解决方案.
我正在努力为我公司的R数据访问包添加HiveServer2支持.我很好奇生成R Thrift客户端的最佳方法是什么.我正在考虑在Java Thrift客户端上编写一个R包装器,类似于rhbase所做的,但如果可能的话,我更喜欢纯R解决方案.
注意事项:
beeline客户端包含在R的优点中.R是否有依赖项管理工具来促进项目特定的依赖项?我正在寻找类似于Java的maven,Ruby的捆绑器,Python的virtualenv,Node的npm等等.
我知道DESCRIPTION文件中的"Depends"子句以及R_LIBS工具,但这些似乎不能协同工作以提供一些非常常见的工作流程的解决方案.
我基本上希望能够检查一个项目并运行一个命令来构建和测试项目.该命令应将任何所需的包安装到特定于项目的库中,而不会影响全局R安装.例如:
my_project/.Rlibs/*
Run Code Online (Sandbox Code Playgroud) 我在构建以下软件包时遇到了一个问题:https://github.com/yoni/rbundler
我的测试试图bundle在一个具有单一依赖关系的普通包上运行rbundler的命令.测试在我的OSX机器上传递,但在我的x86_64-redhat-linux-gnu Jenkins服务器上失败了.这两台机器都运行R 2.15.1和devtools0.7.1,其中包括此错误修复.
完整的测试输出可以在这个要点中找到.
以下是我看到的错误的简短摘要:
Error in file(filename, "r", encoding = encoding) :
cannot open the connection
Calls: local ... eval.parent -> eval -> eval -> eval -> eval -> source -> file
In addition: Warning message:
In file(filename, "r", encoding = encoding) :
cannot open file 'startup.Rs': No such file or directory
Execution halted
Run Code Online (Sandbox Code Playgroud)
这样做的背景是我正在尝试为R构建一个依赖管理系统.这个想法是R项目应该能够在不使用系统范围或用户范围的库的情况下运行.相反,R项目将在其根目录下安装它自己的库.
对于我之前与R中的依赖关系管理相关的Stack Overflow问题,请参阅R中的依赖关系管理
我遇到了RMySQL在OS X上安装软件包的问题.软件包安装似乎有效,但是在测试软件包加载时,它总是会失败:
* installing *source* package ‘RMySQL’ ... . .(omitted for brevity. see the gist linked below for the full installation log) . ** testing if installed package can be loaded Error : .onLoad failed in loadNamespace() for 'RMySQL', details: call: dyn.load(file, DLLpath = DLLpath, ...) error: unable to load shared object '/Library/Frameworks/R.framework/Versions/2.15/Resources/library/RMySQL/libs/i386/RMySQL.so': dlopen(/Library/Frameworks/R.framework/Versions/2.15/Resources/library/RMySQL/libs/i386/RMySQL.so, 6): Symbol not found: _mysql_affected_rows Referenced from: /Library/Frameworks/R.framework/Versions/2.15/Resources/library/RMySQL/libs/i386/RMySQL.so Expected in: flat namespace in /Library/Frameworks/R.framework/Versions/2.15/Resources/library/RMySQL/libs/i386/RMySQL.so Error: loading failed Execution halted ERROR: loading failed * removing …
将OS X从Lion升级到Mountain Lion后,每当我打开R文件时,都会收到以下警告:
Please, set the variable 'g:vimrplugin_term_cmd' in your .vimrc.^@Read the plugin documentation for details.
Run Code Online (Sandbox Code Playgroud)
知道为什么这不起作用吗?Lion的哪些变化使插件OS X无法找到终端?