1

誰かが、カスタムApache Phoenix SQLクエリを実行し、そのクエリの結果をRDDまたはDFに格納する方法について、pysparkを使用している例を提供できますか。注:RDDに読み込むテーブル全体ではなく、カスタムクエリを探しています。フェニックスのドキュメントからPySparkでカスタムApache Phoenix SQLクエリを実行する

、私はこれを使用することができ、テーブル全体をロードする:

table = sqlContext.read \ 
     .format("org.apache.phoenix.spark") \ 
     .option("table", "<TABLENAME>") \ 
     .option("zkUrl", "<hostname>:<port>") \ 
     .load() 

私は

sqlResult = sqlContext.read \ 
      .format("org.apache.phoenix.spark") \ 
      .option("sql", "select * from <TABLENAME> where <CONDITION>") \ 
      .option("zkUrl", "<HOSTNAME>:<PORT>") \ 
      .load() 

おかげカスタムSQLを使用するための対応と同等であるかを知りたいです。

答えて

1

である:それは注意すべきであるしかし

sql = '(select COL1, COL2 from TABLE where COL3 = 5) as TEMP_TABLE' 

df = sqlContext.read.format('jdbc')\ 
     .options(driver="org.apache.phoenix.jdbc.PhoenixDriver", url='jdbc:phoenix:<HOSTNAME>:<PORT>', dbtable=sql).load() 

df.show() 

こと、その後のSQLステートメントの列の別名がある場合。 show()文は例外をスローします(エイリアス化されていない列を選択するために.select()を使用すると動作します)、これはPhoenixのバグです。

+0

へのリンクです。これは答えか質問の一部ですか? – YOU

+0

それは私がやりたいことを達成するためにJDBCを使いましたが、Phoenix Sparkオプションを使う方が良いでしょう。それで私の試みとそれに対応するエラーメッセージです。 –

+0

質問は最初の投稿で編集する必要があります。これは回答セクションです。 stackoverflowは、通常のフォーラムのようではありません。 – YOU

0

ここでカスタムクエリを処理するには.sqlを使用する必要があります。ここでは下記のように、これは、JDBCデータソースとしてフェニックスを使用して行うことができる構文

dataframe = sqlContext.sql("select * from <table> where <condition>") 
dataframe.show() 
+0

私たちがSparkにどこにでもPhoenixを使用するよう指示しているわけではありません。これはPhoenix Documentation https://phoenix.apache.org/phoenix_spark.html –

関連する問題