【问题标题】:Not able to read from GreenPlum using Spark Connector无法使用 Spark 连接器从 GreenPlum 读取
【发布时间】: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 省略

【问题讨论】:

    标签: apache-spark pyspark greenplum


    【解决方案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 仅支持 bigintbigserialintegerserial 类型的列。
    猜你喜欢
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2016-01-05
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多