0

プロセス中に、ハイブ統合をオンにして、kafka-connect を使用して HDFS にデータをストリーミングしようとしました。

私のユースケースでは、「FieldPartioner」をパーティショナー クラスとして使用する必要があります。

私の問題は、複数のパーティションを取得できないことです。

例:

私の例のJSON

{
  "_id": "582d666ff6e02edad83cae28",
  "index": "ENAUT",
  "mydate": "03-01-2016",
  "hour": 120000,
  "balance": "$2,705.80"
}

「mydate」と「hour」に基づいてパーティションを作成したい

私は次のことを試しました

name=hdfs-sink
connector.class=io.confluent.connect.hdfs.HdfsSinkConnector
tasks.max=1
topics=fieldPartition_test_hdfs
hdfs.url=hdfs://quickstart.cloudera:8020
flush.size=3

partitioner.class=io.confluent.connect.hdfs.partitioner.FieldPartitioner
partition.field.name={mydate,hour}

locale=en
timezone=GMT

hive.database=weblogs
hive.integration=true
hive.metastore.uris=thrift://quickstart.cloudera:9083
schema.compatibility=BACKWARD

また、partition.field.nameを次のように指定してみました

partition.field.name={'mydate','hour'}

partition.field.name=mydate,hour

そして、より多くのそのような組み合わせ

この問題に関するヘルプは大歓迎です

ありがとう。

4

1 に答える 1

1

私はこれを可能な限り試し、後でソースコードを掘り下げ始めました。

FieldPartitionerのコードはこちら

そして、ここのファイルへの最後のコミットは、「「サポートマルチパーティションフィールド」を3か月前に戻す」ことを示しています

他に解決策があれば教えてください。

于 2016-11-18T11:35:41.637 に答える