본문 바로가기
BigData 기술/Spark

[spark] spark에서 phoenix 테이블 읽고쓰기 (scala)

by 잇서니 2021. 1. 14.
반응형

 

spark에서 zookeeper를 통해 phoenix 테이블에 접근하는 방법을 정리한다.

 

1. Spark에서 Phoenix 테이블 읽기

import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.SaveMode

val sqlContext = new SQLContext(sc)
val df = sqlContext.load("org.apache.phoenix.spark",Map("table" -> "SUNNY_TEST", "zkUrl" -> "10.220.193.119:2181"))

df.show()

// orc로 지정안하면 디폴트가 파케이파일포맷. 
// 그럼 hive 파일 포맷 아니라면서 에러 뜸
df.write.mode(SaveMode.Overwrite).format("orc").saveAsTable("sunny_test_0807")
  • SQLContext를 사용하여 phoenix 테이블을 불러온다.
  • zookeeper client url을 사용하여 phoenix와 연동한다.
  • 이것을 Data Frame에 table 형태로 저장하여 spark에서 사용한다.
  • hdfs 경로(/user/hive/warehouse)에 유저 쓰기 권한이 필요하다.

 

 

2. Spark에서 Phoenix 테이블 쓰기

// spark->phoenix (주의! pk가 같으면 위에 있는 row가 들어감)

import org.apache.spark.sql._

//val df = spark.table("sunny_test_0807")
val df = spark.sql("select * from sunny_test_0807")

df.show()
df.write.format("org.apache.phoenix.spark").mode(SaveMode.Overwrite).options(collection.immutable.Map("table" -> "SUNNY_TEST", "zkUrl" -> "10.220.193.119:2181")).save()
  • spark 테이블의 결과(select * from sunny_test_0807)를 phoenix 테이블에 저장한다.
  • 이 때 phoenix 테이블 이름과 zookeeper client url이 필요하다.

 

phoenix queryserver를 통해 jdbc로 phoenix 테이블에 접근할 수도 있다. (코드는 더 찾아봐야 한다.)

 

 

반응형

댓글