2016-06-15 7 views
3

Application.javaクラスに引数を渡すにはどうすればよいですか?私たちがjavaのメインメソッドで(String[] args)をどのように渡すか?Apache Apexのapplication.javaクラスに引数を渡すには?

参照が見つかりませんでした。誰かがこれに関する知識を共有できますか?

ありがとうございます。

答えて

3

構成として引数を渡すことができます。この設定は、Application.javaのpopulateDAG()メソッドの引数として渡されます。

設定はorg.apache.hadoop.conf.Configurationです。 xmlとして指定することができます。 xmlの構文については、https://hadoop.apache.org/docs/r2.6.1/api/org/apache/hadoop/conf/Configuration.htmlを参照してください。

  1. ~/.dt/dt-site.xml:デフォルトの頂点のCLIでは、このファイルを探します(〜自分のホームディレクトリである)

    は、プロパティを指定することができるさまざまな方法があります。このファイルは、環境内のすべてのアプリケーションに共通するプロパティに使用する必要があります。

  2. -conf apex cliのオプション:apex cliのlaunchコマンドは、プロパティを指定するために-confオプションを提供します。設定XMLのパスを指定する必要があります。このファイルは、特定のアプリケーション固有のプロパティまたはこのアプリケーションの起動に固有のプロパティに対して使用する必要があります。

  3. -Dproperty-name=value:apex cliのlaunchコマンドは、プロパティを指定する-Dオプションを提供します。あなたは、オペレータのプロパティを指定するため

構文など-Dproperty-NAME1 = VALUE1 -Dproperty-name2の= value2のような複数のプロパティを指定することができ、次のとおりです。

<property> 
     <name>dt.application.applicationName.operator.OperatorIdentifier.prop.property-name1</name> 
     <value>value1</value> 
</property> 

<property> 
     <name>dt.application.applicationName.operator.OperatorIdentifier.prop.property-name2</name> 
     <value>value2</value> 
</property> 

OperatorIdentifier /名前は、文字列識別子ですpopulateDAG()のdag.addOperator()に使用します。

+0

ありがとう@Yogi Devendra – Raja

0

受け入れ答えはオペレータプロパティを指定する方法について詳しく説明したり~/.dt/dt-site.xmlまたはApexのCLIを使用して、ここにあなたが(populateDag()方法でIE)Application.javaに使用できるプロパティを指定する方法を簡単な一例ですので、 。

ファイル内のXMLでのプロパティを指定します。このようなresources/META-INF/properties.xml

<configuration> 
    <!-- Specify some arbitrary app configs --> 
    <property> 
    <name>prop1</name> 
    <value>val1</value> 
    </property> 
    <property> 
    <name>prop2</name> 
    <value>val2</value> 
    </property> 

    <!-- Specify some other configs, i.e. operator properties --> 
    <property> 
    <name>dt.application.applicationName.operator.OperatorIdentifier.prop.property-name1</name> 
    <value>value1</value> 
    </property> 

</configuration> 

次に、あなたのApplication.javaあなたはこのような特性を得ることができますに:この代わりに、オペレータのプロパティを使用しての

public class Application implements StreamingApplication 
{ 

    @Override 
    public void populateDAG(DAG dag, Configuration conf) 
    { 
    String prop1 = conf.get("prop1"); 
    String prop2 = conf.get("prop2", "defaultValue"); // when the property is not set in XML, a default can be used 

    // populate your DAG here ... 
    } 
} 

をアプローチは、オペレータのコンストラクタなどでsetup()メソッドが実行される前に、オペレータにプロパティが必要な場合に非常に便利です。

関連する問題