Я пытаюсь использовать свечу зажигания greenplum, как показано ниже:
object Test4 extends App{
val spark=SparkSession.builder().master("local").getOrCreate()
import spark.implicits._
val url="jdbc:postgresql://somehost:someport/test"
val usr="greenplum"
val psw="somepassword"
val gpdf = spark.read.format("greenplum")
.option("url",url)
.option("user",usr)
.option("password",psw)
.option("dbtable","money.fact")
.load()
print(gpdf.count)
}
, но получил исключение:
Exception in thread "main" org.postgresql.util.PSQLException: ERROR: relation "public.money.fact" does not exist
位置:15
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2310)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2023)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:217)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:421)
at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:318)
at org.postgresql.jdbc.PgStatement.executeQuery(PgStatement.java:281)
at com.zaxxer.hikari.pool.ProxyStatement.executeQuery(ProxyStatement.java:111)
at com.zaxxer.hikari.pool.HikariProxyStatement.executeQuery(HikariProxyStatement.java)
at io.pivotal.greenplum.spark.jdbc.Jdbc$.resolveTable(Jdbc.scala:328)
at io.pivotal.greenplum.spark.GreenplumRelationProvider.createRelation(GreenplumRelationProvider.scala:50)
at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318)
at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167)
at greenplum.Test4$.delayedEndpoint$greenplum$Test4$1(Test.scala:17)
at greenplum.Test4$delayedInit$body.apply(Test.scala:5)
at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.App$$anonfun$main$1.apply(App.scala:76)
at scala.collection.immutable.List.foreach(List.scala:392)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
at scala.App$class.main(App.scala:76)
at greenplum.Test4$.main(Test.scala:5)
at greenplum.Test4.main(Test.scala)
Хотя я добавляю опцию: .option("dbschema","test")
к вышеуказанному коду, я Stitll получил ошибку и немного по-другому:
ERROR: relation "test.money.fact" does not exist
Я просто изменил format("greenplum")
на format("jdbc")
, тогда я получил ожидаемый результат: номер счета
затем я проверяю это в linux ОС, где находится база данных greenplum.
greenplum@greenplum:~$ psql test
psql (9.4.24)
Type "help" for help.
test=# select count(*) from money.fact;
count
---------
7032324
(1 row)
Так как мне использовать формат greeplum?