Helpex - Trao đổi & giúp đỡ Đăng nhập
22

Tôi biết đây là một câu hỏi tầm thường, nhưng tôi không thể tìm thấy câu trả lời trên internet.

Tôi đang cố gắng chạy một lớp Java với mainhàm có đối số chương trình ( String[] args).

Tuy nhiên, khi tôi gửi công việc bằng cách sử dụng spark-submitvà chuyển các đối số chương trình như tôi sẽ làm với

java -cp <some jar>.jar <Some class name> <arg1> <arg2>

nó không đọc args.

Lệnh tôi đã thử chạy là

bin/spark-submit analytics-package.jar --class full.package.name.ClassName 1234 someargument someArgument

và điều này mang lại

Error: No main class set in JAR; please specify one with --class

và khi tôi thử:

bin/spark-submit --class full.package.name.ClassName 1234 someargument someArgument analytics-package.jar 

tôi có

Warning: Local jar /mnt/disk1/spark/1 does not exist, skipping.
java.lang.ClassNotFoundException: com.relcy.analytics.query.QueryAnalytics
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:176)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:693)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:183)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:208)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:122)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

Làm cách nào để chuyển những đối số này? Chúng thay đổi thường xuyên trong mỗi lần thực hiện công việc và chúng cần được chuyển dưới dạng đối số.

22 hữu ích 1 bình luận 55k xem chia sẻ
39

Các đối số được truyền trước tệp .jar sẽ là đối số đối với JVM, trong đó các đối số được truyền sau tệp jar sẽ được chuyển đến chương trình của người dùng.

bin/spark-submit --class classname -Xms256m -Xmx1g something.jar someargument

Ở đây, ssẽ bằng someargument, trong khi đó -Xms -Xmxđược chuyển vào JVM.

public static void main(String[] args) {

    String s = args[0];
}
39 hữu ích 1 bình luận chia sẻ
8

Tôi đã tìm thấy lệnh chính xác từ hướng dẫn này .

Lệnh phải có dạng:

bin/spark-submit --class full.package.name.ClassName analytics-package.jar someargument someArgument
8 hữu ích 0 bình luận chia sẻ
1
spark-submit --class SparkWordCount --master yarn --jars <jar1.jar>,<jar2.jar>
sparkwordcount-1.0.jar /user/user01/input/alice.txt /user/user01/output
1 hữu ích 0 bình luận chia sẻ
0

Đối số không được công nhận đầu tiên được coi là primaryResource (tệp jar trong trường hợp của chúng tôi). Checkout SparkSubmitArguments.handleUnknown

Tất cả các đối số sau PrimaryResource được coi là các đối số của ứng dụng. Checkout SparkSubmitArguments.handleExtraArgs

Để hiểu rõ hơn về cách các đối số được phân tích cú pháp, hãy xem SparkSubmitOptionParser.parse . 2 phương thức trên được gọi từ phương thức này

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ java apache-spark , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading