我有一个运行3.6的 HDInsight 群集,根据docs捆绑包仅限Spark 2.1.0。
显然Livy尚未与此版本集成并尝试 curl Livy(如Spark作业建议的Azure教程文档)导致HTTP 502 BAD GATEWAY
响应 - 所以我是试图手动提交火花作业。
但是,当我进入主节点并使用spark-submit
时,我立即注意到包装器脚本打印了以下内容:
SPARK_MAJOR_VERSION is set to 1, using spark1
所以我假设设置SPARK_MAJOR_VERSION = 2将强制它运行spark2,并且包装器会检测到它并按原样打印它。但火花的版本实际上并没有改变。我得到了一个二进制不兼容的错误(与Scala一样神秘 - 关于funcArrow
)。
我查看了spark-wrapper.sh
文件,找到了处理不同版本spark的位置:
else
echo -e "SPARK_MAJOR_VERSION is set to ${SPARK_MAJOR_VERSION}, using Spark${SPARK_MAJOR_VERSION}" 1>&2
SCRIPT="/usr/hdp/current/spark${SPARK_MAJOR_VERSION}-client/bin/${FILE}"
fi
所以,我在spark-shell
内启动了/usr/hdp/current/spark2-client
可执行文件,它立即打印出以下内容:
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 1.6.3
/_/
Using Scala version 2.10.5 (OpenJDK 64-Bit Server VM, Java 1.8.0_131)
Spark 2.1.0使用Scala 2.11 - 2.10会显示弃用警告 - 所以HDInsight绝对使用Spark 1.x
我错过了什么或这是一个已知的问题吗?
其他信息:
我使用powershell cmdlet创建了此集群 - 但集群肯定是3.6
。
答案 0 :(得分:0)
这看起来不像HDI 3.6集群。或者实例出了问题。
你能查一下这个版本吗?检查Azure门户或ssh会话类型:if (abs(Row1-Row2)>1 && abs(Col1-Col2)>1){
vector<vector<int> > OutPut;
// OutPut dies here
}else{
vector<int> OutPut;
// OutPut dies here
}
// here is no OutPut
。此命令将打印实际位的版本文件夹。它应显示:2.6.0.10-29或类似的基于3.6的群集。
答案 1 :(得分:0)
事实证明,因为我使用powershell azure cmdlet配置集群,所以无法指定我需要的集群类型(不管怎么说,我都不知道)。我已经把“故障”了一个,但我知道我在创建版本设置为3.6时没有收到任何错误。似乎HDInsight 3.6并不一定与Spark2一起使用。
简而言之,使用ARM(Azure资源管理器)的模板系统进行配置要好得多。这样做会立即让我得到一个以Spark2为默认值的提示。查看模板时,它非常清楚地表明群集类型为SPARK2
。