Apache Livy 不适用于本地 jar 文件
Apache Livy doesn't work with local jar file
我正在尝试使用 spark-submit 运行 本地 jar 文件,它工作得很好。这是命令-
spark-submit --class "SimpleApp" --master local myProject/target/scala-2.11/simple-project_2.11-1.0.jar
但是当我尝试使用 curl 时
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
抛出错误
"requirement failed: Local path /home/user/myProject/target/scala-2.11/simple-project_2.11-1.0.jar cannot be added to user sessions."
这是我的 livy.conf 文件,正如某些文章所建议的那样,需要更改一些内容。
# What host address to start the server on. By default, Livy will bind to all network interfaces.
livy.server.host = 0.0.0.0
# What port to start the server on.
livy.server.port = 8998
# What spark master Livy sessions should use.
livy.spark.master = local
# What spark deploy mode Livy sessions should use.
livy.spark.deploy-mode = client
# List of local directories from where files are allowed to be added to user sessions. By
# default it's empty, meaning users can only reference remote URIs when starting their
# sessions.
livy.file.local-dir-whitelist= /home/user/.livy-sessions/
请帮我解决这个问题。
提前致谢。
存在 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 集群上使用它,它可以大大简化您的生活。
我最近在使用cURL创建错误请求时从Apache Livy得到了读取本地文件的解决方案。我刚刚用 'local:/' 替换了 'file://' 的文件读取协议,这对我有用。
curl -X POST --data '{
"file": "local:/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
这是一个很小的错误,但仍然无法从 HDFS 访问我的 jar 文件。
谢谢大家的帮助。
如此处所述,以下答案对我有用
Apache Livy cURL not working for spark-submit command
要将本地文件用于 livy 批处理作业,您需要将本地文件夹添加到 livy.file.local-dir-whitelist 属性 in livy.conf.
来自 livy.conf. 模板的描述:
允许将文件添加到用户会话的本地目录列表。默认情况下它是空的,这意味着用户在开始他们的会话时只能引用远程 URI。
我正在尝试使用 spark-submit 运行 本地 jar 文件,它工作得很好。这是命令-
spark-submit --class "SimpleApp" --master local myProject/target/scala-2.11/simple-project_2.11-1.0.jar
但是当我尝试使用 curl 时
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
抛出错误
"requirement failed: Local path /home/user/myProject/target/scala-2.11/simple-project_2.11-1.0.jar cannot be added to user sessions."
这是我的 livy.conf 文件,正如某些文章所建议的那样,需要更改一些内容。
# What host address to start the server on. By default, Livy will bind to all network interfaces.
livy.server.host = 0.0.0.0
# What port to start the server on.
livy.server.port = 8998
# What spark master Livy sessions should use.
livy.spark.master = local
# What spark deploy mode Livy sessions should use.
livy.spark.deploy-mode = client
# List of local directories from where files are allowed to be added to user sessions. By
# default it's empty, meaning users can only reference remote URIs when starting their
# sessions.
livy.file.local-dir-whitelist= /home/user/.livy-sessions/
请帮我解决这个问题。
提前致谢。
存在 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 集群上使用它,它可以大大简化您的生活。
我最近在使用cURL创建错误请求时从Apache Livy得到了读取本地文件的解决方案。我刚刚用 'local:/' 替换了 'file://' 的文件读取协议,这对我有用。
curl -X POST --data '{
"file": "local:/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
这是一个很小的错误,但仍然无法从 HDFS 访问我的 jar 文件。
谢谢大家的帮助。
如此处所述,以下答案对我有用 Apache Livy cURL not working for spark-submit command
要将本地文件用于 livy 批处理作业,您需要将本地文件夹添加到 livy.file.local-dir-whitelist 属性 in livy.conf.
来自 livy.conf. 模板的描述:
允许将文件添加到用户会话的本地目录列表。默认情况下它是空的,这意味着用户在开始他们的会话时只能引用远程 URI。