2016-11-29 2 views
3

Laden würde ich gerne wissen, wie das genau funktioniertvon Phoenix Filtern, wenn eine Tabelle

df = sqlContext.read \ 
      .format("org.apache.phoenix.spark") \ 
      .option("table", "TABLE") \ 
      .option("zkUrl", "10.0.0.11:2181:/hbase-unsecure") \ 
      .load() 

wenn dies die gesamte Tabelle wird geladen oder es wird verzögert das Laden zu wissen, ob eine Filterung angewandt werden.

Im ersten Fall, wie ist die Art und Weise zu sagen, Phoenix die Tabelle vor dem Laden in den Funken Datenframe zu filtern?

Danke

Antwort

3

Die Daten werden erst geladen, wenn Sie eine Aktion ausführen, die dies erfordert. Alle Filter in der Mitte:

df.where($"foo" === "bar").count 

wird von Spark gedrückt werden, wenn es möglich ist. Sie können die Ergebnisse der Prädikat Pushdown beobachten, indem Sie explain()

+0

Ich weiß es für andere Art von Lasten, aber ich kann nicht einen Filter vor der Last jetzt setzen: S. (Ich bin mit pyspark und phoenix) –

+0

@PabloCastilla Wenn Sie 'spark. (..). Load(). Where (...). Count' schreiben, wird Spark automatisch Prädikat Pushdown ausführen. Sie müssen sich nicht damit befassen –

+1

Sie sind völlig richtig. Ich habe das mit der Funktion explain() gesehen. Danke! –

Verwandte Themen