代码之家  ›  专栏  ›  技术社区  ›  Matko Soric

数据从卡夫卡流到Postgres,几秒钟后丢失

  •  0
  • Matko Soric  · 技术社区  · 7 年前

    我试图保存数据从本地卡夫卡实例到本地Postgres与火花流。我已经配置了所有的连接和参数,数据实际上已经到达了数据库。然而,它只存在几秒钟。之后,桌子就空了。如果我在Postgres中有数据后立即停止应用程序,数据就会持续存在,所以我想我在Spark或Kafka配置文件中遗漏了一些流参数。代码是用Java编写的,不是Scala,所以用dataset代替DataFrame。

    我试着设置 spark.driver.allowMultipleContexts

    censusRecordJavaDStream.map(e -> {
        Row row = RowFactory.create(e.getAllValues());
        return row;
    }).foreachRDD(rdd -> {
        Dataset<Row> censusDataSet = spark.createDataFrame(rdd, CensusRecord.getStructType());
    
        censusDataSet
                .write()
                .mode(SaveMode.Overwrite)
                .jdbc("jdbc:postgresql:postgres", "census.census", connectionProperties);
    });
    

    我的目标是将卡夫卡的数据流保存到Postgre。每个记录都有唯一的ID,这个ID在Kafka中用作键,因此主键或双项不应该有冲突。对于当前的测试目的,我使用大约100条记录的一小部分;完整的数据集超过300MB。

    0 回复  |  直到 7 年前