无法使用 Spark 连接器从 GreenPlum 读取
Posted
技术标签:
【中文标题】无法使用 Spark 连接器从 GreenPlum 读取【英文标题】:Not able to read from GreenPlum using Spark Connector 【发布时间】:2020-03-21 15:20:04 【问题描述】:请有人可以帮助我摆脱这个问题。
我正在尝试使用 GreenPlum-Spark 连接器从 Greenplum 读取数据。我使用了从https://network.pivotal.io/products/pivotal-gpdb/ 下载的 jar greenplum-spark_2.11-1.5.0.jar
我正在尝试从 spark-shell 和导入的 jar 访问 greenplum,如下所示
C:\spark-shell --jars C:\jars\greenplum-spark_2.11-1.6.2.jar
scala>val gscReadOptionMap = Map(
"url" -> "jdbc:postgresql://server-ip:5432/db_name",
"user" -> "user_id",
"password" -> "pwd",
"dbschema" -> "schema_name",
"dbtable" -> "table_name",
"driver" -> "org.postgresql.Driver"
)
scala>val gpdf = spark.read.format("greenplum").options(gscReadOptionMap).load()
(或)
scala>val gpdf = spark.read.format("io.pivotal.greenplum.spark.GreenplumRelationProvider").options(gscReadOptionMap).load()
导致以下错误: java.lang.IllegalArgumentException:“schema_name”中不存在''。“table_name”表 在 io.pivotal.greenplum.spark.GreenplumRelationProvider.createRelation(GreenplumRelationProvider.scala:50) 在 org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:318) 在 org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:167) ... 49 省略
【问题讨论】:
【参考方案1】:您的gscReadOptionMap
中缺少partitionColumn
选项。例如:
val gscOptionMap = Map(
"url" -> "jdbc:postgresql://gsc-dev/tutorial",
"user" -> "gpadmin",
"password" -> "changeme",
"dbschema" -> "faa",
"dbtable" -> "otp_c",
"partitionColumn" -> "airlineid"
)
更多详情请关注documentation。
【讨论】:
感谢@frankgh 的回复。但是必须提供'partitionColumn'吗?我按照您的建议尝试了“partitionColumn”->“col”,但得到了以下错误:data type of 'col' is not supported for partitioning; supported data types are bigint, bigserial, integer, and serial
但实际上该列是数字类型。这里有什么帮助吗?
partitionColumn
是必需选项。我建议你对分区列使用不同的列,不支持numeric/decimal
类型。 partitionColumn
仅支持 bigint
、bigserial
、integer
和 serial
类型的列。以上是关于无法使用 Spark 连接器从 GreenPlum 读取的主要内容,如果未能解决你的问题,请参考以下文章
Greenplum Spark Connector org.postgresql.util.PSQLException: ERROR: error when writing data to gpfdi
从Greenplum上的表中读取数据时,如何在Spark-jdbc应用程序的选项“dbtable”中指定子查询? [复制]
Greenplum-Spark-Connector java.util.NoSuchElementException: None.get