반응형
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 테이블에 접근할 수도 있다. (코드는 더 찾아봐야 한다.)
반응형
'BigData 기술 > Spark' 카테고리의 다른 글
RDS -> Spark(AWS EMR) -> Neo4jDB (4) | 2021.08.15 |
---|---|
[spark] spark streaming + kafka (547) | 2020.08.10 |
SPARK에서 저장소(HDFS, Hive 등)에 접근하는 방식 (745) | 2020.07.31 |
[Spark] Spark 예제 - 데이터 로딩, 조인, 필터링, 정렬 (4) | 2020.07.10 |
[Spark] Spark 예제 - 고객별 구매횟수, 구매금액 등 구해보기 (count, sum, sort) (4) | 2020.07.06 |
댓글