Apache Livy不适用于本地jar文件

时间:2018-06-26 08:30:20

标签: scala apache-spark livy

我正在尝试使用spark-submit运行本地jar文件,它运行得很好。这是命令-

Tree of work items

但是当我尝试卷曲时

spark-submit --class "SimpleApp" --master local myProject/target/scala-2.11/simple-project_2.11-1.0.jar

抛出错误

curl -X POST --data '{
 "file": "file:///home/user/myProject/target/scala-2.11/simple-project_2.11-1.0.jar",
 "className": "SimpleApp",
}'  
-H 
"Content-Type: application/json" 
http://server:8998/batches

这是我的livy.conf文件,因为有些文章建议更改一些内容。

"requirement failed: Local path /home/user/myProject/target/scala-2.11/simple-project_2.11-1.0.jar cannot be added to user sessions."

请帮助我。

谢谢。

3 个答案:

答案 0 :(得分:1)

最近,我在用cURL创建错误请求时,从Apache Livy获得了本地文件读取的解决方案。我只是将'file://'中的文件读取协议替换为'local:/',对我有用。

CREATE USER [xxx@yyy.com] FROM EXTERNAL PROVIDER; 
GO
sp_addrolemember db_datareader,  [xxx@yyy.com];  
GO
sp_addrolemember
db_datawriter,  [xxx@yyy.com];  
GO

那是一个很小的错误,但是仍然无法从HDFS访问我的jar文件。

谢谢大家的帮助。

答案 1 :(得分:0)

必须存在Apache Livy jar文件。没有相应的jar文件,它将无法正常工作。

接下来是我的建议:只需将livy jar文件附加到java's cp option的类路径中即可:

java -cp /usr/local/livy.jar com.myclass.Main

或仅使用SBT:

libraryDependencies += "org.apache.livy" % "livy-api" % "0.4.0-incubating"

行家:

<dependency>
    <groupId>org.apache.livy</groupId>
    <artifactId>livy-api</artifactId>
    <version>0.4.0-incubating</version>
</dependency>

或者您最喜欢的构建工具。

顺便说一句,您还可以将livy jar文件上传到HDFS并在Hadoop集群上使用它,这可以大大简化您的生活。

答案 2 :(得分:0)

以下答案对我有效,如此处所述 Apache Livy cURL not working for spark-submit command

要将本地文件用于livy批处理作业,您需要将本地文件夹添加到livy.conf中的livy.file.local-dir-whitelist属性。

livy.conf.template中的描述:

允许将文件添加到用户会话的本地目录列表。默认情况下为空,这意味着用户只能在启动会话时引用远程URI。