2016-08-19 3 views
0

다음 코드를 사용하여 스파크 데이터 프레임을 JDBC 연결을 통해 임팔라로 작성합니다. java.sql.SQLException의 :임팔라 데이터베이스에 스파크 데이터 프레임을 작성하는 방법

df.write.mode("append").jdbc(url="jdbc:impala://10.61.1.101:21050/test;auth=noSasl",table="t_author_classic_copy", pro) 

그러나 나는 다음과 같은 오류가 없음 적합한 드라이버가

발견 한 후 나는 모드 변경 :

df.write.mode("overwrite").jdbc(url="jdbc:impala://10.61.1.101:21050/test;auth=noSasl",table="t_author_classic_copy", pro) 

을하지만 여전히 오류가 발생 :

CAUSED BY: Exception: Syntax error 
), Query: CREATE TABLE t_author_classic_copy1 (id TEXT NOT NULL, domain_id TEXT NOT NULL, pub_num INTEGER , cited_num INTEGER , rank DOUBLE PRECISION). 
+0

* "를 찾았 적절한 드라이버"를 --jars 없습니다. Cloudera 웹 사이트에서 Impala JDBC 드라이버를 다운로드 했습니까? Spark를 실행하는 시스템에 배포 했습니까? JAR을 Spark CLASSPATH에 추가 했습니까? (예 :'spark-defaults.conf의'spark.driver.extraClassPath' 항목 사용) '? –

+0

예, Cloudera에서 드라이버를 다운로드했는데 JDBC를 사용하여 임팔라에서 데이터를 읽을 수 있지만 dataframe의 write 함수를 호출하면 오류가 발생했습니다 –

답변

0

나를 위해 일하는이 :

아주 명시 적 - 0

스파크 쉘은 --driver 클래스 경로 ImpalaJDBC41.jar *이 ImpalaJDBC41.jar

val jdbcURL = s"jdbc:impala://192.168.56.101:21050;AuthMech=0" 

val connectionProperties = new java.util.Properties() 

import org.apache.spark.sql.SaveMode 

sqlContext.sql("select * from my_users").write.mode(SaveMode.Append).jdbc(jdbcURL, "users", connectionProperties) 
+0

적절한 들여 쓰기를 사용하여 코드를 형식화하십시오 (4 공백) – Luuklag

+0

실제로 df라는 데이터 프레임에 관한 질문 이었기 때문에 대답은 spark SQL 테이블 대신 df.write.mode (... –