3

Nifi 0.4.1 バージョンを使用しています。CSV を avro 形式に変換するカスタム コードを作成しています。クラスファイルを作成し、narファイルを生成できました。nar ファイルを lib ディレクトリに配置し、nifi サーバーを再起動しました。

クラス ファイルにエラーや警告はありません。

プロセッサを nifi 作業領域にドラッグすると、csv を avro に変換するために作成されたクラスが表示されません。

どんな助けでも感謝..

ありがとう、

4

1 に答える 1

7

プロセッサの問題を診断するために、いくつかのことを確認できます。

  1. プロバイダー構成ファイル
  2. プロセッサ クラス
  3. lib ディレクトリの NAR
  4. nifi-app.log の ExtensionManager エントリ
  5. nifi-app.log のエラー

すでにいくつか確認されているようですが、すべて確認してください。

プロバイダー構成ファイル

プロセッサーは、Java コードと同じ nar ファイル内のサービス構成ファイルで参照する必要があります。ファイルには という名前が付けられorg.apache.nifi.processor.Processor、Processor 実装の行ごとに 1 つの完全修飾クラス名が含まれます。このnifi-solr-processors のプロバイダー設定のような例を見ると役に立ちます。

org.apache.nifi.processors.solr.PutSolrContentStream
org.apache.nifi.processors.solr.GetSolr

プロセッサ クラス

org.apache.nifi.processor.Processorプロセッサ クラスが public、implements 、inherited from org.apache.nifi.processor.AbstractProcessor、または別の Processor 実装であることを確認してください。完全修飾クラス名が上記のプロバイダー構成ファイルと一致していることを確認する必要があります。

public abstract class SolrProcessor extends AbstractProcessor {
...
public class GetSolr extends SolrProcessor {
...
public class PutSolrContentStream extends SolrProcessor {
...

libディレクトリ内の NAR

nar ファイルは、NiFi インストールの lib ディレクトリに配置する必要があります。セットアップで重要な場合は、NiFi ユーザーにアクセス許可があることを確認してください。あなたはすでにこれをチェックしたようですね。

nifi-app.log の ExtensionManager エントリ

NiFi を起動したら、 を参照してlogs/nifi-app.logください。ExtensionManager は、見つかって lib ディレクトリからロードされたすべての拡張機能のリストを出力します。これは次のようになります (長さは編集されています)。

org.apache.nifi.nar.ExtensionManager Extension Type Mapping to Classloader:
=== ControllerService type || Classloader ===
org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService || org.apache.nifi.nar.NarClassLoader[.\work\nar\extensions\nifi-aws-nar-0.6.0-SNAPSHOT.nar-unpacked]
org.apache.nifi.distributed.cache.server.DistributedSetCacheServer || org.apache.nifi.nar.NarClassLoader[.\work\nar\extensions\nifi-distributed-cache-services-nar-0.6.0-SNAPSHOT.nar-unpacked]
org.apache.nifi.distributed.cache.client.DistributedSetCacheClientService || org.apache.nifi.nar.NarClassLoader[.\work\nar\extensions\nifi-distributed-cache-services-nar-0.6.0-SNAPSHOT.nar-unpacked]
...
=== End ControllerService types ===
=== Processor type || Classloader ===
org.apache.nifi.processors.standard.GetHTTP || org.apache.nifi.nar.NarClassLoader[.\work\nar\extensions\nifi-standard-nar-0.6.0-SNAPSHOT.nar-unpacked]
org.apache.nifi.processors.script.ExecuteScript || org.apache.nifi.nar.NarClassLoader[.\work\nar\extensions\nifi-scripting-nar-0.6.0-SNAPSHOT.nar-unpacked]
org.apache.nifi.processors.aws.s3.DeleteS3Object || org.apache.nifi.nar.NarClassLoader[.\work\nar\extensions\nifi-aws-nar-0.6.0-SNAPSHOT.nar-unpacked]
org.apache.nifi.processors.standard.ExecuteSQL || org.apache.nifi.nar.NarClassLoader[.\work\nar\extensions\nifi-standard-nar-0.6.0-SNAPSHOT.nar-unpacked]
org.apache.nifi.processors.mongodb.GetMongo || org.apache.nifi.nar.NarClassLoader[.\work\nar\extensions\nifi-mongodb-nar-0.6.0-SNAPSHOT.nar-unpacked]
...

プロセッサ、コントローラ サービス、またはレポート タスクがこのリストに表示されるようにします。

nifi-app.log のエラー

見つかってロードされた場合、コードの実行時に例外がスローされる場合もあります。これは にも表示されnifi-app.logます。たとえば、プロバイダー構成ファイルに間違ったクラス名を入力すると、次の「プロバイダーが見つかりません」というエラーが発生します。

java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider org.apache.nifi.processors.test.TestProcessor not found
    at java.util.ServiceLoader.fail(ServiceLoader.java:239) ~[na:1.8.0_65]
    at java.util.ServiceLoader.access$300(ServiceLoader.java:185) ~[na:1.8.0_65]
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372) ~[na:1.8.0_65]
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) ~[na:1.8.0_65]
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480) ~[na:1.8.0_65]
    at org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:107) ~[nifi-nar-utils-0.6.0-SNAPSHOT.jar:0.6.0-SNAPSHOT]
    at org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:88) ~[nifi-nar-utils-0.6.0-SNAPSHOT.jar:0.6.0-SNAPSHOT]
    at org.apache.nifi.NiFi.<init>(NiFi.java:120) ~[nifi-runtime-0.6.0-SNAPSHOT.jar:0.6.0-SNAPSHOT]
    at org.apache.nifi.NiFi.main(NiFi.java:227) ~[nifi-runtime-0.6.0-SNAPSHOT.jar:0.6.0-SNAPSHOT]
于 2016-02-26T05:24:50.727 に答える