source

스파크 SQL JDBC에서 열 이름만 반환

bestscript 2022. 10. 23. 11:40

스파크 SQL JDBC에서 열 이름만 반환

Scala 2.11의 Spark SQL을 사용하여 데이터베이스 테이블을 조회합니다.나는 인터넷에 나와 있는 예를 따라 했다.

사용하고 있는 DB: Ubuntu 14.04 위의 mariadb 5.5 쿼리하는 테이블(SOURCES)에는 다음과 같은 열이 있습니다.

`srcname` char(60) NOT NULL,
`endpoint` char(255) NOT NULL,
`pan` char(60) NOT NULL,
`vid` char(10)

제 코드는 다음과 같습니다.

val sparkSession = SparkSession.builder().master("local[*]").appName("somename").getOrCreate()
val df1 = sparkSession.read
.format("jdbc")
.option("driver", "org.mariadb.jdbc.Driver")
.option("url", url)
.option("dbtable", "SOURCES")
.option("user", username)
.option("password", password)
.load()   

df1.show()

이것에 의해, 다음의 출력이 표시됩니다.

+-------+--------+---+---+
|srcname|endpoint|pan|vid|
+-------+--------+---+---+
|srcname|endpoint|pan|vid|
|srcname|endpoint|pan|vid|
|srcname|endpoint|pan|vid|
+-------+--------+---+---+

즉, 데이터를 제공하지 않고 각 행에 대해 열 이름을 반복합니다.내 테이블은 세 줄로 되어 있다.db의 행 수를 변경하려고 시도했지만 그에 따라 출력도 변경됩니다.

또한 다양한 사이트에서 언급되는 다른 방법을 시도했습니다.

val prop = new java.util.Properties
prop.setProperty("user",username)
prop.setProperty("password",password)
prop.setProperty("driver","org.mariadb.jdbc.Driver")

val df2 = sparkSession.read.jdbc(url, "SOURCES", "srcname", 0, 5, 1, prop) 
df2.show()

이 경우에도 동일한 출력이 제공됩니다.

나의 스파크 의존관계는 다음과 같습니다.

compile 'org.apache.spark:spark-core_2.11:2.0.0'
compile 'org.apache.spark:spark-sql_2.11:2.0.0'

여기서 무슨 일이 일어나고 있는지 도와줄 사람 있나요?

문제를 해결했다.jdbc 드라이버입니다.

'org.mariadb.jdbc:'mariadb-java-client:1.5.4' 

그게 문제의 원인이야mysql 드라이버 사용.

'mysql: mysql-connector-java:5.1.6' 

마법처럼 작동한다.

언급URL : https://stackoverflow.com/questions/40547993/spark-sql-jdbc-returning-only-column-names