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() 

나는 사용자 정의 SQL

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

감사를 사용하기위한 대응하는 것과 같습니다 알고 싶어 : 피닉스 문서에서

, 나는이 사용할 수있는 전체 테이블을로드합니다.

답변

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

우리가 어디서나 피닉스를 사용하도록 스파크에 말하지 않기 때문에 작동하지 않을 것입니다. Phoenix Documentation https://phoenix.apache.org/phoenix_spark.html –

관련 문제