2016-07-21 2 views
0

안녕하세요 스파크 작업에서 피닉스의 테이블을 만들어야합니다. 아래 2 가지 방법을 시도했지만 그 중 아무 것도 작동하지 않습니다. 아직 지원되지 않는 것 같습니다.스파크에서 피닉스의 테이블 만들기

1) Dataframe.write 여전히 테이블은 우리가 JDBC를 통해 피닉스에 연결하고 CREATE statemnt을 실행하려고하면

df.write.format("org.apache.phoenix.spark").mode("overwrite").option("table", schemaName.toUpperCase + "." + tableName.toUpperCase ).option("zkUrl", hbaseQuorum).save() 

2), 우리는 구문 분석 오류가 이전에 존재해야합니다 (생성 같은) 피닉스에서 작동

var ddlCode="create table test (mykey integer not null primary key, mycolumn varchar) " 

val driver = "org.apache.phoenix.jdbc.PhoenixDriver" 
val jdbcConnProps = new Properties() 
jdbcConnProps.setProperty("driver", driver); 
val jdbcConnString = "jdbc:phoenix:hostname:2181/hbase-unsecure" 
sqlContext.read.jdbc(jdbcConnString, ddlCode, jdbcConnProps) 

오류 : org.apache.phoenix.exception.PhoenixParserException : 오류 601 (42P00) : 구문 오류입니다. 1 행 15 열에 '작성'이 발생했습니다.

다른 문제를 겪은 사람이 누구입니까?

+0

위의 문제를 해결할 방법을 찾았습니까? 나는 또한 동일을 찾고 있었다. – pjain

답변

0

나는 마침내 이것에 대한 해결책을 찾았습니다. 기본적으로 내가 생각하기에 잘못 SQLContext 이것을 사용하는 방법을 사용하여 노력했다. 이 방법은 데이터 소스를 "읽는"방법으로 설계된 것 같습니다. 문제를 해결하는 방법은 기본적으로 Phoenix에 대한 표준 JDBC 연결을 여는 것입니다.

var ddlCode="create table test (mykey integer not null primary key, mycolumn varchar) " 
val jdbcConnString = "jdbc:hostname:2181/hbase-unsecure" 
val user="USER" 
val pass="PASS" 
var connection:Connection = null 
Class.forName(driver) 
connection = DriverManager.getConnection(jdbcConnString, user, pass) 
val statement = connection.createStatement() 
statement.executeUpdate(ddlCode) 
관련 문제